SQLite 快速入门 Cheat Sheet

核心特点:零配置、单文件存储、跨平台、轻量嵌入式数据库,兼容标准 SQL。

一、核心数据类型(动态类型系统)

  • INTEGER:整数(支持自增主键、布尔值,TRUE=1/ FALSE=0)

  • TEXT:文本字符串(UTF-8/UTF-16/UTF-32 编码,含中文、日期字符串)

  • REAL:浮点数(双精度,存储小数、金额等)

  • BLOB:二进制数据(图片、文件等,原样存储)

  • NUMERIC:自动适配类型(日期、数值等,自动转换格式)

  • 日期存储推荐:TEXT('2025-01-01 12:00:00')或 INTEGER(时间戳)

二、常用 SQL 命令(核心操作)

1. 数据库连接(命令行)

复制代码
sqlite3 test.db  # 创建/连接 test.db 数据库文件

2. 表操作(DDL)

  • 创建表:

    复制代码
    CREATE TABLE [IF NOT EXISTS] 表名 (列名 类型 [约束], ...);
    复制代码
    CREATE TABLE IF NOT EXISTS users (
      id INTEGER PRIMARY KEY,  -- 自增主键
      name TEXT NOT NULL,
      age INTEGER CHECK(age>0),
      email TEXT UNIQUE
    );
  • 查看表结构:PRAGMA table_info(表名);

  • 列出所有表:.tables(命令行辅助命令)

  • 修改表:ALTER TABLE 表名 ADD COLUMN 列名 类型;(仅支持添加列)

  • 删除表:DROP TABLE [IF EXISTS] 表名;

3. 数据操作(DML)

  • 插入数据:

    复制代码
    INSERT INTO 表名 (列1,列2) VALUES (值1,值2);
    复制代码
    INSERT INTO users (name, age) VALUES ('Alice', 25), ('Bob', 30);
  • 查询数据:

    复制代码
    SELECT 列 FROM 表名 [WHERE 条件] [ORDER BY 列] [LIMIT 数量];
    复制代码
    SELECT name, age FROM users WHERE age>20 ORDER BY age DESC LIMIT 10;
  • 更新数据:

    复制代码
    UPDATE 表名 SET 列1=值1 WHERE 条件;
    复制代码
    UPDATE users SET age=26 WHERE name='Alice';
  • 删除数据:

    复制代码
    DELETE FROM 表名 [WHERE 条件];
    复制代码
    DELETE FROM users WHERE name='Bob';

4. 索引与事务

  • 创建索引:CREATE [UNIQUE] INDEX 索引名 ON 表名(列名);(加速查询)

  • 删除索引:DROP INDEX [IF EXISTS] 索引名;

  • 事务操作:

    复制代码
    BEGIN TRANSACTION;  -- 开始事务
    -- 插入/更新/删除操作
    COMMIT;  -- 提交(永久生效)/ ROLLBACK;  -- 回滚(取消操作)

5. 特殊配置(PRAGMA)

  • 开启外键支持:PRAGMA foreign_keys = ON;(默认关闭)

  • 查看建表语句:.schema 表名(命令行)

三、命令行辅助命令(.xxx 格式)

  • .open 文件名:切换数据库文件

  • .header on:显示查询结果列名

  • .mode column:列对齐格式化显示结果

  • .output 文件名:将查询结果导出到文件

  • .read 脚本.sql:执行 SQL 脚本文件

  • .help:查看所有辅助命令

  • .exit/.quit:退出命令行

四、常用场景示例

1. 基础查询(分页 + 过滤)

复制代码
-- 第2页(每页5条):跳过前5条,取5条
SELECT * FROM users WHERE age BETWEEN 18 AND 35 LIMIT 5 OFFSET 5;

2. 关联查询(两表 JOIN)

复制代码
-- 订单表关联用户表,查询用户订单
SELECT u.name, o.amount FROM users u
LEFT JOIN orders o ON u.id = o.user_id;

3. 聚合统计

复制代码
-- 按性别分组,统计人数和平均年龄
SELECT gender, COUNT(*) 人数, AVG(age) 平均年龄 FROM users GROUP BY gender;

4. 空值处理

复制代码
-- 替换空邮箱为默认值
SELECT name, COALESCE(email, 'no-email@test.com') FROM users;

要不要我帮你生成一份可直接复制的 SQL 脚本文件 ,包含上述所有示例命令,下载后可直接通过 .read 命令执行,快速上手实操?

SQLite 创建 / 连接数据库命令

在 SQLite 中,创建数据库和连接数据库的操作是一体的------ 因为 SQLite 数据库以单一文件形式存在,连接一个不存在的文件时,会自动创建该数据库文件。以下是具体命令和用法:

一、核心命令(通过 sqlite3 工具)

1. 创建并连接新数据库
复制代码
sqlite3 数据库文件名.db
  • 数据库文件名.db 不存在,会在当前目录创建该文件(即新数据库),并自动连接。

  • 若文件已存在,则直接连接该数据库。

示例 :创建并连接 mydb.db 数据库:

复制代码
sqlite3 mydb.db

执行后进入 SQLite 交互模式(提示符为 sqlite>),此时可执行 SQL 命令(如建表、插入数据等)。

2. 连接已有数据库

与创建命令完全相同,直接指定已有数据库文件即可:

复制代码
sqlite3 /path/to/existing.db  # 可指定绝对路径或相对路径

示例 :连接当前目录下的 data.db

复制代码
sqlite3 data.db

连接其他目录的数据库(如 /home/user/docs/notes.db):

复制代码
sqlite3 /home/user/docs/notes.db
3. 在交互模式中切换数据库

进入 SQLite 交互模式后,可通过 .open 命令切换到其他数据库:

复制代码
.open 新数据库名.db  # 切换并连接(不存在则创建)

示例 :从当前数据库切换到 newdb.db

复制代码
sqlite> .open newdb.db  # 若newdb.db不存在,会自动创建

二、退出数据库连接

在交互模式中,通过以下命令退出连接:

复制代码
.quit  # 或 .exit

三、关键说明

  1. 无服务器依赖:SQLite 无需启动数据库服务,直接通过文件操作,因此 "连接" 本质是打开文件。

  2. 文件权限:创建数据库时,当前用户需有目录的写入权限,否则会创建失败。

  3. 跨平台兼容 :创建的 .db 文件可在 Windows、Linux、macOS 等系统间直接复制使用,无需格式转换。

总结

操作 命令 示例
创建并连接新数据库 sqlite3 文件名.db sqlite3 mydata.db
连接已有数据库 sqlite3 已有文件名.db sqlite3 /opt/data/old.db
交互模式中切换数据库 .open 目标文件名.db sqlite> .open another.db
退出连接 .quit.exit sqlite> .exit

通过以上命令,可快速完成 SQLite 数据库的创建、连接和切换操作。

相关推荐
杨DaB2 小时前
【MySQL】03 数据库的CRUD
数据库·mysql·adb
DarkAthena2 小时前
【DuckDB】活用marco以兼容GaussDB的SQL执行
数据库·sql·duckdb
沐浴露z2 小时前
一张思维导图理清【Redis】
数据库·redis·缓存
q***33372 小时前
mysql查看binlog日志
数据库·mysql
q***51892 小时前
MYSQL批量UPDATE的两种方式
数据库·mysql
x***01062 小时前
SQL 注入漏洞原理以及修复方法
网络·数据库·sql
百***81273 小时前
【HTML+CSS】使用HTML与后端技术连接数据库
css·数据库·html
6***3493 小时前
MySQL项目
数据库·mysql
木井巳3 小时前
【MySQL数据库】数据库基础
数据库·mysql