云计算百科
云计算领域专业知识百科平台

# SQLite 核心复习手册:SQL语法精讲 + 与MySQL/Oracle核心区别

一、SQLite 核心特性

SQLite是无服务器、单文件、零配置、ACID兼容的嵌入式关系型数据库,核心库仅百KB,广泛用于移动端、桌面应用、IoT、本地缓存与单元测试。

  • 无需安装服务,直接读写.db/.sqlite文件

  • 支持标准SQL-92子集,轻量易用

  • 动态类型+类型亲和性,兼容主流数据库语法


二、SQLite 核心SQL语法(复习重点)

2.1 数据类型(必记)

SQLite内部只有5种存储类型,列声明仅为类型亲和性(非强制校验)。

存储类型说明兼容声明
INTEGER 整数(1/2/3/4/6/8字节) INT/BIGINT/TINYINT
TEXT 字符串(UTF-8/16) CHAR/VARCHAR/TEXT
REAL 浮点数(8字节IEEE) FLOAT/DOUBLE
BLOB 二进制数据(原样存储) BLOB
NULL 空值 NULL
提示:3.37.0+支持STRICT表开启严格类型校验。

2.2 DDL 数据定义

建表(带约束)

CREATE TABLE user (
id INTEGER PRIMARY KEY AUTOINCREMENT, — 自增主键
username TEXT NOT NULL UNIQUE, — 非空+唯一
age INTEGER CHECK (age >= 0), — 检查约束
email TEXT COLLATE NOCASE, — 大小写不敏感
create_time TEXT DEFAULT CURRENT_TIMESTAMP — 默认时间
);

常用DDL

— 修改表名
ALTER TABLE user RENAME TO app_user;
— 添加字段
ALTER TABLE app_user ADD COLUMN phone TEXT;
— 删除表
DROP TABLE IF EXISTS app_user;

注意:不支持直接修改字段类型/重命名字段,需新建表迁移数据。

2.3 DML 数据操作

插入(支持冲突处理)

— 常规插入
INSERT INTO user (username, age) VALUES ('zhangsan', 20);
— 冲突替换(唯一键冲突时覆盖)
INSERT OR REPLACE INTO user (username, age) VALUES ('zhangsan', 21);
— 冲突忽略
INSERT OR IGNORE INTO user (username, age) VALUES ('zhangsan', 22);

更新/删除

— 更新(必须加WHERE,否则全表更新)
UPDATE user SET age=22 WHERE id=1;
— 删除
DELETE FROM user WHERE id=1;
— 清空表(无TRUNCATE,用DELETE)
DELETE FROM user;

2.4 DQL 数据查询

基础查询

— 条件+分页
SELECT id, username FROM user WHERE age>18 ORDER BY id DESC LIMIT 10 OFFSET 0;
— 模糊查询
SELECT * FROM user WHERE username LIKE 'zhang%';
— 聚合查询
SELECT COUNT(*), AVG(age) FROM user GROUP BY age HAVING AVG(age)>20;

多表连接

— 内连接
SELECT u.username, o.order_no FROM user u
JOIN orders o ON u.id=o.user_id;
— 左连接
SELECT u.username, o.order_no FROM user u
LEFT JOIN orders o ON u.id=o.user_id;

注意:不支持FULL OUTER JOIN,可通过UNION模拟。

2.5 事务与约束

— 开启事务
BEGIN TRANSACTION;
UPDATE user SET age=23 WHERE id=1;
— 提交
COMMIT;
— 回滚
ROLLBACK;

— 开启外键约束(默认关闭)
PRAGMA foreign_keys = ON;


三、SQLite vs MySQL vs Oracle(核心区别)

对比维度SQLiteMySQLOracle
架构 无服务端(嵌入进程) 客户端/服务端 客户端/服务端
存储 单文件 多文件/表空间 表空间+数据文件
类型系统 动态类型+亲和性 静态强类型 静态强类型
并发 单写多读,高并发弱 MVCC,高并发强 MVCC,企业级并发
高级特性 无存储过程、无用户权限 支持存储过程、触发器 完整企业级特性
部署 零配置,开箱即用 需安装配置 重型部署,专业运维
适用场景 嵌入式、本地缓存 Web应用、中小项目 金融、政企核心系统

四、高频踩坑点

  • 无TRUNCATE:用DELETE FROM 表清空表

  • 字段修改受限:不支持直接改字段名/类型

  • 外键默认关闭:需手动PRAGMA foreign_keys=ON开启

  • 并发写入瓶颈:写操作锁库,不适合高并发写入

  • 无权限系统:文件即权限,依赖操作系统权限控制


  • 五、适用场景总结

    ✅ 推荐使用:移动端/桌面应用、IoT设备、本地数据存储、单元测试、小型工具

    ❌ 不推荐:高并发Web服务、海量数据、多用户协同写入


    六、结语

    SQLite以轻量、零配置为核心优势,语法兼容标准SQL,学习成本低。掌握本文语法与差异点,可快速应对面试与日常开发。建议结合sqlite3命令行或DBeaver实操,加深记忆。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » # SQLite 核心复习手册:SQL语法精讲 + 与MySQL/Oracle核心区别
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!