PostgreSQL 中如何定义表?

推荐答案

在 PostgreSQL 中,定义表的基本语法如下:

  • table_name 是你要创建的表的名称。
  • column1, column2 是表中的列名。
  • datatype 是列的数据类型,如 INTEGER, VARCHAR, DATE 等。
  • constraints 是可选的列约束,如 NOT NULL, UNIQUE, PRIMARY KEY 等。
  • table_constraints 是可选的表级约束,如 PRIMARY KEY, FOREIGN KEY, UNIQUE 等。

示例:

本题详细解读

1. 表名和列名

  • 表名和列名是标识符,必须遵循 PostgreSQL 的命名规则。通常使用小写字母和下划线组合,如 employee_id
  • 表名和列名不能与 PostgreSQL 的保留关键字冲突。

2. 数据类型

  • PostgreSQL 支持多种数据类型,如:
    • INTEGER:整数类型。
    • VARCHAR(n):可变长度字符串,最大长度为 n
    • DATE:日期类型。
    • NUMERIC(p, s):精确数值类型,p 是总位数,s 是小数位数。
    • SERIAL:自动递增的整数类型,通常用于主键。

3. 列约束

  • NOT NULL:该列不允许为空。
  • UNIQUE:该列的值必须唯一。
  • PRIMARY KEY:该列是表的主键,唯一标识每一行。
  • CHECK (condition):该列的值必须满足指定的条件。

4. 表级约束

  • PRIMARY KEY (column1, column2):指定多列作为主键。
  • FOREIGN KEY (column) REFERENCES other_table(column):指定外键约束。
  • UNIQUE (column1, column2):指定多列的组合必须唯一。

5. 示例解析

  • employee_id SERIAL PRIMARY KEYemployee_id 是主键,类型为 SERIAL,自动递增。
  • first_name VARCHAR(50) NOT NULLfirst_name 是长度为 50 的字符串,且不能为空。
  • last_name VARCHAR(50) NOT NULLlast_name 是长度为 50 的字符串,且不能为空。
  • hire_date DATEhire_date 是日期类型,可以为空。
  • salary NUMERIC(10, 2)salary 是精确数值类型,总位数为 10,小数位数为 2。

通过以上语法和示例,你可以在 PostgreSQL 中定义符合需求的表结构。

纠错
反馈