Skip to Content

4.2 数据库使用指南

数据库基础概念

数据库 = 有组织的数据存储系统

类比

  • 数据库 = 图书馆
  • 表(Table)= 书架
  • 行(Row)= 一本书
  • 列(Column)= 书的属性(书名、作者、出版日期)

常见数据库

数据库类型特点推荐场景
PostgreSQLSQL(关系型)功能强大,开源复杂应用,需要事务
MySQLSQL(关系型)流行,易用Web 应用,博客
SQLiteSQL(关系型)轻量,单文件小项目,学习
MongoDBNoSQL(文档型)灵活,JSON 格式快速迭代,数据结构多变
SupabaseSQL(PostgreSQL)后端即服务快速开发,全栈应用

Drizzle ORM 入门

ORM = Object-Relational Mapping(对象关系映射)

作用:用 JavaScript/TypeScript 操作数据库,不用写 SQL

为什么选择 Drizzle

  • ✅ TypeScript 优先(类型安全)
  • ✅ 轻量高效
  • ✅ SQL-like 语法(易学)
  • ✅ AI 友好(AI 容易生成正确代码)

安装配置

用 AI 安装

Command + L 输入: 帮我在 Next.js 项目中安装和配置 Drizzle ORM, 使用 PostgreSQL 数据库, 包括: - 安装依赖 - 创建配置文件 - 配置数据库连接 - 创建示例表结构

完成后记得检查 .env 里的数据库连接字符串是否正确,别把密码直接提交到 GitHub。

定义数据表

示例:博客文章表

// lib/db/schema.ts import { pgTable, serial, text, timestamp } from 'drizzle-orm/pg-core'; export const posts = pgTable('posts', { id: serial('id').primaryKey(), title: text('title').notNull(), content: text('content').notNull(), author: text('author').notNull(), createdAt: timestamp('created_at').defaultNow(), });

基本操作(CRUD)

1. 创建(Create)

import { db } from '@/lib/db'; import { posts } from '@/lib/db/schema'; // 插入新文章 const newPost = await db.insert(posts).values({ title: "我的第一篇文章", content: "这是文章内容", author: "Ben" });

2. 读取(Read)

// 获取所有文章 const allPosts = await db.select().from(posts); // 获取特定文章 const post = await db.select() .from(posts) .where(eq(posts.id, 1)); // 获取最新 10 篇文章 const latestPosts = await db.select() .from(posts) .orderBy(desc(posts.createdAt)) .limit(10);

3. 更新(Update)

await db.update(posts) .set({ title: "更新后的标题" }) .where(eq(posts.id, 1));

4. 删除(Delete)

await db.delete(posts) .where(eq(posts.id, 1));

每次操作数据库都要考虑”如果失败怎么办”:让 AI 帮你包上一层 try/catch,并记录日志或返回友好的错误信息。

用 AI 操作数据库

Prompt 模板

我的数据库中有一个 posts 表,包含字段: - id (主键) - title (文章标题) - content (文章内容) - author (作者) - createdAt (创建时间) 请帮我创建一个 API: - 路径:/api/posts - GET:返回所有文章,按创建时间倒序 - POST:创建新文章,需要验证必填字段 使用 Drizzle ORM,包含完整的错误处理。

拿到 API 后,最好同时让 AI 写一个简单的种子脚本(seed script)往表里插入几条测试数据,方便联调前端页面。

Last updated on