кодесурса
«MySQL

Упражнения оператора MySQL Alter Table: добавьте ограничение внешнего ключа с именем fk_job_id в столбец job_id таблицы job_history, ссылающейся на первичный ключ job_id таблицы jobs

script1adsense2code
script1adsense3code

MySQL Alter Table Statement: Упражнение 12 с решением

Напишите оператор SQL, чтобы добавить ограничение внешнего ключа с именем fk_job_id в столбец job_id таблицы job_history, ссылающейся на первичный ключ job_id таблицы jobs.

Вот структура таблицы jobs и job_history.

 mysql> SHOW COLUMNS FORM заданий;
+ ------------ + -------------- + ------ + ----- + -------- - + ------- +
| Поле | Тип | Null | Ключ | По умолчанию | Extra |
+ ------------ + -------------- + ------ + ----- + -------- - + ------- +
| JOB_ID | int (11) | НЕТ | PRI | NULL | |
| JOB_TITLE | Варчар (35) | НЕТ | | NULL | |
| MIN_SALARY | десятичное число (6,0) | ДА | | NULL | |
| MAX_SALARY | десятичное число (6,0) | ДА | | NULL | |
+ ------------ + -------------- + ------ + ----- + -------- - + ------- +
mysql> ПОКАЗАТЬ КОЛОННЫ ИЗ job_history;
+ --------------- + --------- + ------ + ----- + --------- + ------- +
| Поле | Тип | Null | Ключ | По умолчанию | Extra |
+ --------------- + --------- + ------ + ----- + --------- + ------- +
| EMPLOYEE_ID | int (11) | НЕТ | | NULL | |
| START_DATE | дата | ДА | | NULL | |
| HIRE_DATE | дата | ДА | | NULL | |
| JOB_ID | int (11) | НЕТ | | NULL | |
| DEPARTMENT_ID | int (11) | НЕТ | | NULL | |
+ --------------- + --------- + ------ + ----- + --------- + ------- +

Код:

ALTER TABLE job_history 
ADD CONSTRAINT fk_job_id 
FOREIGN KEY (job_id) 
REFERENCES jobs(job_id) 
ON UPDATE RESTRICT 
ON DELETE CASCADE;

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

Теперь посмотрите структуру расположения столов после изменения.

 mysql> ПОКАЗАТЬ КОЛОННЫ ИЗ job_history;
+ --------------- + --------- + ------ + ----- + --------- + ------- +
| Поле | Тип | Null | Ключ | По умолчанию | Extra |
+ --------------- + --------- + ------ + ----- + --------- + ------- +
| EMPLOYEE_ID | int (11) | НЕТ | | NULL | |
| START_DATE | дата | ДА | | NULL | |
| HIRE_DATE | дата | ДА | | NULL | |
| JOB_ID | int (11) | НЕТ | MUL | NULL | |
| DEPARTMENT_ID | int (11) | НЕТ | | NULL | |
+ --------------- + --------- + ------ + ----- + --------- + ------- +

Теперь посмотрите созданный индексный файл.

 mysql> SHOW INDEX FROM job_history;
+ ------------- + ------------ + ----------- + ---------- ---- + ------------- + ----------- + ------------- + ----- ----- + -------- + ------ + ------------ + --------- +
| Таблица | Non_unique | Key_name | Seq_in_index | Имя столбца | Сопоставление | Кардинальность | Sub_part | Упаковано | Null | Index_type | Комментарий |
+ ------------- + ------------ + ----------- + ---------- ---- + ------------- + ----------- + ------------- + ----- ----- + -------- + ------ + ------------ + --------- +
| job_history | 1 | fk_job_id | 1 | JOB_ID | A | NULL | NULL | NULL | | BTREE | |
+ ------------- + ------------ + ----------- + ---------- ---- + ------------- + ----------- + ------------- + ----- ----- + -------- + ------ + ------------ + --------- +

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

Предыдущий: написать оператор SQL для добавления внешнего ключа в столбец job_id таблицы job_history, ссылающейся на первичный ключ job_id таблицы jobs.
Далее: напишите инструкцию SQL для удаления существующего внешнего ключа fk_job_id из таблицы job_history в столбце job_id, который ссылается на job_id таблицы заданий.

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

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


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code