推荐答案
在 PostgreSQL 中,定义表的基本语法如下:
CREATE TABLE table_name ( column1 datatype [constraints], column2 datatype [constraints], ... [table_constraints] );
table_name
是你要创建的表的名称。column1
,column2
是表中的列名。datatype
是列的数据类型,如INTEGER
,VARCHAR
,DATE
等。constraints
是可选的列约束,如NOT NULL
,UNIQUE
,PRIMARY KEY
等。table_constraints
是可选的表级约束,如PRIMARY KEY
,FOREIGN KEY
,UNIQUE
等。
示例:
CREATE TABLE employees ( employee_id SERIAL PRIMARY KEY, first_name VARCHAR(50) NOT NULL, last_name VARCHAR(50) NOT NULL, hire_date DATE, salary NUMERIC(10, 2) );
本题详细解读
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 KEY
:employee_id
是主键,类型为SERIAL
,自动递增。first_name VARCHAR(50) NOT NULL
:first_name
是长度为 50 的字符串,且不能为空。last_name VARCHAR(50) NOT NULL
:last_name
是长度为 50 的字符串,且不能为空。hire_date DATE
:hire_date
是日期类型,可以为空。salary NUMERIC(10, 2)
:salary
是精确数值类型,总位数为 10,小数位数为 2。
通过以上语法和示例,你可以在 PostgreSQL 中定义符合需求的表结构。