кодесурса
«MySQL

Вставка MySQL в оператор Упражнения: вставьте строки в таблицу job_history, в которой один столбец job_id содержит те значения, которые существуют в столбце job_id таблицы jobs

script1adsense2code
script1adsense3code

Вставка MySQL в Оператор: Упражнение 12 с Решением

12. Напишите инструкцию SQL для вставки строк в таблицу job_history, в которой один столбец job_id содержит те значения, которые существуют в столбце job_id таблицы jobs.

 Примеры табличных заданий.
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');
+ -------- + ----------- + ------------ + ------------ +
| JOB_ID | JOB_TITLE | MIN_SALARY | MAX_SALARY |
+ -------- + ----------- + ------------ + ------------ +
| 1001 | ОФИЦЕР | 8000 | 20000 |
| 1002 | КЛЕРК | 8000 | 20000 |
+ -------- + ----------- + ------------ + ------------ +
2 ряда в наборе (0,00 сек)
Образец таблицы job_history;
CREATE TABLE job_history ( 
EMPLOYEE_ID integer NOT NULL ПЕРВИЧНЫЙ КЛЮЧ, 
JOB_ID integer NOT NULL, 
DEPARTMENT_ID целое число DEFAULT NULL, 
FOREIGN KEY (job_id) ССЫЛКИ job (job_id)
) ДВИГАТЕЛЬ = InnoDB;

Пример решения:

INSERT INTO job_history VALUES(501,1001,60);

Позвольте выполнить вышеупомянутый код в командной строке MySQL 5.6.

Вот структура таблицы:

 mysql> SELECT * FROM job_history;
+ ------------- + -------- + --------------- +
| EMPLOYEE_ID | JOB_ID | DEPARTMENT_ID |
+ ------------- + -------- + --------------- +
| 501 | 1001 | 60 |
+ ------------- + -------- + --------------- +
1 ряд в наборе (0,00 сек)

Значение против job_id - 1001, которое существует в столбце job_id таблицы заданий, поэтому никаких проблем не возникает.

Теперь вставьте еще одну строку в таблицу job_history.

INSERT INTO job_history VALUES(502,1003,80);

Позвольте выполнить вышеупомянутый код в командной строке MySQL 5.6.

 mysql> INSERT INTO job_history VALUES (502,1003,80);
ОШИБКА 1452 (23000): Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (`hrr`` job_history`, CONSTRAINT `job_history_ibfk_1`
 (`JOB_ID`) ССЫЛКИ` jobs` (`JOB_ID`))

Здесь выше, значение против job_id равно 1003, которого нет в столбце job_id таблицы jobs (родительской таблицы), и поэтому дочерняя таблица job_history не может содержать значение job_id, как указано. Здесь отношение первичный ключ - внешний ключ нарушает и показывает вышеуказанное сообщение.

Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.

Предыдущий: Напишите оператор SQL для вставки записей в таблицу стран, чтобы столбец country_id не содержал повторяющихся данных, и он будет автоматически увеличен, а столбец country_name будет заполнен 'N / A', если значение не назначено для этот столбец.
Далее: напишите оператор SQL для вставки строк в таблицы сотрудников, в которых набор столбцов департаментов_данных и менеджеров содержит уникальные значения и что объединенные значения должны существовать в отделах таблиц

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code