PostgreSQL CREATE TABLE 建表教程
CREATE TABLE 定义表结构:列名、数据类型、默认值与约束。本篇覆盖基本建表、从查询结果建表与临时表。
本篇内容
- CREATE TABLE 基本语法
- 列类型、DEFAULT 与内联约束
- IF NOT EXISTS 与临时表
- CREATE TABLE AS / SELECT INTO 从查询建表
基本建表
CREATE TABLE users (
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
age INTEGER CHECK (age >= 0 AND age < 150),
status SMALLINT NOT NULL DEFAULT 1,
create_time TIMESTAMPTZ NOT NULL DEFAULT now()
);
幂等与临时表
-- 已存在时不报错
CREATE TABLE IF NOT EXISTS users (
id BIGINT PRIMARY KEY,
name VARCHAR(50)
);
-- 临时表:只在当前会话可见,会话结束自动删除
CREATE TEMP TABLE tmp_users AS
SELECT * FROM users WHERE status = 1;
从查询结果建表
-- 结构 + 数据一起复制
CREATE TABLE users_backup AS
SELECT * FROM users;
-- 只复制结构(加一个永假条件)
CREATE TABLE users_template AS
SELECT * FROM users WITH NO DATA;
待补充(TODO)
- 补充:数据类型选型建议(VARCHAR 长度、整数类型、时间类型)
- 补充:约束写在列上 vs 表级的区别与复合主键写法
- 补充:继承表 / 分区表 / UNLOGGED 表的适用场景
- 补充:建表规范(命名、主键选择、时间字段、软删除列)