SQLite备忘笔记
一. SQLite简介
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。
就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。
SQLite特点
- 不需要一个单独的服务器进程或操作的系统(无服务器的)。
- SQLite 不需要配置,这意味着不需要安装或管理。
- 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
- SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
- SQLite 是自给自足的,这意味着不需要任何外部的依赖。
- SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
- SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
- SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
- SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。
二. 安装SQLite
- 下载
https://www.sqlite.org/download.html 我们直接选择预编译版本就行了
-
安装
创建文件夹 C:\sqlite,并在此文件夹下解压上面两个压缩文件,将得到 sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件。 -
创建环境变量
添加 C:\sqlite 到 PATH 环境变量 -
测试环境
命令行输入:sqlite3 --version
可以查看版本信息 输入sqlite3
可以进入sqlite3
三. SQLite 的点命令
如需获取可用的点命令的清单,可以在任何时候输入 ".help"
具体点命令
1. 退出 SQLite 提示符
.exit
.quit
2. 显示各种设置的当前值
.show
3. 开启或关闭统计
.stats ON|OFF
#例如:
.stats ON
4. 超时时间
.timeout MS
5. 开启或关闭头部显示
.header(s) ON|OFF
6. 设置输出模式
.mode MODE
MODE | 说明 |
---|---|
csv | CSV文件, 逗号分隔值的输出 |
column | 左对齐的列输出 |
html | HTML 的 <table> 代码 |
line | 每行一个值 |
list | 由 .separator 字符串分隔的值 |
tabs | 由 Tab 分隔的值 |
insert | TABLE 表的 SQL 插入(insert)语句 |
tcl | TCL 列表元素 |
7. 备份数据库到文件
.backup ?DB? FILE
# 例如:
.backup main c:\sqlite
8. 发生错误后是否停止
.bail ON|OFF
# 例如:
.bail ON
9. 列出数据库的名称及其所依附的文件
.databases
四. 数据库操作
1. 创建数据库
#在命令行中
sqlite3 students.db
# 或者在sqlite3命令行中:
.open students.db
# 存在则直接会打开,不存在就创建它。
五. 表操作
1. 创建表
CREATE TABLE database_name.table_name(
column1 datatype PRIMARY KEY(one or more columns),
column2 datatype,
column3 datatype,
.....
columnN datatype,
);
- 可以使用 SQLIte 命令中的 .tables 命令来验证表是否已成功创建
- 可以使用
.schema
查看创建信息 (也可以只查看单个的.schema SCHOOL
)
关于每一列的约束.可以参考下表:
约束 | 说明 |
---|---|
NOT NULL | 确保某列不能有 NULL 值 |
UNIQUE | 确保某列中的所有值是不同的 |
PRIMARY KEY | 唯一标识数据库表中的各行/记录 |
DEFAULT | 当某列没有指定值时,为该列提供默认值 |
AUTOINCREMENT | 自动递增 |
CHECK | CHECK 约束确保某列中的所有值满足一定条件 |
例如:
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL UNIQUE,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL DEFAULT 50000.00,
TAXRATE REAL CHECK(TAXRATE> 0)
);
2. 删除表
DROP TABLE database_name.table_name;
#例如: DROP TABLE TEST
六. 数据操作
1. 插入数据(Insert 语句)
方法1: 要确保值的顺序与列在表中的顺序一致
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
方法2:
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]
VALUES (value1, value2, value3,...valueN);
在这里,column1, column2,...columnN 是要插入数据的表中的列的名称。
例如
INSERT INTO STUDENT VALUES (1,'TOM',13,'tingshua');
2. 更新数据
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
例如:
UPDATE STUDENT SET AGE=16 WHERE NAME='TOM';
3. 删除数据
DELETE FROM table_name
WHERE [condition];
七. 查询操作
1. SELECT语句
SELECT * FROM table_name;
SELECT column1, column2, columnN FROM table_name;
2. 带条件的查询
SELECT * FROM STUDENT WHERE AGE>12;
SELECT * FROM STUDENT WHERE AGE%2 == 1;
SELECT * FROM STUDENT WHERE AGE IN (11,13);
SELECT * FROM STUDENT WHERE AGE BETWEEN 10 AND 15;
SELECT * FROM STUDENT WHERE NAME LIKE 'a%%';
下面是sqlite常用的运算符
3. 方言LIMIT OFFSET
SQLite 的 LIMIT 子句用于限制由 SELECT 语句返回的数据数量。
4. 排序 ORDER BY
SQLite 的 ORDER BY 子句是用来基于一个或多个列按升序或降序顺序排列数据。
5. 分组 GROUP BY
SQLite 的 GROUP BY 子句用于与 SELECT 语句一起使用,来对相同的数据进行分组。
在 SELECT 语句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前。
假设我们有这样一个表:
我们看到里面有三个James, 两个paul , 我们可以把他们分别视为一组来统计
6. HAVING子句 (子筛选)
HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果。
WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件。
7. DISTINCT 消除所有重复
SQLite 的 DISTINCT 关键字与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。
有可能出现一种情况,在一个表中有多个重复的记录。当提取这样的记录时,DISTINCT 关键字就显得特别有意义,它只获取唯一一次记录,而不是获取重复记录。
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]
八. 常用函数
1. COUNT 函数
COUNT 聚集函数是用来计算一个数据库表中的行数。
SELECT COUNT(AGE) FROM STUDENT WHERE AGE>14;
2. MAX 函数
MAX 聚合函数允许我们选择某列的最大值
SELECT MAX(salary) FROM COMPANY;
3. MIN 函数
MIN 聚合函数允许我们选择某列的最小值
4. AVG 函数
SELECT AVG(salary) FROM COMPANY;
5. SUM 函数
SUM 聚合函数允许为一个数值列计算总和。
SELECT SUM(salary) FROM COMPANY;
6. ABS 函数
ABS 函数返回数值参数的绝对值。
SELECT ABS(salary) FROM COMPANY;
7. UPPER 函数 / LOWER 函数
UPPER 函数把字符串转换为大写字母。 / SQLite LOWER 函数把字符串转换为小写字母。
SELECT UPPER(NAME),AGE FROM STUDENT;
8. LENGTH 函数
LENGTH 函数返回字符串的长度。
SELECT UPPER(NAME),AGE FROM STUDENT WHERE LENGTH(NAME)=3;
九. 事务控制
1. 开始事务
BEGIN;
2. 提交事务
COMMIT;
3. 回滚事务
ROLLBACK;