← 第 4 关 – 数据专家

第 4/6 课 ⏱ 45 分钟 高级版

SQLite——单个文件里的数据库

在 Node.js 里安装 SQLite,把第一行数据存进表里。

SQLite 是什么

SQLite 是存在 单个文件 里的数据库(比如 web.db)。不用装大服务器——适合学习和中小型项目。里面的数据 Node.js 重启后还在。

在 Node.js 里我们用 better-sqlite3 包:

cd my-server
npm install better-sqlite3

跟我看:表和第一条记录

server.js(或新建 database.js 再 import):

const Database = require("better-sqlite3");
const db = new Database("web.db");

// Create the table if it doesn't exist yet
db.exec(`
  CREATE TABLE IF NOT EXISTS vzkazy (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    jmeno TEXT NOT NULL,
    text TEXT NOT NULL,
    vytvoreno TEXT DEFAULT CURRENT_TIMESTAMP
  )
`);

// Insert one row
const vloz = db.prepare("INSERT INTO vzkazy (jmeno, text) VALUES (?, ?)");
vloz.run("Martin", "First message in the database! 🎉");

// Read all rows
const vse = db.prepare("SELECT * FROM vzkazy").all();
console.log(vse);

运行 node server.js(或短测试脚本)。控制台会看到对象数组。项目文件夹里出现 web.db 文件——那就是整个数据库。

💡

SQL 速览: CREATE TABLE = 新表(像 Excel 里一张表)。INSERT = 加一行。SELECT = 读数据。prepare 里的问号 ?SQL 注入——永远不要把用户文字直接拼进查询字符串!

轮到你了 💪

  1. 在服务器文件夹安装 better-sqlite3
  2. 按例子创建 vzkazy 表(列:id、jmeno、text、vytvoreno)。
  3. INSERT 插入 3 条测试消息
  4. 停脚本,再运行,再 SELECT 一次——数据 还在吗
  5. web.db 加进 .gitignore(生产环境每台服务器有自己的库;有时单独导出)。

检查一下: web.db 存在,重启后数据还在。下一课我们通过 API 把整个留言本连上去。

这堂课你要记住