Вставка MySQL в оператор Упражнения: вставьте строки в таблицу job_history, в которой один столбец job_id содержит те значения, которые существуют в столбце job_id таблицы jobs
Вставка 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 программирования