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;
作者:熊爸天下_56c7
链接:https://www.jianshu.com/p/e005a747bd37