PostgreSQL Create Table: создайте таблицу, чтобы один из столбцов содержал уникальные значения, а два других столбца ссылаются на столбцы еще двух таблиц
15. Напишите SQL-оператор для создания таблицы сотрудников, включая столбцы employee_id, first_name, last_name, email, phone_number hire_date, job_id, salary, Commission, manager_id и Department_id, и убедитесь, что в столбце employee_id нет повторяющихся значений в время вставки, а столбец внешнего ключа отдел_идентификатора, ссылающийся на столбец отдела_для таблицы отделов, может содержать только те значения, которые существуют в таблице отделов, а другой столбец внешнего ключа job_id, на который ссылается столбец job_id таблицы заданий, может содержать только те значения, которые существуют в таблице заданий.
Предположим, что в структуре двух таблиц отделов и рабочих мест.
Indexes:
"departments_pkey" PRIMARY KEY, btree (department_id)
Indexes:
"jobs_pkey" PRIMARY KEY, btree (job_id)
Пример решения:
Код:
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)
);
Выход:
postgres = # СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ сотрудников ( postgres (# EMPLOYEE_ID decimal (6,0) NOT NULL ПЕРВИЧНЫЙ КЛЮЧ, postgres (# FIRST_NAME varchar (20) DEFAULT NULL, postgres (# LAST_NAME varchar (25) NOT NULL, postgres (# EMAIL varchar (25) НЕ NULL, postgres (# PHONE_NUMBER varchar (20) DEFAULT NULL, postgres (# HIRE_DATE дата NOT NULL, postgres (# JOB_ID varchar (10) NOT NULL, postgres (# SALARY decimal (8,2) DEFAULT NULL, postgres (# COMMISSION_PCT decimal (2,2) DEFAULT NULL, postgres (# MANAGER_ID decimal (6,0) DEFAULT NULL, postgres (# DEPARTMENT_ID decimal (4,0) DEFAULT NULL, postgres (# FOREIGN KEY (DEPARTMENT_ID) postgres (# ССЫЛКИ отделов (DEPARTMENT_ID), postgres (# FOREIGN KEY (JOB_ID) postgres (# ССЫЛКИ вакансии (JOB_ID) postgres (#); СОЗДАТЬ СТОЛ
Вот команда, чтобы увидеть структуру созданной таблицы:
postgres=# \d employees
Table "public.employees"
Column | Type | Modifiers
----------------+-----------------------+---------------------------------
employee_id | numeric(6,0) | not null
first_name | character varying(20) | default NULL::character varying
last_name | character varying(25) | not null
email | character varying(25) | not null
phone_number | character varying(20) | default NULL::character varying
hire_date | date | not null
job_id | character varying(10) | not null
salary | numeric(8,2) | default NULL::numeric
commission_pct | numeric(2,2) | default NULL::numeric
manager_id | numeric(6,0) | default NULL::numeric
department_id | numeric(4,0) | default NULL::numeric
Indexes:
"employees_pkey" PRIMARY KEY, btree (employee_id)
Foreign-key constraints:
"employees_department_id_fkey" FOREIGN KEY (department_id) REFERENCES departments(department_id)
"employees_job_id_fkey" FOREIGN KEY (job_id) REFERENCES jobs(job_id)
Есть другой способ решить это решение? Внесите свой код (и комментарии) через 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 таблицы заданий, может содержать только те значения, которые существуют в таблице заданий. Особенность этого утверждения заключается в том, что действие ON UPDATE CASCADE позволяет выполнять обновление между таблицами, а действие ON DELETE RESTRICT отклоняет удаление. Действие по умолчанию - УДАЛИТЬ ОГРАНИЧЕНИЕ.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования