SQLite3简介
SQLite3是一款轻量级的、基于文件的开源关系型数据库引擎,由 D. Richard Hipp 于 2000 年首次发布。它遵循 SQL 标准,但与传统的数据库系统不同,SQLite 并不运行在独立的服务器进程中,而是作为一个嵌入式数据库引擎直接集成到应用程序中。其所有的数据结构(包括表、索引、事务日志等)都保存在一个单一的 .db 文件中。
SQLite 的设计理念是“零配置、开箱即用”,开发者只需将其动态库链接进应用程序,就可以直接进行数据库操作,无需安装数据库服务或进行网络配置。
SQLite3 是 SQLite 的第三个主要版本,相较前代有更强的兼容性和更完整的 SQL 支持,是目前最常用的版本。
sqlite3安装
ubunto下安装
|
1
|
sudo apt install sqlite3
|
sqlite命令
首先在中断输入sqlite3,获取命令清单时使用**.help**,红框中为部分sqlite命令

常用命令
1、 .exit:退出sqlite,.quit也可以退出
2、.headers ON|OFF:开启或关闭头部显示
3、.help:显示消息
4、.show:显示各种设置信息
5、.tables:显示数据库中存在的表
6、.schema 表名:显示创建表时的语句
sqlite语句
以任何关键字开始,以**;**结束。关键字不区分大小写
常用关键字
- SELECT
- INSERT
- UPDATA
- DELETE
- DROP
创建数据库
创建数据库语法:
|
1
|
sqlite3 DatabaseName.db
|
执行完该语句后,成功创建数据库文件后,会提供一个sqlite>提示符,此时还需要执行下面命令,如果不执行在退出sqlite后,用 ls 查看是没有数据库文件的

红框为没有执行.databases,查看是 没有test_db.db这个文件的
创建表
创建数据库表需要使用CREATE关键字,还需要定义表中的列,以及列的数据类型 可以选择是否需要约束
数据类型
| 存储类 |
描述 |
| NULL |
值是一个NULL值 |
| INTEGER |
带符号整数 |
| REAL |
浮点值 |
| TEXT |
文本字符串,使用UTF-8,UTF-16BE, UTF-16LE存储 |
| BLOB |
blol数据,完全根据他的输入存储 |
约束
- NOT NULL:确保某列不能有空值(常用)
- DEFAULT:当某列没有值时,提供默认值
- UNIQUE:确保某列中的所有值不同
- PRIMARY KEY:唯一标识数据库表中的各行记录(常用)
- CHECK:确保某列中的所有值满足一定条件
PRIMARY KEY 约束唯一标识数据库表中的每个记录。在一个表中可以有多个 UNIQUE 列,但只能有一个主键。在设计数据库表时,主键是很重要的。主键是唯一的 ID。
创建语句
|
1
2
3
4
5
6
7
|
CREATE TABLE TableName (
column1 datatype PRIMARY KEY,
column2 datatype,
column3 datatype,
......
columnN datatype,
);
|
括号内的内容可以理解为:列名称 列的数据类型 和约束条件
例如:创建一个名为人员信息的表,存储姓名、年龄、性别、住址和联系方式,可以使用如下方式创建
|
1
2
3
4
5
6
7
8
|
CREATE TABLE perpolinfo(
id INTEGER PRIMARY KEY autoincrement NOT NULL,
name TEXT NOT NULL,
age INT NOT NULL,
sex TEXT NOT NULL,
address TEXT NOT NULL,
phone TEXT NOT NULL,
);
|
INTEGER:表示数据类型是整形
PRIMARY KEY:表示id的数值唯一,不能出现重复值
autoincrement:表示id自增长,因此在写入数据时可以不写入id值
NOT NULL:表示这一列不能有空值出现,
删除表
添加数据:
-
方式1:
|
1
2
|
INSERT INTO tablename (column1, column2, column3,...columnN)
VALUES(value1, value2, value3,...valueN);
|
values中的值要与表的列对应
-
方式2:
|
1
|
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
|
获取数据
获取全部数据
|
1
|
SELECT * FROM tablename;
|
获取某几列数据
|
1
|
SELECT column1, column2, columnN FROM table_name;
|
有选择的获取某些数据
使用where设置条件
|
1
2
|
SELECT column1, column2, columnN FROM table_name
WHERE [condition]
|
where语句中的条件可以使用比较逻辑运算符
-
比较运算符
| 运算符 |
描述 |
| == |
检查两个操作数是否相等 |
| = |
等于 |
| != |
不等于 |
| > |
大于 |
| < |
小于 |
| >= |
大于等于 |
| <= |
小于等于 |
| !< |
不小于 |
| !> |
不大于 |
-
逻辑运算符
| 运算符 |
描述 |
| AND |
与 |
| OR |
或 |
| EXISTS |
在满足一定条件的指定表中搜索行的存在 |
| IN |
把某个值与一系列指定列表的值进行比较,例如where id in (20,27)表示筛选id在20到27范围内的数据 |
| NOT IN |
IN 运算符的对立面 |
| LIKE |
把某个值与使用通配符运算符的相似值进行比较 |
| NOT |
NOT 运算符是所用的逻辑运算符的对立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等 |
| IS NULL |
NULL 运算符用于把某个值与 NULL 值进行比较 |
| IS |
IS 运算符与 = 相似 |
| IS NOT |
IS NOT 运算符与 != 相似 |
| UNIQUE |
UNIQUE 运算符搜索指定表中的每一行,确保唯一性 |
有多个筛选条件时可以使用and或or
|
1
2
|
SELECT column1, column2, columnN FROM table_name
WHERE [condition1] AND [condition2]...AND [conditionN];
|
where语句
上面提到的where可以用来筛选数据,所以where不仅可以与select联合使用,也可以与updata、delete语句联合使用
与AND一起使用
|
1
2
|
SELECT column1, column2, columnN FROM table_name
WHERE [condition1] AND [condition2]...AND [conditionN];
|
AND链接的是多个筛选条件,有与的意思
与OR一起使用
|
1
2
|
SELECT column1, column2, columnN FROM table_name
WHERE [condition1] OR [condition2]...OR [conditionN]
|
OR 有或的意思
与like一起使用
LIKE 运算符是用来匹配通配符指定模式的文本值,这里有两个通配符与 LIKE 运算符一起使用:
- 百分号 %,代表零个、一个或多个数字或字符。
- 下划线 _,代表一个单一的数字或字符。
这些符号可以被组合使用
语法
|
1
2
|
SELECT column_list FROM table_nameWHERE column LIKE 'XXXX%'
xxxx表示任意字符串
|
与IN一起使用
|
1
2
3
|
SELECT column1, column2....columnN
FROM table_name
WHERE column_name IN (val-1, val-2,...val-N);
|
更新数据
可以使用带有 WHERE 子句的 UPDATE 查询来更新选定行,否则所有的行都会被更新。
|
1
2
3
|
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
|
删除数据
可以使用带有 WHERE 子句的 DELETE 查询来删除选定行,否则所有的记录都会被删除。
|
1
|
DELETE FROM table_name WHERE [condition];
|
统计个数
|
1
2
3
|
SELECT COUNT(column_name)
FROM table_name
WHERE CONDITION;
|
|