кодесурса
«MySQL

MySQL Create Table Exercises: Создайте таблицу сотрудников, включая столбцы, и убедитесь, что столбец employee_id содержит только уникальное значение, и установите некоторые внешние ключи, ссылающиеся на другую таблицу. InnoDB Engine был использован для создания таблиц

script1adsense2code
script1adsense3code

MySQL Создать Таблицы: Упражнение 16 с Решением

16. Напишите оператор 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 был использован для создания таблиц.

«Ограничение внешнего ключа не требуется просто для объединения двух таблиц. Для механизмов хранения, отличных от InnoDB, при определении столбца можно использовать предложение REFERENCES tbl_name (col_name), которое не имеет фактического эффекта и служит только в качестве памятки или прокомментируйте, что столбец, который вы сейчас определяете, предназначен для ссылки на столбец в другой таблице. " - Ссылка на dev.mysql.com

Предположим, что в структуре двух таблиц отделов и рабочих мест.

 + ----------------- + -------------- + ------ + ----- + --- ------ + ------- +
| Поле | Тип | Null | Ключ | По умолчанию | Extra |
+ ----------------- + -------------- + ------ + ----- + --- ------ + ------- +
| DEPARTMENT_ID | десятичный (4,0) | НЕТ | PRI | 0 | |
| DEPARTMENT_NAME | Варчар (30) | НЕТ | | NULL | |
| MANAGER_ID | десятичное число (6,0) | ДА | | NULL | |
| LOCATION_ID | десятичный (4,0) | ДА | | NULL | |
+ ----------------- + -------------- + ------ + ----- + --- ------ + ------- +
+ ------------ + -------------- + ------ + ----- + -------- - + ------- +
| Поле | Тип | Null | Ключ | По умолчанию | Extra |
+ ------------ + -------------- + ------ + ----- + -------- - + ------- +
| JOB_ID | Варчар (10) | НЕТ | PRI | | |
| JOB_TITLE | Варчар (35) | НЕТ | | NULL | |
| MIN_SALARY | десятичное число (6,0) | ДА | | NULL | |
| 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, 
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) 
REFERENCES  departments(DEPARTMENT_ID),
FOREIGN KEY(JOB_ID) 
REFERENCES  jobs(JOB_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,01 с)

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

Предыдущий: Напишите оператор SQL, чтобы создать таблицу сотрудников, включая столбцы employee_id, first_name, last_name, email, phone_number hire_date, job_id, оклад, комиссию, manager_id и Department_id, и убедитесь, что столбец employee_id не содержит повторяющихся значений в то время столбцы вставки и внешнего ключа, объединенные столбцами отдела_ид и менеджера_идентификатора, содержат только те уникальные значения комбинации, какие комбинации существуют в таблице отделов.
Далее: напишите оператор SQL для создания таблицы сотрудников, включая столбцы employee_id, first_name, last_name, job_id, salary, и убедитесь, что столбец employee_id не содержит повторяющихся значений во время вставки, а столбец внешнего ключа job_id, на который есть ссылки по столбцу job_id таблицы jobs, может содержать только те значения, которые существуют в таблице jobs. InnoDB Engine был использован для создания таблиц. Особенность этого утверждения заключается в том, что действие ON UPDATE CASCADE позволяет выполнять обновление между таблицами, а действие ON DELETE RESTRICT отклоняет удаление. Действие по умолчанию - УДАЛИТЬ ОГРАНИЧЕНИЕ.

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

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


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code