Advertisement
JmihPodvalbniy

Untitled

May 29th, 2024 (edited)
84
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', '[email protected]', 'ул. Ленина, 10'),
  82. ('Петр', 'Петров', '89112345678', '[email protected]', 'ул. Пушкина, 15'),
  83. ('Ольга', 'Смирнова', '89223456789', '[email protected]', 'ул. Лермонтова, 20'),
  84. ('Алексей', 'Кузнецов', '89334567890', '[email protected]', 'ул. Толстого, 25'),
  85. ('Мария', 'Иванова', '89445678901', '[email protected]', 'ул. Чехова, 30'),
  86. ('Дмитрий', 'Петров', '89556789012', '[email protected]', 'ул. Горького, 35'),
  87. ('Екатерина', 'Сидорова', '89667890123', '[email protected]', 'ул. Маяковского, 40'),
  88. ('Андрей', 'Кузнецов', '89778901234', '[email protected]', 'ул. Есенина, 45'),
  89. ('Наталья', 'Иванова', '89889012345', '[email protected]', 'ул. Блока, 50'),
  90. ('Сергей', 'Петров', '89990123456', '[email protected]', 'ул. Пастернака, 55'),
  91. ('Анна', 'Сидорова', '89001234567', '[email protected]', 'ул. Цветаевой, 60'),
  92. ('Михаил', 'Кузнецов', '89112345678', '[email protected]', 'ул. Ахматовой, 65'),
  93. ('Елена', 'Иванова', '89223456789', '[email protected]', 'ул. Мандельштама, 70'),
  94. ('Владимир', 'Петров', '89334567890', '[email protected]', 'ул. Бродского, 75'),
  95. ('Светлана', 'Сидорова', '89445678901', '[email protected]', 'ул. Пастернака, 80'),
  96. ('Александр', 'Кузнецов', '89556789012', '[email protected]', 'ул. Ахматовой, 85'),
  97. ('Ирина', 'Иванова', '89667890123', '[email protected]', 'ул. Мандельштама, 90'),
  98. ('Максим', 'Петров', '89778901234', '[email protected]', 'ул. Бродского, 95'),
  99. ('Татьяна', 'Сидорова', '89889012345', '[email protected]', 'ул. Пастернака, 100'),
  100. ('Олег', 'Кузнецов', '89990123456', '[email protected]', 'ул. Ахматовой, 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', '[email protected]'),
  128. ('Мария', 'Кузнецова', 'Консультант по продажам', '89334567890', '[email protected]'),
  129. ('Иван', 'Петров', 'Менеджер по работе с клиентами', '89445678901', '[email protected]'),
  130. ('Ольга', 'Смирнова', 'Финансовый консультант', '89556789012', '[email protected]'),
  131. ('Дмитрий', 'Иванов', 'Менеджер по маркетингу', '89667890123', '[email protected]'),
  132. ('Екатерина', 'Кузнецова', 'Специалист по сервисному обслуживанию', '89778901234', '[email protected]'),
  133. ('Андрей', 'Петров', 'Менеджер по логистике', '89889012345', '[email protected]'),
  134. ('Наталья', 'Смирнова', 'Менеджер по персоналу', '89990123456', '[email protected]'),
  135. ('Сергей', 'Иванов', 'Специалист по информационным технологиям', '89001234567', '[email protected]'),
  136. ('Анна', 'Кузнецова', 'Менеджер по закупкам', '89112345678', '[email protected]'),
  137. ('Михаил', 'Петров', 'Менеджер по продажам', '89223456789', '[email protected]'),
  138. ('Елена', 'Смирнова', 'Консультант по продажам', '89334567890', '[email protected]'),
  139. ('Владимир', 'Иванов', 'Менеджер по работе с клиентами', '89445678901', '[email protected]'),
  140. ('Светлана', 'Кузнецова', 'Финансовый консультант', '89556789012', '[email protected]'),
  141. ('Александр', 'Петров', 'Менеджер по маркетингу', '89667890123', '[email protected]'),
  142. ('Ирина', 'Смирнова', 'Специалист по сервисному обслуживанию', '89778901234', '[email protected]'),
  143. ('Максим', 'Иванов', 'Менеджер по логистике', '89889012345', '[email protected]'),
  144. ('Татьяна', 'Кузнецова', 'Менеджер по персоналу', '89990123456', '[email protected]'),
  145. ('Олег', 'Петров', 'Специалист по информационным технологиям', '89001234567', '[email protected]'),
  146. ('Мария', 'Смирнова', 'Менеджер по закупкам', '89112345678', '[email protected]');
  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