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