在 PostgreSQL 中,如何创建和管理表?
最后更新:1/13/2026
AI 助手
会员专享功能
只有会员才能使用 AI 生成答案功能。 立即升级
Other Answers (1)
Generated by DeepSeek V3
在 PostgreSQL 中创建和管理表
表的基本概念
PostgreSQL 中的表是存储数据的结构化对象,由列(字段)和行(记录)组成。每个表都有一个名称,并且属于特定的模式(schema)。
创建表
基本语法
CREATE TABLE table_name (
column1 datatype [constraints],
column2 datatype [constraints],
...
);
示例
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: 默认值
修改表结构
添加列
ALTER TABLE employees ADD COLUMN phone VARCHAR(20);
修改列
ALTER TABLE employees ALTER COLUMN salary TYPE NUMERIC(12,2);
ALTER TABLE employees RENAME COLUMN salary TO annual_salary;
删除列
ALTER TABLE employees DROP COLUMN phone;
添加约束
ALTER TABLE employees ADD CONSTRAINT salary_check CHECK (salary > 0);
删除约束
ALTER TABLE employees DROP CONSTRAINT salary_check;
表的重命名和删除
ALTER TABLE employees RENAME TO staff;
DROP TABLE staff;
临时表
CREATE TEMPORARY TABLE temp_employees AS SELECT * FROM employees;
分区表(PostgreSQL 10+)
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');
表空间管理
CREATE TABLESPACE fastspace LOCATION '/ssd/postgresql/data';
CREATE TABLE fast_table (id SERIAL) TABLESPACE fastspace;
最佳实践
- 为表选择适当的数据类型以减少存储空间
- 为常用查询条件添加索引
- 使用适当的约束确保数据完整性
- 考虑分区表处理大数据量表
- 合理使用表空间优化I/O性能
通过以上命令和技巧,您可以有效地在PostgreSQL中创建和管理表结构,满足各种数据存储需求。