目录 SQLite3 (一) 一、 简介 1、 优点 2、 常用命令 2.1 DDL - 数据定义语言 2.2 DML - 数据操作语言 2.3 DQL - 数据查询语言 二、 SQLite命令 三、 数据类型 四、 数据库操作 1、 创建 2、 导出 3、
- SQLite3 (一)
- 一、 简介
- 1、 优点
- 2、 常用命令
- 2.1 DDL - 数据定义语言
- 2.2 DML - 数据操作语言
- 2.3 DQL - 数据查询语言
- 二、 SQLite命令
- 三、 数据类型
- 四、 数据库操作
- 1、 创建
- 2、 导出
- 3、 附加
- 4、 分离
- 五、 表操作
- 1、 创建表
- 2、 删除表
- 3、 修改表
- 4、 插入信息
- 5、 查找信息
- 6、 修改信息
- 六、 运算符
- 1、 算术运算符
- 2、 比较运算符
- 3、 逻辑运算符
- 4、 位运算符
- 5、 表达式
- 七、 表操作高级
- 1、 查找
- 2、 删除选中数据
- 3、 模糊查找
- 3.1 LIKE匹配
- 3.2 Glob匹配
- 4、 限制返回数据的数量
- 5、 排序
- 6、 分组
- 7、 查找唯一内容
- 一、 简介
- 不需要一个单独的服务器进程或操作的系统(无服务器的)
SQLite
不需要配置,这意味着不需要安装或管理- 一个完整的
SQLite
数据库是存储在一个单一的跨平台的磁盘文件 SQLite
是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiBSQLite
是自给自足的,这意味着不需要任何外部的依赖SQLite
事务是完全兼容 ACID 的,允许从多个进程或线程安全访问SQLite
支持 SQL92(SQL2)标准的大多数查询语言的功能SQLite
使用 ANSI-C 编写的,并提供了简单和易于使用的 APISQLite
可在UNIX(Linux, Mac OS-X, Android, iOS)
和Windows(Win32, WinCE, WinRT)
中运行
csv 逗号分隔的值
column 左对齐的列
html HTML 的 <table> 代码
insert TABLE 表的 SQL 插入(insert)语句
line 每行一个值
list 由 .separator 字符串分隔的值
tabs 由 Tab 分隔的值
tcl TCL 列表元素
三、 数据类型.schema sqlite_master -- 显示主表信息,里面存储了创建的所有的表的信息,其只读
同时,还有数据的亲和类型,大家可以通过:【https://www.runoob.com/sqlite/sqlite-data-types.html】来了解
四、 数据库操作 1、 创建sqlite3 DatabaseName.db
or
.open test.db
--如果数据库存在,则打开,不存在则创建
2、 导出
sqlite3 testDB.db .dump > testDB.sql --将sqlite里面的数据全部导出到SQL文件中
sqlite3 testDB.db < testDB.sql --将SQL里面的数据全部导入到sqlite文件中
3、 附加
ATTACH DATABASE file_name AS database_name; --将一个数据库附加到另一个数据库中
连接一中对于附加数据库的数据更新也同步回了原数据库的连接
SQLite的Attach DB机制是一种非常宽松的机制,对于附加数据库,可以同步和被同步
4、 分离DETACH DATABASE 'Alias-Name'; --将名字为alias-name的数据库取消附加
五、 表操作
1、 创建表
SQLite 的 CREATE TABLE 语句用于在任何给定的数据库创建一个新表。创建基本表,涉及到命名表、定义列及每一列的数据类型。
CREATE TABLE database_name.table_name(
column1 datatype PRIMARY KEY(one or more columns),
column2 datatype,
column3 datatype,
.....
columnN datatype,
);
2、 删除表
DROP TABLE database_name.table_name;
3、 修改表
ALTER TABLE database_name.table_name RENAME TO new_table_name; --修改表名
ALTER TABLE database_name.table_name ADD COLUMN column_def...; --添加列
Alter
:不能进行其他的操作
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]
VALUES (value1, value2, value3,...valueN); --给指定列添加值
or
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN); --如果为所有列添加值,则可以不用指定
使用另一张表,来填充这张表
INSERT INTO first_table_name [(column1, column2, ... columnN)]
SELECT column1, column2, ...columnN
FROM second_table_name
[WHERE condition];
5、 查找信息
SELECT column1, column2, columnN FROM table_name; --指定列查找
SELECT * FROM table_name; --查找所有列的信息
实例:
SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'COMPANY'; --列出数据库中创建的表,并且该表的名字为COMPANY的表的完整信息
6、 修改信息
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
六、 运算符
1、 算术运算符
如:
.mode line --把内容在一行输出
SELECT 10 + 20 --计算10 + 20的值
2、 比较运算符
在sqlite
里面,使用0和1来表示假真
SELECT column1, column2, columnN
FROM table_name
WHERE [CONDITION | EXPRESSION];
sqlite里面还有一些内置的表达式
七、 表操作高级 1、 查找SELECT column1, column2, columnN
FROM table_name
WHERE [condition] -- 根据条件查找内容,可以结合AND和OR运算符来使用
实例:
SELECT AGE FROM COMPANY
WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000); --当存在年薪大于65000的人时,返回公司里面的所有年龄
2、 删除选中数据
DELETE FROM table_name
WHERE [condition]; --删除指定条件的数据
DELETE FROM COMPANY; --删除表中的所有数据
3、 模糊查找
3.1 LIKE匹配
通配符:
%
:零个、一个或多个数字或字符_
:一个单一的数字或字符
实例:
这个大小写敏感
通配符:
*
:零个、一个或多个数字或字符?
:一个单一的数字或字符
实例:
SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows];
SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows] OFFSET [row num]; --行数向下偏移
例子:
SELECT *
FROM table_name
LIMIT 3 OFFSET 2; --选取3到5行数据
5、 排序
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC]; --ASC升序,DESC降序,如果有多列数据,则,先排第一列,如果第一列数据相同,再看第二列,以此类推
例如:
SELECT * FROM COMPANY ORDER BY SALARY ASC; --根据薪水升序排序
6、 分组
SQLite 的 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
实例:
sqlite> SELECT * FROM users
...> ;
id name pwd
-- ---- ---
1 kun 123
2 kun 124
3 q 234
sqlite> SELECT * FROM users GROUP BY name; --选择第一个数据
id name pwd
-- ---- ---
1 kun 123
3 q 234
HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果。
WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件(使用 HAVING 子句条件一定要作用在由 GROUP BY 子句指定列上)
7、 查找唯一内容它只获取唯一一次记录,而不是获取重复记录
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]
例如:
SELECT DISTINCT name FROM COMPANY; -- 名字这列重复的内容会自动去重