кодесурса
«MySQL

Вставка MySQL в Упражнения по утверждению: Вставьте строки в таблицы сотрудников, в которых набор столбцов Department_id и Manager_id содержит уникальное значение и что объединенные значения должны существовать в таблицах отделов.

script1adsense2code
script1adsense3code

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


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code