在 PostgreSQL 中,如何创建和管理表?

最后更新:1/13/2026

AI 助手

会员专享功能

只有会员才能使用 AI 生成答案功能。 立即升级

Other Answers (1)

Generated by DeepSeek V3

在 PostgreSQL 中创建和管理表

表的基本概念

PostgreSQL 中的表是存储数据的结构化对象,由列(字段)和行(记录)组成。每个表都有一个名称,并且属于特定的模式(schema)。

创建表

基本语法

sql
CREATE TABLE table_name (
    column1 datatype [constraints],
    column2 datatype [constraints],
    ...
);

示例

sql
CREATE TABLE employees (
    employee_id SERIAL PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    hire_date DATE DEFAULT CURRENT_DATE,
    salary NUMERIC(10,2),
    department_id INTEGER REFERENCES departments(department_id)
);

常用数据类型

  • 整数类型: SMALLINT, INTEGER, BIGINT, SERIAL(自增)
  • 字符类型: CHAR(n), VARCHAR(n), TEXT
  • 数值类型: NUMERIC(precision, scale), REAL, DOUBLE PRECISION
  • 日期时间: DATE, TIME, TIMESTAMP, INTERVAL
  • 布尔类型: BOOLEAN
  • 二进制数据: BYTEA
  • JSON/XML: JSON, JSONB, XML

约束(Constraints)

  • PRIMARY KEY: 主键约束,唯一标识每一行
  • FOREIGN KEY: 外键约束,确保引用完整性
  • NOT NULL: 非空约束
  • UNIQUE: 唯一约束
  • CHECK: 检查约束,自定义条件
  • DEFAULT: 默认值

修改表结构

添加列

sql
ALTER TABLE employees ADD COLUMN phone VARCHAR(20);

修改列

sql
ALTER TABLE employees ALTER COLUMN salary TYPE NUMERIC(12,2);
ALTER TABLE employees RENAME COLUMN salary TO annual_salary;

删除列

sql
ALTER TABLE employees DROP COLUMN phone;

添加约束

sql
ALTER TABLE employees ADD CONSTRAINT salary_check CHECK (salary > 0);

删除约束

sql
ALTER TABLE employees DROP CONSTRAINT salary_check;

表的重命名和删除

sql
ALTER TABLE employees RENAME TO staff;
DROP TABLE staff;

临时表

sql
CREATE TEMPORARY TABLE temp_employees AS SELECT * FROM employees;

分区表(PostgreSQL 10+)

sql
CREATE TABLE sales (
    id SERIAL,
    sale_date DATE NOT NULL,
    amount NUMERIC(10,2)
) PARTITION BY RANGE (sale_date);

CREATE TABLE sales_2023_q1 PARTITION OF sales
    FOR VALUES FROM ('2023-01-01') TO ('2023-04-01');

表空间管理

sql
CREATE TABLESPACE fastspace LOCATION '/ssd/postgresql/data';

CREATE TABLE fast_table (id SERIAL) TABLESPACE fastspace;

最佳实践

  1. 为表选择适当的数据类型以减少存储空间
  2. 为常用查询条件添加索引
  3. 使用适当的约束确保数据完整性
  4. 考虑分区表处理大数据量表
  5. 合理使用表空间优化I/O性能

通过以上命令和技巧,您可以有效地在PostgreSQL中创建和管理表结构,满足各种数据存储需求。