4 Выполнение лабораторной работы
Так как в данной лабораторной работе предстоит работа с внесением и изменением данных в созданную ранее базу данных cargo_transportation, при выполнении рассматриваются необходимые для этого основные команды и их описание.
Оператор INSERT используется для вставки данных в таблицу. Может иметь несколько форматов, включая однострочный синтаксис с указанием значений для каждого столбца или использование оператора SET. Оператор также может использовать ключевое слово IGNORE для игнорирования дубликатов при вставке.
Удаление данных из таблицы можно выполнить с помощью оператора DELETE, который позволяет указать условие для удаления записей, и оператора TRUNCATE TABLE, который полностью очищает таблицу.
Обновление данных обеспечивается оператором UPDATE, который позволяет изменить значения полей в существующих записях. Можно указать условие для выбора строк, которые будут обновлены.
Оператор REPLACE аналогичен оператору INSERT, но перед вставкой новой записи он удаляет существующую запись с таким же значением уникального индекса.
Таким образом, в данной лабораторной работе необходимо вставить данные с помощью оператора INSERT, удалить данные оператором DELETE и обновить данные с помощью оператора UPDATE.
Заполнение таблиц базы данных cargo_transportation различными значениями изображено на рисунке 1.
Рисунок 1 – Заполнение таблиц базы данных
Вывод результатов заполнения таблиц отображен на рисунке 2.
Рисунок 2 – Вывод содержимого всех таблиц
Удаление данных из таблицы с помощью оператора DELETE представлено на рисунке 3.
Рисунок 3 – Удаление
данных и проверка
Изменение данных таблицы с помощью оператора UPDATE представлено на рисунке 4.
Рисунок 4 – Обновление данных таблиц и проверка
Листинг 1. Процесс Выполнения задания
sql> INSERT INTO DRIVERS (driver_id, d_surname, d_name, d_patronymic, d_experiens) VALUES -> (1, 'Иванов', 'Алексей', 'Петрович', 7), -> (2, 'Смирнова', 'Елена', 'Владимировна', 4), -> (3, 'Кузнецов', 'Дмитрий', 'Сергеевич', 10), -> (4, 'Попов', 'Михаил', 'Игоревич', 2), -> (5, 'Васильева', 'Ольга', 'Андреевна', 5); Query OK, 5 rows affected (0.02 sec) Records: 5 Duplicates: 0 Warnings: 0
mysql> INSERT INTO ROUTES VALUES -> (1,'Москва - Санкт-Петербург',700,2500.00), -> (2,'Екатеринбург - Новосибирск',900,3200.00), -> (3,'Казань - Нижний Новгород',400,1800.00), -> (4,'Ростов-на-Дону - Краснодар',300,1500.00), -> (5,'Владивосток - Хабаровск',750,2800.00); Query OK, 5 rows affected (0.01 sec) Records: 5 Duplicates: 0 Warnings: 0
mysql> INSERT INTO TRANSPORTATIONS VALUES -> (1,1,'2024-04-01','2024-04-02'), -> (2,2,'2024-04-03','2024-04-05'), -> (3,3,'2024-04-06','2024-04-06'), -> (4,4,'2024-04-07','2024-04-08'), -> (5,5,'2024-04-09','2024-04-11'); Query OK, 5 rows affected (0.01 sec) Records: 5 Duplicates: 0 Warnings: 0
mysql> INSERT INTO PAYMENT VALUES -> (1,1,3,500.00), -> (2,2,1,450.00), -> (3,3,2,300.00), -> (4,4,5,350.00), -> (5,5,4,400.00); Query OK, 5 rows affected (0.01 sec) Records: 5 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM DRIVERS; +-----------+--------------------+----------------+--------------------------+-------------+ | driver_id | d_surname | d_name | d_patronymic | d_experiens | +-----------+--------------------+----------------+--------------------------+-------------+ | 1 | Иванов | Алексей | Петрович | 7 | | 2 | Смирнова | Елена | Владимировна | 4 | | 3 | Кузнецов | Дмитрий | Сергеевич | 10 | | 4 | Попов | Михаил | Игоревич | 2 | | 5 | Васильева | Ольга | Андреевна | 5 | +-----------+--------------------+----------------+--------------------------+-------------+ 5 rows in set (0.00 sec)
mysql> SELECT * FROM ROUTES; +---------+---------------------------------------------------+-----------+---------+ | rout_id | r_name | r_mileage | r_rate | +---------+---------------------------------------------------+-----------+---------+ | 1 | Москва - Санкт-Петербург | 700 | 2500.00 | | 2 | Екатеринбург - Новосибирск | 900 | 3200.00 | | 3 | Казань - Нижний Новгород | 400 | 1800.00 | | 4 | Ростов-на-Дону - Краснодар | 300 | 1500.00 | | 5 | Владивосток - Хабаровск | 750 | 2800.00 | +---------+---------------------------------------------------+-----------+---------+ 5 rows in set (0.00 sec)
mysql> SELECT * FROM TRANSPORTATIONS; +----------+-----------+-------------+------------+ | trans_id | t_rout_id | t_departure | t_arrival | +----------+-----------+-------------+------------+ | 1 | 1 | 2024-04-01 | 2024-04-02 | | 2 | 2 | 2024-04-03 | 2024-04-05 | | 3 | 3 | 2024-04-06 | 2024-04-06 | | 4 | 4 | 2024-04-07 | 2024-04-08 | | 5 | 5 | 2024-04-09 | 2024-04-11 | +----------+-----------+-------------+------------+ 5 rows in set (0.00 sec)
mysql> SELECT * FROM PAYMENT; +--------+------------+-------------+---------+ | pay_id | p_trans_id | p_driver_id | p_bonus | +--------+------------+-------------+---------+ | 1 | 1 | 3 | 500.00 | | 2 | 2 | 1 | 450.00 | | 3 | 3 | 2 | 300.00 | | 4 | 4 | 5 | 350.00 | | 5 | 5 | 4 | 400.00 | +--------+------------+-------------+---------+ 5 rows in set (0.00 sec)
mysql> -- Удаление водителей со стажем менее 3 лет mysql> DELETE FROM DRIVERS WHERE d_experiens < 3; Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM DRIVERS; +-----------+--------------------+----------------+--------------------------+-------------+ | driver_id | d_surname | d_name | d_patronymic | d_experiens | +-----------+--------------------+----------------+--------------------------+-------------+ | 1 | Иванов | Алексей | Петрович | 7 | | 2 | Смирнова | Елена | Владимировна | 4 | | 3 | Кузнецов | Дмитрий | Сергеевич | 10 | | 5 | Васильева | Ольга | Андреевна | 5 | +-----------+--------------------+----------------+--------------------------+-------------+ 4 rows in set (0.00 sec)
mysql> -- Увеличение премии на 15% для премий менее 400.00 mysql> UPDATE PAYMENT SET p_bonus = p_bonus * 1.15 WHERE p_bonus < 400.00; Query OK, 2 rows affected (0.00 sec) Rows matched: 2 Changed: 2 Warnings: 0
mysql> -- Обновление тарифной ставки для маршрутов длиной более 500 км mysql> UPDATE ROUTES SET r_rate = r_rate * 1.1 WHERE r_mileage > 500; Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0
mysql> SELECT * FROM PAYMENT; +--------+------------+-------------+---------+ | pay_id | p_trans_id | p_driver_id | p_bonus | +--------+------------+-------------+---------+ | 1 | 1 | 3 | 500.00 | | 2 | 2 | 1 | 450.00 | | 3 | 3 | 2 | 345.00 | | 4 | 4 | 5 | 402.50 | +--------+------------+-------------+---------+ 4 rows in set (0.00 sec)
mysql> SELECT * FROM ROUTES; +---------+---------------------------------------------------+-----------+---------+ | rout_id | r_name | r_mileage | r_rate | +---------+---------------------------------------------------+-----------+---------+ | 1 | Москва - Санкт-Петербург | 700 | 2750.00 | | 2 | Екатеринбург - Новосибирск | 900 | 3520.00 | | 3 | Казань - Нижний Новгород | 400 | 1800.00 | | 4 | Ростов-на-Дону - Краснодар | 300 | 1500.00 | | 5 | Владивосток - Хабаровск | 750 | 3080.00 | +---------+---------------------------------------------------+-----------+---------+ 5 rows in set (0.00 sec) |
