Advertisement
JmihPodvalbniy

Untitled

May 29th, 2024 (edited)
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 15.43 KB | Software | 0 0
  1. Тема итоговой работы SQL: "Система учета продаж и клиентов в авто салоне."
  2. BD создавалась в SQL Server Management Studio 19
  3. --------------------------------------
  4. CREATE DATABASE Accounting_db;
  5. --------------------------------------
  6. USE Accounting_db;
  7.  
  8. -- Клиенты
  9. CREATE TABLE Customers (
  10.     customer_id INT IDENTITY(1,1) PRIMARY KEY,
  11.     first_name VARCHAR(255) NOT NULL,
  12.     last_name VARCHAR(255) NOT NULL,
  13.     phone_number VARCHAR(20),
  14.     email VARCHAR(255),
  15.     address VARCHAR(255)
  16. );
  17.  
  18. -- Автомобили
  19. CREATE TABLE Cars (
  20.     car_id INT IDENTITY(1,1) PRIMARY KEY,
  21.     make VARCHAR(255) NULL,
  22.     model VARCHAR(255) NULL,
  23.     YEAR INT,
  24.     color VARCHAR(255),
  25.     mileage INT,
  26.     price DECIMAL(10,2),
  27.     description TEXT,
  28.     STATUS VARCHAR(255)
  29. );
  30.  
  31. -- Сотрудники
  32. CREATE TABLE Employees (
  33.     employee_id INT IDENTITY(1,1) PRIMARY KEY,
  34.     first_name VARCHAR(255) NOT NULL,
  35.     last_name VARCHAR(255) NOT NULL,
  36.     ROLE VARCHAR(255),
  37.     phone_number VARCHAR(20),
  38.     email VARCHAR(255)
  39. );
  40.  
  41. -- Продажи
  42. CREATE TABLE Sales (
  43.     sale_id INT IDENTITY(1,1) PRIMARY KEY,
  44.     customer_id INT,
  45.     car_id INT,
  46.     employee_id INT,
  47.     sale_date DATE,
  48.     total_price DECIMAL(10,2),
  49.     FOREIGN KEY (customer_id) REFERENCES Customers(customer_id),
  50.     FOREIGN KEY (car_id) REFERENCES Cars(car_id),
  51.     FOREIGN KEY (employee_id) REFERENCES Employees(employee_id)
  52. );
  53.  
  54. -- Заказы
  55. CREATE TABLE Orders (
  56.     order_id INT IDENTITY(1,1) PRIMARY KEY,
  57.     customer_id INT,
  58.     car_id INT,
  59.     employee_id INT,
  60.     order_date DATE,
  61.     STATUS VARCHAR(255),
  62.     FOREIGN KEY (customer_id) REFERENCES Customers(customer_id),
  63.     FOREIGN KEY (car_id) REFERENCES Cars(car_id),
  64.     FOREIGN KEY (employee_id) REFERENCES Employees(employee_id)
  65. );
  66.  
  67. -- Просмотры автомобилей
  68. CREATE TABLE CarViews (
  69.     view_id INT IDENTITY(1,1) PRIMARY KEY,
  70.     customer_id INT,
  71.     car_id INT,
  72.     view_date DATE,
  73.     FOREIGN KEY (customer_id) REFERENCES Customers(customer_id),
  74.     FOREIGN KEY (car_id) REFERENCES Cars(car_id)
  75. );
  76. --------------------------------------
  77. USE Accounting_db;
  78.  
  79. -- таблица Customers
  80. INSERT INTO Customers (first_name, last_name, phone_number, email, address) VALUES
  81. ('Иван', 'Иванов', '89001234567', 'ivan.ivanov@gmail.com', 'ул. Ленина, 10'),
  82. ('Петр', 'Петров', '89112345678', 'petr.petrov@gmail.com', 'ул. Пушкина, 15'),
  83. ('Ольга', 'Смирнова', '89223456789', 'olga.smirnova@gmail.com', 'ул. Лермонтова, 20'),
  84. ('Алексей', 'Кузнецов', '89334567890', 'alexey.kuznetsov@gmail.com', 'ул. Толстого, 25'),
  85. ('Мария', 'Иванова', '89445678901', 'maria.ivanova@gmail.com', 'ул. Чехова, 30'),
  86. ('Дмитрий', 'Петров', '89556789012', 'dmitry.petrov@gmail.com', 'ул. Горького, 35'),
  87. ('Екатерина', 'Сидорова', '89667890123', 'ekaterina.sidorova@gmail.com', 'ул. Маяковского, 40'),
  88. ('Андрей', 'Кузнецов', '89778901234', 'andrey.kuznetsov@gmail.com', 'ул. Есенина, 45'),
  89. ('Наталья', 'Иванова', '89889012345', 'natalia.ivanova@gmail.com', 'ул. Блока, 50'),
  90. ('Сергей', 'Петров', '89990123456', 'sergey.petrov@gmail.com', 'ул. Пастернака, 55'),
  91. ('Анна', 'Сидорова', '89001234567', 'anna.sidorova@gmail.com', 'ул. Цветаевой, 60'),
  92. ('Михаил', 'Кузнецов', '89112345678', 'mikhail.kuznetsov@gmail.com', 'ул. Ахматовой, 65'),
  93. ('Елена', 'Иванова', '89223456789', 'elena.ivanova@gmail.com', 'ул. Мандельштама, 70'),
  94. ('Владимир', 'Петров', '89334567890', 'vladimir.petrov@gmail.com', 'ул. Бродского, 75'),
  95. ('Светлана', 'Сидорова', '89445678901', 'svetlana.sidorova@gmail.com', 'ул. Пастернака, 80'),
  96. ('Александр', 'Кузнецов', '89556789012', 'alexander.kuznetsov@gmail.com', 'ул. Ахматовой, 85'),
  97. ('Ирина', 'Иванова', '89667890123', 'irina.ivanova@gmail.com', 'ул. Мандельштама, 90'),
  98. ('Максим', 'Петров', '89778901234', 'maksim.petrov@gmail.com', 'ул. Бродского, 95'),
  99. ('Татьяна', 'Сидорова', '89889012345', 'tatiana.sidorova@gmail.com', 'ул. Пастернака, 100'),
  100. ('Олег', 'Кузнецов', '89990123456', 'oleg.kuznetsov@gmail.com', 'ул. Ахматовой, 105');
  101.  
  102. -- таблица Cars
  103. INSERT INTO Cars (make, model, YEAR, color, mileage, price, description, STATUS) VALUES
  104. ('Toyota', 'Camry', 2022, 'Синий', 10000, 2000000, 'Новый автомобиль', 'В наличии'),
  105. ('Honda', 'CR-V', 2021, 'Красный', 20000, 1800000, 'Хороший автомобиль с небольшим пробегом', 'В наличии'),
  106. ('Mazda', 'CX-5', 2020, 'Серый', 30000, 1600000, 'Надежный автомобиль с комфортным салоном', 'В наличии'),
  107. ('Kia', 'Sportage', 2019, 'Белый', 40000, 1400000, 'Просторная машина с множеством функций', 'В наличии'),
  108. ('Hyundai', 'Tucson', 2018, 'Черный', 50000, 1200000, 'Экономичный и практичный автомобиль', 'В наличии'),
  109. ('Nissan', 'X-Trail', 2023, 'Синий', 5000, 2200000, 'Новый автомобиль с полным приводом', 'В наличии'),
  110. ('Mitsubishi', 'Outlander', 2022, 'Серебристый', 10000, 1900000, 'Современный внедорожник с просторным салоном', 'В наличии'),
  111. ('Subaru', 'Forester', 2021, 'Зеленый', 15000, 1700000, 'Надежный автомобиль с хорошей проходимостью', 'В наличии'),
  112. ('Suzuki', 'Vitara', 2020, 'Белый', 25000, 1500000, 'Компактный и маневренный автомобиль', 'В наличии'),
  113. ('Renault', 'Duster', 2019, 'Красный', 35000, 1300000, 'Доступный и практичный внедорожник', 'В наличии'),
  114. ('Volkswagen', 'Tiguan', 2023, 'Синий', 5000, 2100000, 'Новый автомобиль с богатой комплектацией', 'В наличии'),
  115. ('Audi', 'Q5', 2022, 'Черный', 10000, 2800000, 'Премиальный автомобиль с комфортным салоном', 'В наличии'),
  116. ('BMW', 'X3', 2021, 'Белый', 15000, 2600000, 'Динамичный автомобиль с полным приводом', 'В наличии'),
  117. ('Mercedes-Benz', 'GLC', 2020, 'Серебристый', 20000, 2400000, 'Стильный автомобиль с множеством функций', 'Под заказ'),
  118. ('Volvo', 'XC60', 2019, 'Красный', 25000, 2200000, 'Безопасный и комфортный автомобиль', 'В наличии'),
  119. ('Lexus', 'NX', 2023, 'Синий', 5000, 2500000, 'Новый автомобиль с премиальным салоном', 'В наличии'),
  120. ('Infiniti', 'QX50', 2022, 'Черный', 10000, 2300000, 'Стильный автомобиль с спортивным характером', 'В наличии'),
  121. ('Porsche', 'Macan', 2021, 'Красный', 15000, 3000000, 'Спортивный автомобиль с мощным двигателем', 'Под заказ'),
  122. ('Land Rover', 'Discovery Sport', 2020, 'Белый', 20000, 2700000, 'Престижный внедорожник с полным приводом', 'Под заказ'),
  123. ('Range Rover', 'Evoque', 2019, 'Серый', 25000, 2500000, 'Стильный и комфортный автомобиль', 'В наличии');
  124.  
  125. -- Таблица Employees
  126. INSERT INTO Employees (first_name, last_name, ROLE, phone_number, email) VALUES
  127. ('Алексей', 'Сидоров', 'Менеджер по продажам', '89223456789', 'alexey.sidorov@gmail.com'),
  128. ('Мария', 'Кузнецова', 'Консультант по продажам', '89334567890', 'maria.kuznetsova@gmail.com'),
  129. ('Иван', 'Петров', 'Менеджер по работе с клиентами', '89445678901', 'ivan.petrov@gmail.com'),
  130. ('Ольга', 'Смирнова', 'Финансовый консультант', '89556789012', 'olga.smirnova@gmail.com'),
  131. ('Дмитрий', 'Иванов', 'Менеджер по маркетингу', '89667890123', 'dmitry.ivanov@gmail.com'),
  132. ('Екатерина', 'Кузнецова', 'Специалист по сервисному обслуживанию', '89778901234', 'ekaterina.kuznetsova@gmail.com'),
  133. ('Андрей', 'Петров', 'Менеджер по логистике', '89889012345', 'andrey.petrov@gmail.com'),
  134. ('Наталья', 'Смирнова', 'Менеджер по персоналу', '89990123456', 'natalia.smirnova@gmail.com'),
  135. ('Сергей', 'Иванов', 'Специалист по информационным технологиям', '89001234567', 'sergey.ivanov@gmail.com'),
  136. ('Анна', 'Кузнецова', 'Менеджер по закупкам', '89112345678', 'anna.kuznetsova@gmail.com'),
  137. ('Михаил', 'Петров', 'Менеджер по продажам', '89223456789', 'mikhail.petrov@gmail.com'),
  138. ('Елена', 'Смирнова', 'Консультант по продажам', '89334567890', 'elena.smirnova@gmail.com'),
  139. ('Владимир', 'Иванов', 'Менеджер по работе с клиентами', '89445678901', 'vladimir.ivanov@gmail.com'),
  140. ('Светлана', 'Кузнецова', 'Финансовый консультант', '89556789012', 'svetlana.kuznetsova@gmail.com'),
  141. ('Александр', 'Петров', 'Менеджер по маркетингу', '89667890123', 'alexander.petrov@gmail.com'),
  142. ('Ирина', 'Смирнова', 'Специалист по сервисному обслуживанию', '89778901234', 'irina.smirnova@gmail.com'),
  143. ('Максим', 'Иванов', 'Менеджер по логистике', '89889012345', 'maksim.ivanov@example.com'),
  144. ('Татьяна', 'Кузнецова', 'Менеджер по персоналу', '89990123456', 'tatiana.kuznetsova@gmail.com'),
  145. ('Олег', 'Петров', 'Специалист по информационным технологиям', '89001234567', 'oleg.petrov@gmail.com'),
  146. ('Мария', 'Смирнова', 'Менеджер по закупкам', '89112345678', 'maria.smirnova@gmail.com');
  147.  
  148. -- Таблица Sales
  149. INSERT INTO Sales (customer_id, car_id, employee_id, sale_date, total_price) VALUES
  150. (1, 1, 1, '2024-03-15', 2000000),
  151. (2, 2, 2, '2024-03-10', 1800000),
  152. (3, 3, 3, '2024-03-05', 1600000),
  153. (4, 4, 4, '2024-02-28', 1400000),
  154. (5, 5, 5, '2024-02-23', 1200000),
  155. (6, 6, 6, '2024-02-18', 2200000),
  156. (7, 7, 7, '2024-02-13', 1900000),
  157. (8, 8, 8, '2024-02-08', 1700000),
  158. (9, 9, 9, '2024-02-03', 1500000),
  159. (10, 10, 10, '2024-01-28', 1300000),
  160. (11, 11, 11, '2024-01-23', 2100000),
  161. (12, 12, 12, '2024-01-18', 2800000),
  162. (13, 13, 13, '2024-01-13', 2600000),
  163. (14, 14, 14, '2024-01-08', 2400000),
  164. (15, 15, 15, '2024-01-03', 2200000),
  165. (16, 16, 16, '2023-12-28', 2500000),
  166. (17, 17, 17, '2023-12-23', 2300000),
  167. (18, 18, 18, '2023-12-18', 3000000),
  168. (19, 19, 19, '2023-12-13', 2700000),
  169. (20, 20, 20, '2023-12-08', 2500000);
  170.  
  171. -- Таблица Orders
  172. INSERT INTO Orders (customer_id, car_id, employee_id, order_date, STATUS) VALUES
  173. (1, 1, 1, '2024-03-07', 'В обработке'),
  174. (2, 2, 2, '2024-03-02', 'Подтвержден'),
  175. (3, 3, 3, '2024-02-29', 'Отменен'),
  176. (4, 4, 4, '2024-02-20', 'В обработке'),
  177. (5, 5, 5, '2024-02-17', 'Подтвержден'),
  178. (6, 6, 6, '2024-02-12', 'Отменен'),
  179. (7, 7, 7, '2024-02-05', 'В обработке'),
  180. (8, 8, 8, '2024-02-01', 'Подтвержден'),
  181. (9, 9, 9, '2024-01-25', 'Отменен'),
  182. (10, 10, 10, '2024-01-21', 'В обработке'),
  183. (11, 11, 11, '2024-01-18', 'Подтвержден'),
  184. (12, 12, 12, '2024-01-12', 'Отменен'),
  185. (13, 13, 13, '2024-01-10', 'В обработке'),
  186. (14, 14, 14, '2024-01-02', 'Подтвержден'),
  187. (15, 15, 15, '2024-01-01', 'Отменен'),
  188. (16, 16, 16, '2023-12-26', 'В обработке'),
  189. (17, 17, 17, '2023-12-21', 'Подтвержден'),
  190. (18, 18, 18, '2023-12-16', 'Отменен'),
  191. (19, 19, 19, '2023-12-11', 'В обработке'),
  192. (20, 20, 20, '2023-12-06', 'Подтвержден');
  193.  
  194. -- Таблица CarViews
  195. INSERT INTO CarViews (customer_id, car_id, view_date) VALUES
  196. (1, 1, '2023-03-15'),
  197. (2, 2, '2023-03-10'),
  198. (3, 3, '2023-03-05'),
  199. (4, 4, '2023-02-28'),
  200. (5, 5, '2023-02-23'),
  201. (6, 6, '2023-02-18'),
  202. (7, 7, '2023-02-13'),
  203. (8, 8, '2023-02-08'),
  204. (9, 9, '2023-02-03'),
  205. (10, 10, '2023-01-28'),
  206. (11, 11, '2023-01-23'),
  207. (12, 12, '2023-01-18'),
  208. (13, 13, '2023-01-13'),
  209. (14, 14, '2023-01-08'),
  210. (15, 15, '2023-01-03'),
  211. (16, 16, '2022-12-28'),
  212. (17, 17, '2022-12-23'),
  213. (18, 18, '2022-12-18'),
  214. (19, 19, '2022-12-13'),
  215. (20, 20, '2022-12-08');
  216. ---------------------------------------
  217. --Приложение для базы данных, написанное на Python.
  218.  
  219. import pyodbc
  220. #Подключение к bd. После Server= 'Ввести имя сервера', после DATABASE= 'Ввести название bd.
  221. connection_to_db = pyodbc.connect(r'Driver={SQL Server};Server=LSD_ADMIN\SQLEXPRESS;DATABASE=Accounting_db;Trusted_Connection=yes;')
  222. cursor = connection_to_db.cursor()
  223. # Меню для приложения
  224. menu = '''\nМеню:
  225. 1 - Показать список авто
  226. 2 - Добавить марку и модель нового авто
  227. 3 - Редактировать марку и модель авто
  228. 4 - Удалить марку и модель авто
  229. 0 - Выход из программы
  230. '''
  231. # Создание меню
  232. while True:
  233.    print(menu)
  234.    choice = input("Выберите опцию: ")
  235.  
  236.    if choice == '1':
  237.        # Показать список автомобилей
  238.        cursor.execute('SELECT make, model FROM Cars')
  239.        rows = cursor.fetchall()
  240.        for row in rows:
  241.            make, model = row
  242.            print(f"Марка: {make}, Модель: {model}")
  243.    elif choice == '2':
  244.        # Добавление нового авто
  245.        make = input("Введите марку нового авто: ")
  246.        model = input("Введите модель нового авто: ")
  247.        cursor.execute('INSERT INTO Cars (make, model) VALUES (?, ?)', (make, model))
  248.        connection_to_db.commit()
  249.    elif choice == '3':
  250.        # Редактирование авто
  251.        car_id = input("Введите ID авто для редактирования: ")
  252.        new_make = input("Введите новую марку: ")
  253.        new_model = input("Введите новую модель: ")
  254.        cursor.execute('UPDATE Cars SET make=?, model=? WHERE car_id=?', (new_make, new_model, car_id))
  255.        connection_to_db.commit()
  256.        pass
  257.    elif choice == '4':
  258.        # Удалить марку и модель авто
  259.        car_id = input("Введите ID авто для удаления: ")
  260.        cursor.execute('UPDATE Cars SET make = NULL, model = NULL WHERE car_id = ?', (car_id,))
  261.        connection_to_db.commit()
  262.        pass
  263.    elif choice == '0':
  264.        break
  265.    else:
  266.        print("Неверный выбор.")
  267.  
  268. connection_to_db.close()  # Закрываем соединение с базой данных
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement