MySQL Create Table Exercises: Создайте таблицу сотрудников и убедитесь, что столбец employee_id должен быть уникальным, и установите внешние ключи, ссылающиеся на другую таблицу, с помощью действий ON DELETE SET NULL и ON UPDATE SET NULL
MySQL Создать Таблицы: Упражнение 19 с Решением
19. Напишите оператор SQL для создания таблицы сотрудников, включая столбцы employee_id, first_name, last_name, job_id, salary, и убедитесь, что столбец employee_id не содержит повторяющихся значений во время вставки, а столбец внешнего ключа job_id, на который есть ссылки по столбцу job_id таблицы jobs, может содержать только те значения, которые существуют в таблице jobs. InnoDB Engine был использован для создания таблиц. Особенность оператора заключается в том, что действие ON DELETE SET NULL устанавливает значения столбца внешнего ключа в дочерней таблице (employee) в NULL при удалении записи в родительской таблице (jobs) с условием, что внешний ключ столбец в дочерней таблице должен принимать значения NULL, а действие ON UPDATE SET NULL сбрасывает значения в строках в дочерней таблице (employee) в значения NULL при обновлении строк в родительской таблице (jobs).
Предположим, что структура двух табличных заданий и InnoDB Engine были использованы для создания табличных заданий.
CREATE TABLE ЕСЛИ НЕ СУЩЕСТВУЕТ РАБОТ ( JOB_ID integer NOT NULL УНИКАЛЬНЫЙ ПЕРВИЧНЫЙ КЛЮЧ, JOB_TITLE varchar (35) NOT NULL DEFAULT '', MIN_SALARY десятичное число (6,0) ПО УМОЛЧАНИЮ 8000, MAX_SALARY десятичное число (6,0) DEFAULT NULL ) ДВИГАТЕЛЬ = InnoDB; + ------------ + -------------- + ------ + ----- + -------- - + ------- + | Поле | Тип | Null | Ключ | По умолчанию | Extra | + ------------ + -------------- + ------ + ----- + -------- - + ------- + | JOB_ID | int (11) | НЕТ | PRI | NULL | | | JOB_TITLE | Варчар (35) | НЕТ | | | | | MIN_SALARY | десятичное число (6,0) | ДА | | 8000 | | | MAX_SALARY | десятичное число (6,0) | ДА | | NULL | | + ------------ + -------------- + ------ + ----- + -------- - + ------- +
Пример решения:
CREATE TABLE IF NOT EXISTS employees (
EMPLOYEE_ID decimal(6,0) NOT NULL PRIMARY KEY,
FIRST_NAME varchar(20) DEFAULT NULL,
LAST_NAME varchar(25) NOT NULL,
JOB_ID INTEGER,
SALARY decimal(8,2) DEFAULT NULL,
FOREIGN KEY(JOB_ID)
REFERENCES jobs(JOB_ID)
ON DELETE SET NULL
ON UPDATE SET NULL
)ENGINE=InnoDB;
Позвольте выполнить вышеупомянутый код в командной строке MySQL 5.6
Вот структура таблицы:
mysql> сотрудники DESC; + ---------------- + -------------- + ------ + ----- + ---- ----- + ------- + | Поле | Тип | Null | Ключ | По умолчанию | Extra | + ---------------- + -------------- + ------ + ----- + ---- ----- + ------- + | EMPLOYEE_ID | десятичное число (6,0) | НЕТ | PRI | NULL | | | FIRST_NAME | Варчар (20) | ДА | | NULL | | | LAST_NAME | Варчар (25) | НЕТ | | NULL | | | Электронная почта | Варчар (25) | НЕТ | | NULL | | | PHONE_NUMBER | Варчар (20) | ДА | | NULL | | | HIRE_DATE | дата | НЕТ | | NULL | | | JOB_ID | Варчар (10) | НЕТ | | NULL | | | Заработная плата | десятичное число (8,2) | ДА | | NULL | | | COMMISSION_PCT | десятичный (2,2) | ДА | | NULL | | | MANAGER_ID | десятичное число (6,0) | ДА | | NULL | | | DEPARTMENT_ID | десятичный (4,0) | ДА | MUL | NULL | | + ---------------- + -------------- + ------ + ----- + ---- ----- + ------- + 11 рядов в наборе (0,01 с)
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Предыдущий: Напишите оператор SQL для создания табличных упражнений: создайте таблицу сотрудников и убедитесь, что столбец employee_id должен быть уникальным, и установите внешние ключи, ссылающиеся на другую таблицу, с помощью действий ON DELETE CASCADE и ON UPDATE RESTRICT, чтобы отклонить любые обновления.
Далее: напишите оператор SQL для создания таблицы Упражнения: создайте таблицу сотрудников и убедитесь, что столбец employee_id должен быть уникальным, и установите внешние ключи, ссылающиеся на другую таблицу, с помощью ON DELETE NO ACTION и действий ON UPDATE NO ACTION, которые будут отклонять удаление и любые обновления
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования