кодесурса
«MySQL

Вставка MySQL в операторы Упражнения: Попробуйте вставить строки в таблицу, в которой набор столбцов содержит уникальное значение и которого нет в ссылочной таблице.

script1adsense2code
script1adsense3code

Вставка 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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code