SQLite 是一款轻型的数据库,在嵌入式设备中应用十分广泛,它支持Windows/Linux/Unix等等主流的操作系统,其源代码不受版权限制。
优点:
- 不需要安装与配置,以文件的形式作为数据库
- 轻量、小型,对嵌入式设备十分友好
- 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问
- 支持 SQL92(SQL2)标准的大多数查询语言的功能
SQLite的命令包括:
| 分类 | 命令 | 描述 |
|---|---|---|
| 表操作 | CREATE | 创建表 |
| 表操作 | ALTER | 修改表 |
| 表操作 | DROP | 删除表 |
| 记录操作 | INSERT | 插入记录 |
| 记录操作 | UPDATE | 修改更新表记录 |
| 记录操作 | DELETE | 删除记录 |
| 检索 | SELECT | 查询记录 |
基本操作
表操作
创建和删除表
创建格式:
CREATE TABLE IF NOT EXISTS 表名 (列名 类型)
删除格式:DROP 表名1
2
3
4CREATE TABLE IF NOT EXISTS "student" (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
name VARCHAR(30) NOT NULL,
age FLOAT);更新sqlite_sequence
由于在Sqlite中使用自增长字段,引擎会自动产生一个
sqlite_sequence表,用于记录每个表的自增长字段的已使用的最大值,所以要一起更新下。如果有设置自增长,则跳过此步骤。1
UPDATE "sqlite_sequence" SET seq = 3 WHERE name = 'Student';
修改表名称
格式:
ALTER TABLE 旧表名 RENAME TO 新表名1
ALTER TABLE or_sql_table RENAME TO new_table;
增加表字段
格式:
ALTER TABLE 表名 ADD COLUMN 列名 数据类型1
ALTER TABLE new_table ADD COLUMN sex Text;
查询表结构
格式:
RAGMA TABLE_INFO (表名)1
PRAGMA TABLE_INFO (new_table);
记录操作
插入和删除记录
插入格式:
INSERT INTO 表名 (列名1,列名2,...) VALUES (值1,值2,...)删除格式:
DELETE FROM 表名1
2INSERT INTO sutdent (name,age) VALUES ('xiaoming',18);
DELETE FROM student WHERE name = 'xiaoming';更新记录
格式:
UPDATE 表名 SET 列名 = 列值 WHERE 条件1
UPDATE student SET age = 18 WHERE name = 'xiaoming';
不存在则插入
格式:
INSERT INTO 表名 (列名1,列名2,...) SELECT 值1,值2,... WHERE NOT EXISTS (SELECT * FROM 表名 WHERE 列名=列值)1
INSERT INTO tb_test (name) select ('test4') where not exists(select * from tb_test where name='test4')
搜索
LIKE与GLOB搜索
格式:
SELECT 列名 FROM 表名 WHERE 列名 LIKE "XXX"或SELECT 列名 FROM 表名 WHERE 列名 GLOB "XXX"LIKE关键字通配符包括:
%:表示有N个字符和_:表示有1个字符,不区分大小写GLOB关键字通配符包括:
*:表示有N个字符和?:表示有1个字符,区分大小写1
2SELECT * FROM student WHERE name LIKE '%ming'
SELECT * FROM student WHERE name LIKE '%min_'
LIMIT和OFFSET翻页
格式:
SELECT 列名 FROM 表名 LIMIT 数量 OFFSET 偏移;1
2-- 显示1到4的行
SELECT * FROM student LIMIT 3 OFFSET 1分组与排序
分组格式:
SELECT 列名 FROM 表名 WHERE 条件 GROUP BY 列名排序格式:
SELECT 列名 FROM 表名 WHERE 条件 ORDER BY 列名 关键字;关键字包括:
ASC:升序DESC:降序GROUP BY一般与函数结合使用,比如:1
2-- 查询所有学生名的最新成绩
SELECT * FROM student WHERE id IN(SELECT MAX(id) FROM student GROUP BY name)
唯一值
格式:
SELECT DISTINCT 列名 FROM 表名1
2-- 查询所有学生名
SELECT DISTINCT name FROM student函数
计数
COUNT最大最小值
MAX\MIN平均值
AVG和
SUM绝对值
ABS获取字符串长度
LENGTH转换大小写
UPPER\LOWER