schema.prisma学习

2 阅读2分钟

一、先建立正确认知(最关键)

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

用“接近代码的语法”来描述数据库结构