MySQL Create Table Exercises: Создание таблицы сотрудников, включающей некоторые конкретные столбцы с первичным ключом и внешний ключ с комбинацией двух или более столбцов
MySQL Создать Таблицы: Упражнение 15 с Решением
15. Напишите оператор SQL, чтобы создать таблицу сотрудников, включая столбцы employee_id, first_name, last_name, email, phone_number hire_date, job_id, зарплату, комиссию, manager_id и Department_id, и убедитесь, что столбец employee_id не содержит повторяющихся значений в то время столбцы вставки и внешнего ключа, объединенные столбцами отдела_ид и менеджера_идентификатора, содержат только те уникальные значения комбинации, какие комбинации существуют в таблице отделов.
Предположим структуру отделов таблицы ниже.
+ ----------------- + -------------- + ------ + ----- + --- ------ + ------- + | Поле | Тип | Null | Ключ | По умолчанию | Extra | + ----------------- + -------------- + ------ + ----- + --- ------ + ------- + | DEPARTMENT_ID | десятичный (4,0) | НЕТ | PRI | 0 | | | DEPARTMENT_NAME | Варчар (30) | НЕТ | | NULL | | | MANAGER_ID | десятичное число (6,0) | НЕТ | PRI | 0 | | | LOCATION_ID | десятичный (4,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,
EMAIL varchar(25) NOT NULL,
PHONE_NUMBER varchar(20) DEFAULT NULL,
HIRE_DATE date NOT NULL,
JOB_ID varchar(10) NOT NULL,
SALARY decimal(8,2) DEFAULT NULL,
COMMISSION_PCT decimal(2,2) DEFAULT NULL,
MANAGER_ID decimal(6,0) DEFAULT NULL,
DEPARTMENT_ID decimal(4,0) DEFAULT NULL,
FOREIGN KEY(DEPARTMENT_ID,MANAGER_ID)
REFERENCES departments(DEPARTMENT_ID,MANAGER_ID)
)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,03 сек)
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Предыдущий: Напишите оператор SQL для создания таблицы job_history, включающей столбцы employee_id, start_date, end_date, job_id и Department_id, и убедитесь, что столбец employee_id не содержит повторяющихся значений во время вставки, а столбец внешнего ключа job_id содержит только те значения, которые существуют в таблице заданий.
Далее: напишите оператор SQL, чтобы создать таблицу сотрудников, включая столбцы employee_id, first_name, last_name, email, phone_number hire_date, job_id, зарплату, комиссию, manager_id и Department_id, и убедитесь, что столбец employee_id не содержит повторяющихся значений в то время вставки, а столбец внешнего ключа Department_id, ссылающийся на столбец Department_id таблицы отделов, может содержать только те значения, которые существуют в таблице отделов, а другой столбец внешнего ключа job_id, на который ссылается столбец job_id таблицы заданий, может содержать только те значения, которые существуют в таблице заданий. InnoDB Engine был использован для создания таблиц.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования