news 2026/4/23 11:12:20

学习笔记——sqlite3 数据库基础

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
学习笔记——sqlite3 数据库基础

sqlite3 数据库

数据库基础概念

1. 数据库定义

数据库是数据的仓库,用于存储、管理和操作海量数据。

2. 数据库层级结构

数据库(Database) → 表(Table) → 记录(Record/Row) → 字段(Field/Column)

3. 主要分类

类型代表产品特点
大型数据库Oracle, DB2企业级,功能全面,收费
中型数据库MySQL, SQL Server, PostgreSQL开源/商业,广泛应用
小型数据库SQLite, PowerDB轻量级,嵌入式
内存数据库Redis, Memcached高性能,内存存储

4. 核心名词解释

  • DB (Database): 数据库,数据存储的物理文件或逻辑集合

  • DBMS (Database Management System): 数据库管理系统,如MySQL, Oracle等

  • MIS (Management Information System): 管理信息系统

  • OA (Office Automation): 办公自动化系统

sqlite3 特点

核心优势

技术规格

  • 开发语言: C语言

  • 代码量: 约10,000行

  • 文件大小: < 10MB

  • 最大数据库: 2TB

  • 官方网站: www.sqlite.org

  • 许可证: 公共领域 (Public Domain)安装与配置

Ubuntu/Debian 系统

# 安装命令行工具 sudo apt-get update sudo apt-get install sqlite3 # 安装开发库(编程需要) sudo apt-get install libsqlite3-dev # 验证安装 sqlite3 --version

编译选项

# 基本编译 gcc program.c -o program -lsqlite3 # 带调试信息 gcc -g program.c -o program -lsqlite3 # 指定C标准 gcc -std=c99 program.c -o program -lsqlite3 # 显示所有警告 gcc -Wall -Wextra program.c -o program -lsqlite3

sqlite3 命令行操作

启动与退出

# 启动SQLite3(不打开数据库) sqlite3 # 启动并打开数据库 sqlite3 mydatabase.db # 退出SQLite3 .quit # 或 .q 或 .exit

数据库管理命令

命令功能示例
.help显示帮助信息.help
.databases显示所有数据库.databases
.tables显示所有表.tables
.schema显示表结构.schema users
.mode设置输出模式.mode column
.headers显示/隐藏列名.headers on
.output输出到文件.output result.txt
.import导入数据.import data.csv users
.dump导出数据库.dump > backup.sql

常用示例

sql

-- 1. 查看当前数据库 .databases -- 2. 查看所有表 .tables -- 3. 查看表结构(建表语句) .schema users -- 或 .schema -- 4. 美化输出 .headers on .mode column .width 10 20 10 -- 5. 导出数据 .output data.txt SELECT * FROM users; .output stdout

📝 SQL 语句详解

1. 创建表 (CREATE TABLE)

-- 基本语法 CREATE TABLE table_name ( column1 datatype constraints, column2 datatype constraints, ... ); -- 示例:创建用户表 CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER CHECK(age > 0), email TEXT UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 带索引创建 CREATE TABLE products ( id INTEGER PRIMARY KEY, name TEXT, price REAL, category TEXT, UNIQUE(name, category) ); CREATE INDEX idx_price ON products(price);

2. 删除表 (DROP TABLE)

-- 删除表(慎用!) DROP TABLE users; -- 先检查是否存在(SQLite特有) DROP TABLE IF EXISTS users;

3. 插入数据 (INSERT)

-- 方式1:指定所有列 INSERT INTO users VALUES (1, '张三', 25, 'zhangsan@email.com'); -- 方式2:指定部分列(推荐) INSERT INTO users (name, age, email) VALUES ('李四', 30, 'lisi@email.com'); -- 方式3:插入多行 INSERT INTO users (name, age) VALUES ('王五', 28), ('赵六', 35), ('孙七', 22);

4. 查询数据 (SELECT)

-- 查询所有列 SELECT * FROM users; -- 查询指定列 SELECT name, age FROM users; -- 条件查询 SELECT * FROM users WHERE age > 25; -- 多条件 SELECT * FROM users WHERE age > 20 AND age < 30; -- 或条件 SELECT * FROM users WHERE age < 20 OR age > 60; -- IN 查询 SELECT * FROM users WHERE age IN (20, 25, 30); -- 模糊查询 SELECT * FROM users WHERE name LIKE '张%'; -- 排序 SELECT * FROM users ORDER BY age DESC; -- 限制数量 SELECT * FROM users LIMIT 10; -- 分页查询 SELECT * FROM users LIMIT 10 OFFSET 20; -- 跳过20条,取10条 -- 分组统计 SELECT age, COUNT(*) as count FROM users GROUP BY age HAVING count > 1; -- 联合查询 SELECT u.name, o.order_id FROM users u JOIN orders o ON u.id = o.user_id;

5. 更新数据 (UPDATE)

-- 更新所有行(慎用!) UPDATE users SET age = age + 1; -- 条件更新 UPDATE users SET age = 30, email = 'new@email.com' WHERE name = '张三'; -- 使用子查询更新 UPDATE users SET age = ( SELECT AVG(age) FROM users ) WHERE age IS NULL;

6. 删除数据 (DELETE)

-- 删除所有数据(慎用!) DELETE FROM users; -- 条件删除 DELETE FROM users WHERE age < 18; -- 删除重复数据(保留最小id) DELETE FROM users WHERE id NOT IN ( SELECT MIN(id) FROM users GROUP BY name, age );

7. 修改表结构 (ALTER TABLE)

-- SQLite支持的ALTER操作有限 -- 重命名表 ALTER TABLE old_name RENAME TO new_name; -- 添加列 ALTER TABLE users ADD COLUMN phone TEXT; -- SQLite不支持删除列,需要: -- 1. 创建新表 -- 2. 复制数据 -- 3. 删除旧表 -- 4. 重命名新表
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 7:20:56

EMI滤波电路设计要点:共模差模干扰抑制策略

如何让电源“静音”&#xff1f;深入拆解EMI滤波设计中的共模与差模抑制策略 你有没有遇到过这样的情况&#xff1a;电路功能完全正常&#xff0c;示波器上看电压也稳定&#xff0c;可一上电&#xff0c;EMC测试就挂在30MHz附近&#xff0c;辐射超标十几dB&#xff1f;或者设备…

作者头像 李华
网站建设 2026/4/18 12:10:03

Altium Designer中3D视图辅助PCB布线的图解说明

用好Altium Designer的3D视图&#xff0c;让PCB布线不再“盲走”你有没有遇到过这样的情况&#xff1a;板子焊好了才发现某个电解电容太高&#xff0c;盖不上外壳&#xff1b;或者调试排针被散热片挡得严严实实&#xff0c;探针插不进去&#xff1f;更惨的是&#xff0c;产品都…

作者头像 李华
网站建设 2026/4/22 13:02:17

超详细版FPGA数字频率计设计流程解析

从零构建高精度FPGA数字频率计&#xff1a;实战设计全解析 你有没有遇到过这样的场景&#xff1f;手头有个信号源&#xff0c;想测一下输出频率&#xff0c;结果示波器看不准&#xff0c;单片机做的计数器又卡在低频段误差爆表——这时候&#xff0c;一个 基于FPGA的数字频率计…

作者头像 李华
网站建设 2026/4/17 3:12:36

恒翼能冲刺深交所:上半年营收5.95亿,净利5701万 拟募资8.4亿

雷递网 雷建平 12月29日广东恒翼能科技股份有限公司&#xff08;简称&#xff1a;“恒翼能”&#xff09;日前递交招股书&#xff0c;准备在深交所创业板上市。恒翼能计划募资8.4亿元&#xff0c;其中&#xff0c;5.66亿元用于恒翼能锂电设备智能制造基地项目&#xff0c;1.73亿…

作者头像 李华
网站建设 2026/4/20 12:47:29

Git config全局设置用户名邮箱用于PyTorch提交

Git 配置与 PyTorch 开发环境的工程实践 在现代 AI 项目中&#xff0c;一个看似微不足道的配置问题&#xff0c;往往能在关键时刻引发连锁反应。比如&#xff0c;当你在基于 pytorch/pytorch:2.8-cuda11.8-devel 的容器里完成一轮模型调优&#xff0c;准备提交代码时&#xff0…

作者头像 李华
网站建设 2026/4/23 0:55:08

GitHub Projects看板管理PyTorch开发任务

GitHub Projects看板管理PyTorch开发任务 在深度学习项目日益复杂的今天&#xff0c;一个常见的困境是&#xff1a;模型代码写完了&#xff0c;却因为环境不一致、依赖冲突或任务进度模糊而迟迟无法交付。尤其是在团队协作中&#xff0c;“在我机器上能跑”成了最令人头疼的说辞…

作者头像 李华