TypeScript 优先、零魔法、接近 SQL 的现代 ORM——像写 SQL 一样构建查询,同时享受端到端类型安全
过去几年 Prisma 几乎等同于"TypeScript ORM",但它的问题也越来越明显:需要自己的 schema DSL(不是 TS)、需要运行 prisma generate 生成 client、查询引擎是个独立 Rust 二进制(冷启动慢、不适合 Edge 环境)、复杂查询表达力有限(遇到高级 SQL 就要 $queryRaw)。
Drizzle 走了完全相反的路线:Schema 就是 TypeScript(不需要 DSL/代码生成),查询 API 刻意做得像 SQL(db.select().from(users).where(eq(...))),7KB 运行时零依赖——能跑在 Cloudflare Workers、Deno、Bun、Vercel Edge 等所有 JS 运行时。2025 年起 Drizzle 成为 Next.js / Remix / T3 Stack / Bun 教程推荐的默认 ORM。
本教程 10 章从零讲到精通:安装与连接各数据库、Schema 定义、drizzle-kit 迁移、基础 CRUD、Relational Queries、高级查询与 SQL 函数、事务与锁、Drizzle Studio、Edge 运行时部署、与 Prisma 对比迁移。
六大特性让 Drizzle 成为 2026 年的默认 TS ORM
表结构用 TS 定义,无需 DSL、无需代码生成,改了立即可用。
API 刻意镜像 SQL:select/from/where/join/groupBy,所见即所得。
列类型、返回类型、关系推断——全自动,改 schema 后 TS 立刻报错。
7KB 无运行时依赖,能跑 Workers / Deno / Bun / Vercel / Lambda。
声明式迁移:对比 schema 与数据库,生成 SQL、推送或生成迁移文件。
本地 GUI 浏览数据、改记录、看查询,类似 Prisma Studio。
10 章从建表到 Edge 部署,覆盖 Postgres/MySQL/SQLite 三大方言
Drizzle 的定位、与 Prisma/Kysely/TypeORM 对比、driver 选型(pg/postgres-js/mysql2/better-sqlite3)、第一个连接。
pgTable/mysqlTable/sqliteTable、列类型(text/integer/timestamp/json)、默认值、枚举、引用关系。
drizzle.config.ts、generate(生成 SQL 迁移)、migrate(应用迁移)、push(原型模式直接推送)、studio。
insert/select/update/delete、returning、partial select、onConflict/upsert、bulk 插入、RETURNING 类型推断。
eq/ne/gt/lt/like/inArray 操作符、and/or/not、sql 模板、aggregate(count/sum/avg)、distinct、orderBy。
innerJoin/leftJoin/rightJoin/fullJoin、alias、$dynamic、with(CTE)、lateral join、子查询嵌入。
relations 定义、db.query.users.findMany、with 嵌套关系、columns 挑选、where/limit 传递、N+1 vs 单 SQL。
db.transaction、isolation level、savepoint、行级锁 for update、并发冲突处理、batch(Edge 批执行)。
Neon HTTP、Turso libsql、Planetscale HTTP、Cloudflare D1、connection pooling、冷启动优化。
drizzle-prisma-generator、关键差异对照、Zod 集成(drizzle-zod)、OpenAPI、seeding、性能调优清单。