数据库知识篇

什么是数据库

数据需要一个"家"

你的应用产生了用户信息、文章内容、订单记录……这些数据放在哪里?总不能存在变量里,程序一关就丢了吧?数据库就是专门用来持久化存储和管理数据的系统。

💡 类比:数据库就像一个超级Excel。能存海量数据,支持快速查找,多人同时读写也不会乱。

加载图表中...

为什么需要数据库?

存储方式持久性查询能力并发安全适合场景
变量(内存)❌ 程序关了就没手动遍历临时计算
文件(JSON/CSV)很慢小型配置
数据库⚡ 极快正式项目
加载图表中...

数据库的基本概念

关系型数据库的结构

加载图表中...
概念类比说明
数据库(Database)一个Excel文件存放所有数据的容器
表(Table)Excel的一个Sheet存放某一类数据
行(Row)Excel的一行一条具体的数据记录
列(Column)Excel的一列数据的一个属性/字段

数据表示例

users 表

idnameemailage
1张三zhang@mail.com25
2李四li@mail.com30
3王五wang@mail.com28

常见的数据库

关系型数据库(SQL)

数据库特点适用场景
PostgreSQL功能最强大、开源生产环境首选
MySQL最流行、生态丰富Web应用
SQLite轻量级、无需服务器移动端、小项目

非关系型数据库(NoSQL)

数据库数据格式适用场景
MongoDBJSON 文档灵活结构的数据
Redis键值对缓存、会话管理
Supabase基于 PostgreSQL全栈快速开发
加载图表中...

数据库在项目中的位置

加载图表中...

注意:前端永远不能直接访问数据库,必须通过后端 API 中转。这是安全的基本原则。

用代码连接数据库

Node.js + PostgreSQL

import { Pool } from "pg";

const pool = new Pool({
  host: "localhost",
  port: 5432,
  database: "my_blog",
  user: "postgres",
  password: "password",
});

// 查询所有用户
const result = await pool.query("SELECT * FROM users");
console.log(result.rows);
// [{ id: 1, name: "张三" }, { id: 2, name: "李四" }]

Next.js API 路由中使用

// app/api/users/route.ts
import { pool } from "@/lib/db";

export async function GET() {
  const result = await pool.query("SELECT * FROM users");
  return Response.json(result.rows);
}

export async function POST(request: Request) {
  const { name, email } = await request.json();
  const result = await pool.query(
    "INSERT INTO users (name, email) VALUES ($1, $2) RETURNING *",
    [name, email]
  );
  return Response.json(result.rows[0]);
}

数据库连接配置

数据库密码等敏感信息应该放在环境变量中:

# .env.local
DATABASE_URL=postgresql://postgres:password@localhost:5432/my_blog
// lib/db.ts
import { Pool } from "pg";

export const pool = new Pool({
  connectionString: process.env.DATABASE_URL,
});

🎯 AI编程小贴士:第一次搭数据库不知道从何下手?告诉 AI"帮我在 Next.js 项目中接入 PostgreSQL 数据库,实现用户注册和登录",它会帮你从安装依赖、创建表、写 API 路由到前端表单一步步搞定。

小结

  • 数据库是专门存储和管理数据的系统,程序关闭数据也不会丢
  • 关系型数据库(PostgreSQL、MySQL)用表格存数据,用 SQL 查询
  • 非关系型数据库(MongoDB、Redis)更灵活,适合特定场景
  • 前端不能直接访问数据库,必须通过 API 中转
  • 数据库密码等敏感信息放在环境变量
  • PostgreSQL 是现代项目的首选数据库