在 PostgreSQL 中创建员工表

PostgreSQLPostgreSQLBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在这个挑战中,你将在 PostgreSQL 中设计并创建一个 employee_contacts 表来存储员工联系方式,通过适当的数据类型和约束来确保数据完整性。你将在一个预先配置好的环境中工作,其中已经存在一个 employees 表。

你的任务包括使用 psqlpostgres 用户身份连接到 PostgreSQL 数据库,然后直接执行 SQL 命令来创建 employee_contacts 表。该表应包含以下列:contact_id(主键,自动递增)、employee_id(外键,引用 employees 表)、phone_number(唯一)和 email(非空)。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL postgresql(("PostgreSQL")) -.-> postgresql/PostgreSQLGroup(["PostgreSQL"]) postgresql/PostgreSQLGroup -.-> postgresql/table_init("Create Basic Table") postgresql/PostgreSQLGroup -.-> postgresql/col_text("Add Text Column") postgresql/PostgreSQLGroup -.-> postgresql/key_primary("Set Primary Key") subgraph Lab Skills postgresql/table_init -.-> lab-551115{{"在 PostgreSQL 中创建员工表"}} postgresql/col_text -.-> lab-551115{{"在 PostgreSQL 中创建员工表"}} postgresql/key_primary -.-> lab-551115{{"在 PostgreSQL 中创建员工表"}} end

创建员工表

设计一个表来存储员工联系方式,通过适当的数据类型和约束来确保数据完整性。

employees 表已经为你创建好了。如果你没有看到它,你可以使用以下命令创建它:

CREATE TABLE employees (
    employee_id SERIAL PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL
);

任务

  • 在 PostgreSQL 中创建一个名为 employee_contacts 的表。该表应包含以下列:contact_id(主键)、employee_id(外键,引用 employees 表)、phone_number(唯一)和 email(非空)。
  • 确保 employee_id 列正确引用 employees 表中的 employee_id 列。

要求

  1. contact_id 列必须是自增主键。
  2. phone_number 列必须是唯一的。
  3. email 列不允许 NULL 值。
  4. employee_id 列必须是引用 employees 表的外键。
  5. 使用 psql 执行 SQL 命令。

示例

employeesemployee_contacts 表应具有以下结构:

Structure of employees and contacts tables
                                          Table "public.employees"
   Column    |         Type          | Collation | Nullable |                    Default
-------------+-----------------------+-----------+----------+------------------------------------------------
 employee_id | integer               |           | not null | nextval('employees_employee_id_seq'::regclass)
 first_name  | character varying(50) |           |          |
 last_name   | character varying(50) |           |          |
Indexes:
    "employees_pkey" PRIMARY KEY, btree (employee_id)
Referenced by:
    TABLE "employee_contacts" CONSTRAINT "employee_contacts_employee_id_fkey" FOREIGN KEY (employee_id) REFERENCES employees(employee_id)
                                      Table "public.employee_contacts"
     Column     |          Type          | Collation | Nullable |                     Default
----------------+------------------------+-----------+----------+--------------------------------------------------
 contact_id     | integer                |           | not null | nextval('employee_contacts_contact_id_seq'::regclass)
 employee_id    | integer                |           |          |
 phone_number   | character varying(20)  |           |          |
 email          | character varying(100) |           | not null |
Indexes:
    "employee_contacts_pkey" PRIMARY KEY, btree (contact_id)
    "employee_contacts_phone_number_key" UNIQUE CONSTRAINT, btree (phone_number)
Foreign-key constraints:
    "employee_contacts_employee_id_fkey" FOREIGN KEY (employee_id) REFERENCES employees(employee_id)

提示

  • 使用 CREATE TABLE 语句创建表。
  • 使用 SERIAL 数据类型为 contact_id 列自动生成唯一的整数值。
  • 使用 PRIMARY KEY 约束来定义主键。
  • 使用 UNIQUE 约束来确保 phone_number 列包含唯一值。
  • 使用 NOT NULL 约束来确保 email 列不包含 NULL 值。
  • 使用 FOREIGN KEY 约束在 employee_contacts 表中的 employee_id 列和 employees 表中的 employee_id 列之间创建外键关系。
  • 记住在使用 SQL 命令之前,使用 sudo -u postgres psql 连接到 PostgreSQL 数据库。
✨ 查看解决方案并练习

总结

在这个挑战中,任务是在指定的环境中创建一个名为 employee_contacts 的 PostgreSQL 表。这涉及到设计表结构,包括 contact_id(主键,自动递增)、employee_id(外键,引用 employees 表)、phone_number(唯一)和 email(非空)等列。

解决方案需要使用 psqlpostgres 用户身份连接到 PostgreSQL 数据库,然后直接执行必要的 SQL 命令来定义表及其约束,从而确保数据完整性以及表之间的正确关系。