Вставка MySQL в операторы Упражнения: Попробуйте вставить строки в таблицу, в которой набор столбцов содержит уникальное значение и которого нет в ссылочной таблице.
Вставка MySQL в Оператор: Упражнение 13 с Решением
13. Напишите оператор SQL для вставки строк в таблицы сотрудников, в которых набор столбцов департаментов_данных и менеджеров_данных содержит уникальное значение и что объединенные значения должны существовать в отделах таблиц.
Образец таблицы отделов. СОЗДАЙТЕ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ ОТДЕЛЕНИЯ ( DEPARTMENT_ID integer NOT NULL UNIQUE, DEPARTMENT_NAME varchar (30) NOT NULL, MANAGER_ID integer DEFAULT NULL, LOCATION_ID integer DEFAULT NULL, ПЕРВИЧНЫЙ КЛЮЧ (DEPARTMENT_ID, MANAGER_ID) ) ДВИГАТЕЛЬ = InnoDB; ВСТАВИТЬ В ЦЕННОСТИ отделов (60, «ПРОДАЖИ», 201,89); ВСТАВИТЬ В ЦЕННОСТИ отделов (61, «СЧЕТА», 201,89); ВСТАВИТЬ В ЦЕННОСТИ отделов (80, «ФИНАНСЫ», 211,90); mysql> SELECT * FROM отдела; + --------------- + ----------------- + ------------ + - ----------- + | DEPARTMENT_ID | DEPARTMENT_NAME | MANAGER_ID | LOCATION_ID | + --------------- + ----------------- + ------------ + - ----------- + | 60 | ПРОДАЖА | 201 | 89 | | 61 | СЧЕТА | 201 | 89 | | 80 | ФИНАНСЫ | 211 | 90 | + --------------- + ----------------- + ------------ + - ----------- + 3 ряда в наборе (0,00 сек) Образец таблицы сотрудников. СОЗДАЙТЕ ТАБЛИЦУ ЕСЛИ НЕ СУЩЕСТВУЮТ сотрудники ( EMPLOYEE_ID integer NOT NULL ПЕРВИЧНЫЙ КЛЮЧ, FIRST_NAME varchar (20) DEFAULT NULL, LAST_NAME varchar (25) NOT NULL, JOB_ID varchar (10) NOT NULL, SALARY decimal (8,2) DEFAULT NULL, MANAGER_ID integer DEFAULT NULL, DEPARTMENT_ID целое число DEFAULT NULL, FOREIGN KEY (DEPARTMENT_ID, MANAGER_ID) ОТЗЫВЫ отделов (DEPARTMENT_ID, MANAGER_ID) ) ДВИГАТЕЛЬ = InnoDB;
Теперь вставьте строки в сотрудников.
Пример решения:
INSERT INTO employees VALUES(510,'Alex','Hanes','CLERK',18000,201,60);
INSERT INTO employees VALUES(511,'Kim','Leon','CLERK',18000,211,80);
Позвольте выполнить вышеупомянутый код в командной строке MySQL 5.6.
Вот структура таблицы:
mysql> SELECT * FROM сотрудников; + ------------- + ------------ + ----------- + -------- + - --------- + ------------ + --------------- + | EMPLOYEE_ID | FIRST_NAME | LAST_NAME | JOB_ID | Заработная плата | MANAGER_ID | DEPARTMENT_ID | + ------------- + ------------ + ----------- + -------- + - --------- + ------------ + --------------- + | 510 | Алекс | Ханес | КЛЕРК | 18000,00 | 201 | 60 | | 511 | Ким | Леон | КЛЕРК | 18000,00 | 211 | 80 | + ------------- + ------------ + ----------- + -------- + - --------- + ------------ + --------------- + 2 ряда в наборе (0,00 сек)
Значение по отношению к комбинации Department_id и manager_id (60,201) и (80,211) являются уникальными в таблице Departmentis (родительской), поэтому проблем с вставкой строк в сотрудников дочерней таблицы не возникает.
Теперь вставьте еще одну строку в таблицу сотрудников.
INSERT INTO employees VALUES(512,'Kim','Leon','CLERK',18000,80,211);
Позвольте выполнить вышеупомянутый код в командной строке MySQL 5.6.
mysql> INSERT INTO INVALES сотрудников (512, «Kim», «Leon», «CLERK», 18000, 8021); ОШИБКА 1452 (23000): Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено (`hrr``employees`, CONSTRAINT` employee_ibfk_1` FOREIGN KEY (`D EPARTMENT_ID`, `MANAGER_ID`) ССЫЛКИ« отделы »(` DEPARTMENT_ID`, `MANAGER_ID`))
Здесь, в приведенном выше примере, значение для комбинации Department_id и manager_id (211,80) не совпадает с одной и той же комбинацией в таблице отделов (родительской таблицы), и поэтому сотрудники дочерней таблицы не могут содержать комбинацию значений, включая Department_id и manager_id. как указано. Здесь отношение первичный ключ - внешний ключ нарушается и показывает вышеуказанное сообщение.
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Предыдущий: Написать оператор SQL для вставки строк в таблицу job_history, в которой один столбец job_id содержит те значения, которые существуют в столбце job_id таблицы заданий.
Далее: напишите оператор SQL для вставки строк в таблицы сотрудников, в которых набор столбцов департаментов_данных и менеджеров_данных содержит уникальное значение и что объединенные значения должны существовать в отделах таблиц.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования