AI编程实战篇

如何对接数据库

让你的应用拥有"记忆"

网页和应用产生的数据需要存储在数据库中,否则一刷新就全没了。本文介绍两种主流的数据库对接方式:传统 MySQL云端 Supabase

💡 类比:数据库就像你应用的"硬盘"。没有数据库,用户注册的信息、发布的文章、上传的数据都无处存放。

加载图表中...

MySQL vs Supabase

对比MySQLSupabase
类型传统关系数据库云端 BaaS 平台
部署需要自己安装在服务器上注册即用,无需部署
费用软件免费,但需要服务器免费计划够学习使用
管理需要自己维护平台自动管理
适合有服务器运维经验的开发者新手、个人项目、快速原型
附加功能纯数据库自带用户认证、文件存储、实时订阅
加载图表中...

方案一:Supabase(推荐新手)

什么是 Supabase?

Supabase 是一个开源的 Firebase 替代品,提供数据库、用户认证、文件存储等一站式服务。底层使用 PostgreSQL 数据库。

加载图表中...

第一步:创建项目

  1. 访问 supabase.com,注册账号
  2. 点击 "New Project",填写项目名
  3. 选择数据库密码和地区
  4. 等待项目创建完成

第二步:创建数据表

在 Supabase 控制台的 Table Editor 中,可以可视化创建数据表:

-- 例如创建一个文章表
create table articles (
  id bigint primary key generated always as identity,
  title text not null,
  content text,
  author text,
  created_at timestamp with time zone default now()
);

第三步:在项目中使用

# 安装 Supabase 客户端
npm install @supabase/supabase-js
// lib/supabase.ts
import { createClient } from "@supabase/supabase-js";

const supabase = createClient(
  process.env.NEXT_PUBLIC_SUPABASE_URL!,
  process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
);

export default supabase;
# .env.local
NEXT_PUBLIC_SUPABASE_URL=https://xxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbG...

第四步:增删改查

// 查询所有文章
const { data: articles } = await supabase
  .from("articles")
  .select("*")
  .order("created_at", { ascending: false });

// 新增文章
await supabase.from("articles").insert({
  title: "我的第一篇文章",
  content: "文章内容...",
  author: "张三",
});

// 更新文章
await supabase
  .from("articles")
  .update({ title: "修改后的标题" })
  .eq("id", 1);

// 删除文章
await supabase.from("articles").delete().eq("id", 1);

方案二:MySQL

适用场景

  • 你已经有云服务器
  • 项目需要部署在自己的服务器上
  • 需要更灵活的数据库配置

第一步:安装 MySQL

# Ubuntu / Debian
sudo apt install mysql-server

# macOS(使用 Homebrew)
brew install mysql

第二步:创建数据库和表

-- 创建数据库
CREATE DATABASE my_app;
USE my_app;

-- 创建文章表
CREATE TABLE articles (
  id INT AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(255) NOT NULL,
  content TEXT,
  author VARCHAR(100),
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

第三步:在 Node.js 项目中使用

# 安装 MySQL 客户端
npm install mysql2
// lib/db.ts
import mysql from "mysql2/promise";

const pool = mysql.createPool({
  host: process.env.DB_HOST,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
});

export default pool;
# .env.local
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=my_app

第四步:增删改查

import pool from "@/lib/db";

// 查询所有文章
const [rows] = await pool.query(
  "SELECT * FROM articles ORDER BY created_at DESC"
);

// 新增文章
await pool.query(
  "INSERT INTO articles (title, content, author) VALUES (?, ?, ?)",
  ["我的第一篇文章", "文章内容...", "张三"]
);

// 更新文章
await pool.query(
  "UPDATE articles SET title = ? WHERE id = ?",
  ["修改后的标题", 1]
);

// 删除文章
await pool.query("DELETE FROM articles WHERE id = ?", [1]);

如何让AI帮你对接

不用自己记住这些代码,直接告诉AI:

使用 Supabase

我的项目需要对接 Supabase 数据库。
项目技术栈是 Next.js + TypeScript。
我需要一个文章表,包含标题、内容、作者、创建时间字段。
帮我完成以下工作:
1. 给出建表的 SQL
2. 创建 Supabase 客户端配置
3. 实现文章的增删改查函数

使用 MySQL

我的项目需要对接 MySQL 数据库。
项目技术栈是 Next.js + TypeScript。
数据库已经安装在服务器上了。
帮我完成以下工作:
1. 给出建表的 SQL
2. 创建数据库连接配置
3. 实现文章的增删改查 API 接口

选择建议

加载图表中...

🎯 AI编程小贴士:新手强烈推荐 Supabase。它不仅是数据库,还自带用户认证和文件存储,一个服务就能满足大部分需求。你只需要在 Supabase 控制台建好表,然后告诉 AI "帮我用 Supabase 实现XXX功能",它会帮你写好所有代码。

小结

  • 数据库让你的应用拥有"记忆",数据不再丢失
  • Supabase:云端服务,注册即用,自带认证和存储,推荐新手
  • MySQL:传统数据库,需要自己部署和维护,灵活可控
  • 两者的基本操作都是增删改查(CRUD)
  • 让AI帮你写数据库相关代码,你只需要描述数据结构和需求