⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议
Skip to content

4.3.1 如何创建一张表——DDL 数据定义:CREATE/ALTER/DROP 语句

一句话破题

DDL 是用来定义数据库"骨架"的语言——创建表、修改结构、删除表都靠它。

DDL 三大操作

操作说明危险等级
CREATE创建表、索引、视图
ALTER修改表结构
DROP删除表、索引高(数据会丢失!)

CREATE:创建表

SQL 语法

sql
CREATE TABLE users (
  id         VARCHAR(36) PRIMARY KEY,
  email      VARCHAR(255) NOT NULL UNIQUE,
  name       VARCHAR(100),
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

对应的 Prisma Schema

prisma
model User {
  id        String   @id @default(cuid())
  email     String   @unique
  name      String?
  createdAt DateTime @default(now())
}

常用数据类型对照

SQL 类型Prisma 类型说明
VARCHAR(n)String变长字符串
TEXTString长文本
INTEGERInt整数
BIGINTBigInt大整数
BOOLEANBoolean布尔值
TIMESTAMPDateTime时间戳
DECIMALDecimal精确小数
JSONJsonJSON 数据

ALTER:修改表结构

添加列

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

修改列类型

sql
ALTER TABLE users ALTER COLUMN name TYPE VARCHAR(200);

删除列

sql
ALTER TABLE users DROP COLUMN phone;

添加索引

sql
CREATE INDEX idx_users_email ON users(email);

在 Prisma 中:修改 schema.prisma 后执行 npx prisma migrate dev

DROP:删除表

sql
-- 删除表(数据会全部丢失!)
DROP TABLE users;

-- 如果表存在才删除(避免报错)
DROP TABLE IF EXISTS users;

警告

DROP TABLE 会永久删除所有数据,无法恢复!生产环境慎用。

Prisma 迁移与 DDL

Prisma 通过迁移(Migration)管理 DDL:

bash
# 1. 修改 schema.prisma
# 2. 生成迁移文件(包含 SQL)
npx prisma migrate dev --name add_phone_field

# 3. 查看生成的 SQL
cat prisma/migrations/xxx_add_phone_field/migration.sql

生成的迁移文件示例:

sql
-- migration.sql
ALTER TABLE "User" ADD COLUMN "phone" TEXT;

为什么要了解 DDL?

  1. 调试迁移问题:迁移失败时需要看懂 SQL 报错
  2. 手动修复数据:有时需要直接执行 SQL
  3. 性能优化:理解索引创建语法

本节小结

  • DDL 用于定义数据库结构(CREATE/ALTER/DROP)
  • Prisma 通过迁移自动生成 DDL
  • DROP 是危险操作,会永久删除数据
  • 了解 DDL 有助于调试和优化