Erdmates Logo
Erdmates
返回博客
SQLDDLCREATE TABLE数据库

SQL CREATE TABLE完整指南:附实战示例

通过实战示例,完整掌握SQL DDL核心—CREATE TABLE语法。

2026年2月5日8 分钟阅读

SQL DDL与CREATE TABLE

SQL分为DDL(数据定义语言)、DML(数据操作语言)和DCL(数据控制语言)。其中DDL的核心就是创建表的CREATE TABLE语句。

基本语法

CREATE TABLE 表名 (
  列名 数据类型 [约束],
  ...
  [表级约束]
);

常用数据类型

  • VARCHAR(n): 可变长字符串
  • TEXT: 大文本
  • INTEGER: 整数
  • DECIMAL(p, s): 精确小数(用于金额)
  • TIMESTAMPTZ: 带时区时间戳
  • UUID: 唯一标识符
  • BOOLEAN: 布尔值

主要约束

CREATE TABLE users (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  email VARCHAR(255) NOT NULL UNIQUE,
  name VARCHAR(100) NOT NULL,
  status VARCHAR(20) DEFAULT 'active',
  created_at TIMESTAMPTZ DEFAULT NOW()
);
  • PRIMARY KEY: 主键,唯一且非空
  • NOT NULL: 禁止NULL值
  • UNIQUE: 禁止重复值
  • DEFAULT: 设置默认值
  • CHECK: 值范围限制

外键约束

CREATE TABLE orders (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID NOT NULL,
  total_amount DECIMAL(15, 2) NOT NULL,

  CONSTRAINT fk_orders_user
    FOREIGN KEY (user_id)
    REFERENCES users(id)
    ON DELETE RESTRICT
);

实战示例:博客系统

CREATE TABLE posts (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  author_id UUID NOT NULL,
  title VARCHAR(300) NOT NULL,
  content TEXT NOT NULL,
  status VARCHAR(20) DEFAULT 'draft'
    CHECK (status IN ('draft', 'published', 'archived')),
  created_at TIMESTAMPTZ DEFAULT NOW(),
  updated_at TIMESTAMPTZ DEFAULT NOW(),

  FOREIGN KEY (author_id) REFERENCES users(id) ON DELETE RESTRICT
);

CREATE INDEX idx_posts_author ON posts(author_id);
CREATE INDEX idx_posts_status ON posts(status);

从ERD自动生成SQL

使用Erdmates,可以可视化设计ERD后,一键自动生成适用于PostgreSQL、MySQL、SQLite等各种数据库方言的CREATE TABLE SQL。

总结

CREATE TABLE是数据库开发的第一步。积极利用约束来保证数据完整性,保持一致的命名规范,这是优秀数据库模式的核心。

立即使用Erdmates开始

使用AI驱动的ERD编辑器开始数据库设计。免费使用。

免费试用演示免费开始

相关文章

bigint、UUID v4 还是 UUID v7?主键选择指南(含 PostgreSQL 18 的 uuidv7())

比较 bigint、UUID v4 和 UUID v7 主键的优缺点,介绍 PostgreSQL 18 内置的 uuidv7() 带来的变化,以及不同场景下的选择方法。

被AI代理读取的数据库:MCP时代的模式设计原则

AI代理通过MCP直接连接数据库的情况越来越多。本文整理如何设计名称、注释和约束,让代理不会误解模式,以及如何安全地划分权限。

PostgreSQL 19预览:影响模式设计与运维的变化(基于Beta 4)

以官方发布说明(Beta 4)为准,整理即将正式发布的PostgreSQL 19的变更中直接影响表设计、迁移和运维的内容。同时介绍在Beta阶段被撤回的功能,以及升级前需要确认的行为变化。

Erdmates Logo
Erdmates

使用自然语言设计数据库,通过AI驱动的ERD编辑器与团队实时协作。

服务

  • 功能介绍
  • 价格方案
  • 演示
  • SQL 转 ERD

资源

  • 博客
  • 帮助
  • 联系我们

法律声明

  • 服务条款
  • 隐私政策
  • 第三方提供
公司名称: Produx|代表人: 최정회
地址: 강원특별자치도 원주시 솔우물2길 4-1 (무실동)
电子邮件: master@erdmates.com
隐私保护负责人: 최정회|托管服务提供商: Amazon Web Services

© 2026 Produx. 版权所有。