SQlite笔记
SQlite
SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。源代码不受版权的限制。
SQlite的进程并不是一个独立的进程,而是可以按照需求进行静态或者动态的连接的,可以直接访问存储文件
命令包括:CREATE、SELECT、INSERT、UPDATE、DELETE 和 DROP。
作用如下:
DDL - 数据定义语言
命令 | 描述 |
---|---|
CREATE | 创建一个新的表,一个表的视图,或者数据库中的其他对象。 |
ALTER | 修改数据库中的某个已有的数据库对象,比如一个表。 |
DROP | 删除整个表,或者表的视图,或者数据库中的其他对象。 |
DML - 数据操作语言
命令 | 描述 |
---|---|
INSERT | 创建一条记录。 |
UPDATE | 修改记录。 |
DELETE | 删除记录。 |
DQL - 数据查询语言
命令 | 描述 |
---|---|
SELECT | 从一个或多个表中检索某些记录。 |
SQlite的语法
-
大小写敏感性
-
注释——以--开始直到输入结束或换行,多行注释以/* */包括
-
所有语句以关键字开始,以;结束
数据类型
常用的就是存储类型
存储类 | 描述 |
---|---|
NULL | 值是一个 NULL 值。 |
INTEGER | 值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。 |
REAL | 值是一个浮点值,存储为 8 字节的 IEEE 浮点数字。 |
TEXT | 值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。 |
BLOB | 值是一个 blob 数据,完全根据它的输入存储。 |
以及TEXT文本类型和INTEGER
创建数据库
$ sqlite3 DatabaseName.db
示例:
$ sqlite3 testDB.db
SQLite version 3.7.15.2 2013-01-09 11:53:05
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>--sqlite3 命令在成功创建数据库文件之后,将提供一个 sqlite> 提示符
表示创建了一个文件testDB.db
sqlite>.quit
$
退出数据库
.databases 命令来检查数据库是否在数据库列表
.dump 点命令来导出完整的数据库在一个文本文件中
$sqlite3 testDB.db .dump > testDB.sql
恢复命令:
$sqlite3 testDB.db < testDB.sql
创建表
创建表格的一个基本示例:
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
CREATE TABLE 是告诉数据库系统创建一个新表的关键字,后面跟着表的唯一的名称或标识
ID 作为主键,NOT NULL 的约束表示在表中创建纪录时这些字段不能为 NULL
sqlite>.tables
COMPANY DEPARTMENT
列出了数据库中所有的表格,可以用来检查是否成功创建了表
schema 表格名可以得到表的完整信息
删除表
DROP TABLE database_name.table_name;
选择指定带有表明的数据库名称进行删除,删除后可以用.tables确认是否删除成功
插入数据INSERT
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]
VALUES (value1, value2, value3,...valueN);
如果要为表中的所有列添加值,可以不需要在 SQLite 查询中指定列名称,但要确保值的顺序与列在表中的顺序一致
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
查询数据SELECT
SELECT column1, column2, columnN FROM table_name;
如果要获取所有的字段:
SELECT * FROM table_name;
更新数据UPDATE
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
删除数据DELETE
DELETE FROM table_name
WHERE [condition];
WHERE子句
WHERE 子句用于指定从一个表或多个表中获取数据的条件
当满足给定条件时,从表中返回特定值,通过WHERE子句结合上述四种语句,就可以实现数据的增删改查
SELECT column1, column2, columnN
FROM table_name
WHERE [condition]
运算符
算术运算符、比较运算符、&、|和C语言、python中的+,-,*,/,%一样
逻辑运算符:
运算符 | 描述 |
---|---|
AND | AND 运算符允许在一个 SQL 语句的 WHERE 子句中的多个条件的存在。 |
BETWEEN | BETWEEN 运算符用于在给定最小值和最大值范围内的一系列值中搜索值。 |
EXISTS | EXISTS 运算符用于在满足一定条件的指定表中搜索行的存在。 |
IN | IN 运算符用于把某个值与一系列指定列表的值进行比较。 |
NOT IN | IN 运算符的对立面,用于把某个值与不在一系列指定列表的值进行比较。 |
LIKE | LIKE 运算符用于把某个值与使用通配符运算符的相似值进行比较。 |
GLOB | GLOB 运算符用于把某个值与使用通配符运算符的相似值进行比较。GLOB 与 LIKE 不同之处在于,它是大小写敏感的。 |
NOT | NOT 运算符是所用的逻辑运算符的对立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定运算符。 |
OR | OR 运算符用于结合一个 SQL 语句的 WHERE 子句中的多个条件。 |
IS NULL | NULL 运算符用于把某个值与 NULL 值进行比较。 |
IS | IS 运算符与 = 相似。 |
IS NOT | IS NOT 运算符与 != 相似。 |
|| | 连接两个不同的字符串,得到一个新的字符串。 |
UNIQUE | UNIQUE 运算符搜索指定表中的每一行,确保唯一性(无重复)。 |
AND运算符
SELECT column1, column2, columnN
FROM table_name
WHERE [condition1] AND [condition2]...AND [conditionN];
AND 运算符允许在一个 SQL 语句的 WHERE 子句中的多个条件的存在,只有当所有条件都为真(true)时,整个条件为真(true)
OR运算符
SELECT column1, column2, columnN
FROM table_name
WHERE [condition1] OR [condition2]...OR [conditionN]
只要有一个为真,整个条件为真
LIKE子句
LIKE 运算符是用来匹配通配符指定模式的文本值的,如果搜索表达式与模式表达式匹配,LIKE 运算符将返回真(true),也就是 1
百分号(%)代表零个、一个或多个数字或字符,下划线(_)代表一个单一的数字或字符,他们配合LIKE使用
WHERE column LIKE 'XXXX%'
WHERE column LIKE '%XXXX%'
WHERE column LIKE 'XXXX_'
WHERE column LIKE '_XXXX'
WHERE column LIKE '_XXXX_'
XXXX 可以是任何数字或字符串值
GLOB子句
GLOB 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,GLOB 运算符将返回真(true),也就是 1
与 LIKE 运算符不同的是,GLOB 是大小写敏感的
-
*
:匹配零个、一个或多个数字或字符。 -
?
:代表一个单一的数字或字符。 -
[...]
:匹配方括号内指定的字符之一。例如,[abc]
匹配 "a"、"b" 或 "c" 中的任何一个字符。 -
[^...]
:匹配不在方括号内指定的字符之一。例如,[^abc]
匹配不是 "a"、"b" 或 "c" 中的任何一个字符的字符。
WHERE column GLOB 'XXXX*'
WHERE column GLOB 'XXXX?'
WHERE column GLOB '????'
LIMIT子句
LIMIT 子句用于限制由SELECT语句返回的数据数量
SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows]
QRDER BY子句
ORDER BY 子句是用来基于一个或多个列按升序或降序顺序排列数据
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
-
ASC 默认值,从小到大,升序排列
-
DESC 从大到小,降序排列
GROUP BY子句
GROUP BY 子句用于与SELECT语句一起使用,来对相同的数据进行分组
在SELECT语句中,GROUP BY子句放在WHERE子句之后,放在ORDER BY子句之前
SELECT column-list
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2....columnN
ORDER BY column1, column2....columnN
HAVING子句
HAVING子句允许指定条件来过滤将出现在最终结果中的分组结果
WHERE子句在所选列上设置条件,HAVING子句在由GROUP BY子句创建的分组上设置条件
位置:
SELECT FROM WHERE GROUP BY HAVING ORDER BY
HAVING子句必须放在GROUP BY子句之后,必须放在ORDER BY子句之前
DISTINCT关键字
DISTINCT 关键字与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!