Вставка MySQL в Упражнения по утверждению: Вставьте строки в таблицы сотрудников, в которых набор столбцов Department_id и Manager_id содержит уникальное значение и что объединенные значения должны существовать в таблицах отделов.
MySQL вставить в оператор: Упражнение 14 с решением
14. Напишите оператор 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) ) ДВИГАТЕЛЬ = InnoDB; ВСТАВИТЬ В ЦЕННОСТИ отделов (60, «ПРОДАЖИ», 201,89); ВСТАВИТЬ В ЦЕННОСТИ отделов (61, «СЧЕТА», 201,89); mysql> SELECT * FROM отдела; + --------------- + ----------------- + ------------ + - ----------- + | DEPARTMENT_ID | DEPARTMENT_NAME | MANAGER_ID | LOCATION_ID | + --------------- + ----------------- + ------------ + - ----------- + | 60 | ПРОДАЖА | 201 | 89 | | 61 | СЧЕТА | 201 | 89 | + --------------- + ----------------- + ------------ + - ----------- + 2 ряда в наборе (0,00 сек) Примеры табличных заданий. CREATE TABLE ЕСЛИ НЕ СУЩЕСТВУЕТ РАБОТ ( JOB_ID integer NOT NULL УНИКАЛЬНЫЙ ПЕРВИЧНЫЙ КЛЮЧ, JOB_TITLE varchar (35) NOT NULL DEFAULT '', MIN_SALARY десятичное число (6,0) ПО УМОЛЧАНИЮ 8000, MAX_SALARY десятичное число (6,0) DEFAULT 20000 ) ДВИГАТЕЛЬ = InnoDB; INSERT INTO jobs (JOB_ID, JOB_TITLE) VALUES (1001, 'OFFICER'); INSERT INTO jobs (JOB_ID, JOB_TITLE) VALUES (1002, 'CLERK'); mysql> SELECT * FROM jobs; + -------- + ----------- + ------------ + ------------ + | JOB_ID | JOB_TITLE | MIN_SALARY | MAX_SALARY | + -------- + ----------- + ------------ + ------------ + | 1001 | ОФИЦЕР | 8000 | 20000 | | 1002 | КЛЕРК | 8000 | 20000 | + -------- + ----------- + ------------ + ------------ + 2 ряда в наборе (0,00 сек) Образец таблицы сотрудников. СОЗДАЙТЕ ТАБЛИЦУ ЕСЛИ НЕ СУЩЕСТВУЮТ сотрудники ( EMPLOYEE_ID integer NOT NULL ПЕРВИЧНЫЙ КЛЮЧ, FIRST_NAME varchar (20) DEFAULT NULL, LAST_NAME varchar (25) NOT NULL, DEPARTMENT_ID целое число DEFAULT NULL, FOREIGN KEY (DEPARTMENT_ID) ОТЗЫВЫ отделов (DEPARTMENT_ID), JOB_ID integer NOT NULL, FOREIGN KEY (JOB_ID) ССЫЛКИ вакансии (JOB_ID), SALARY decimal (8,2) ПО УМОЛЧАНИЮ НУЛЬ ) ДВИГАТЕЛЬ = InnoDB;
Теперь вставьте строки в таблицу сотрудников.
Пример решения:
INSERT INTO employees VALUES(510,'Alex','Hanes',60,1001,18000);
Позвольте выполнить вышеупомянутый код в командной строке MySQL 5.6.
Вот структура таблицы:
mysql> SELECT * FROM сотрудников; + ------------- + ------------ + ----------- + ---------- ----- + -------- + ---------- + | EMPLOYEE_ID | FIRST_NAME | LAST_NAME | DEPARTMENT_ID | JOB_ID | Заработная плата | + ------------- + ------------ + ----------- + ---------- ----- + -------- + ---------- + | 510 | Алекс | Ханес | 60 | 1001 | 18000,00 | + ------------- + ------------ + ----------- + ---------- ----- + -------- + ---------- + 1 ряд в наборе (0,00 сек)
Здесь в приведенном выше операторе вставки дочерние столбцы Department_id и job_id дочерних таблиц сотрудников успешно ссылаются на столбцы департаменты_данных и заданий департаментов и заданий родительских таблиц соответственно, поэтому проблем с вставкой не возникло.
Теперь вставьте еще одну строку в таблицу сотрудников.
INSERT INTO employees VALUES(511,'Tom','Elan',60,1003,22000);
Позвольте выполнить вышеупомянутый код в командной строке MySQL 5.6.
ОШИБКА 1452 (23000): Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (`hrr``employees`, CONSTRAINT` employee_ibfk_2` FORE OB_ID`) ССЫЛКИ `jobs` (` JOB_ID`))
Здесь в приведенном выше операторе вставки показано, что в дочерних столбцах отделы_данных и заданий_данных сотрудников дочерней таблицы отделы_департамента успешно ссылаются с указанием отдела_департамента родительской таблицы, но столбец задания_представления не успешно ссылается на задание_для заданий родительской таблицы, поэтому проблема Возникшая вставка отображала сообщение об ошибке.
Теперь вставьте еще одну строку в таблицу сотрудников.
INSERT INTO employees VALUES(511,'Tom','Elan',80,1001,22000);
ОШИБКА 1452 (23000): Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено (`hrr``employees`, CONSTRAINT` employee_ibfk_2` FOREIGN KEY (`J OB_ID`) ССЫЛКИ `jobs` (` JOB_ID`))
Здесь в приведенном выше операторе вставки показано, что в дочерних столбцах отделы_данных и задание_данных сотрудников дочерней таблицы задание job_id успешно ссылается с заданием job_id заданий родительской таблицы, но столбец отдела_идеально не ссылается на отдел_идента отделов родительской таблицы, поэтому проблема возникли до вставки и отобразили сообщение об ошибке.
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Предыдущий: Напишите оператор SQL для вставки строк в таблицы сотрудников, в которых набор столбцов отдела_данных и менеджера_ид содержит уникальное значение и что объединенные значения должны существовать в отделах таблицы.
Далее: MySQL Update Table
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования