一、先建立正确认知(最关键)
schema.prisma ≈ 数据库结构说明书(声明式)
特点:
不是执行代码(不会跑逻辑)
只是在“描述数据库长什么样”
你可以理解成:
Prisma schema = SQL 的更简单写法
二、语法结构长什么样(固定套路)
一个 schema 文件只干 3 件事:
generator client { ... } // 生成客户端(不用管太多)
datasource db { ... } // 数据库连接(.env)
model User { ... } // 表结构(重点!!)
👉 真正你要掌握的是:
model
三、model 的语法拆解(逐行解释)
我们拿一个完整例子:
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
age Int
createdAt DateTime @default(now())
}
逐行拆:
第1行:定义表
model User {
👉 意思:
创建一张表:User
字段的基本语法(核心规则)
字段名 类型 修饰符
例如:
id Int @id @default(autoincrement())
拆开:
id → 字段名
Int → 类型
@id → 主键
@default(...) → 默认值
四、字段类型(你只需要记这几个)
String // 字符串
Int // 整数
Float // 浮点数
Boolean // 布尔
DateTime // 时间
Json // JSON
👉 你可以这样记:
Prisma 类型 ≈ JS 类型
五、最重要的语法:@(字段修饰符)
1️⃣ @id(主键)
id Int @id
👉 表示:
唯一标识一条数据
2️⃣ @default(默认值)
createdAt DateTime @default(now())
👉 表示:
默认当前时间
常见写法:
@default(autoincrement()) // 自增ID
@default(now()) // 当前时间
@default("abc") // 默认字符串
3️⃣ @unique(唯一)
email String @unique
👉 表示:
email 不能重复
4️⃣ ?(可选字段)
name String?
👉 表示:
可以为空(NULL)
5️⃣ @updatedAt(自动更新时间)
updatedAt DateTime @updatedAt
👉 每次 update 自动更新
六、@@(模型级语法)
👉 和 @ 的区别:
@xxx → 作用在字段
@@xxx → 作用在整个表
1️⃣ @@unique(联合唯一)
@@unique([text, level])
👉 表示:
text + level 组合不能重复
2️⃣ @@index(索引)
@@index([level])
👉 表示:
给 level 建索引(加速查询)
七、关系语法(稍微难一点)
一对多关系
model Word {
id Int @id @default(autoincrement())
text String
sentences Sentence[]
}
model Sentence {
id Int @id @default(autoincrement())
content String
wordId Int
word Word @relation(fields: [wordId], references: [id])
}
拆解:
Word 表
sentences Sentence[]
👉 表示:
一个 Word 对应多个 Sentence
Sentence 表
wordId Int
👉 外键字段
word Word @relation(...)
👉 建立关系
@relation 解释
@relation(fields: [wordId], references: [id])
意思:
wordId → 指向 Word.id
八、和 SQL 对比(帮你彻底理解)
Prisma:
model User {
id Int @id @default(autoincrement())
email String @unique
}
SQL:
CREATE TABLE User (
id SERIAL PRIMARY KEY,
email TEXT UNIQUE
);
👉 结论:
Prisma = 更简洁的 SQL
九、你现在只需要掌握这 10 个点
1. model = 表
2. 字段 = 列
3. 类型(String / Int / DateTime)
4. @id = 主键
5. @default = 默认值
6. @unique = 唯一
7. ? = 可选
8. @@unique = 联合唯一
9. @@index = 索引
10. @relation = 表关系
十、用一句话总结 Prisma schema
用“接近代码的语法”来描述数据库结构