sqlite
格式化输出
.heade on
.mode column
LIKE
% 任意多个字符 LIKE ‘XX*’;
_ 唯一一个字符 LIKE ‘_X’;
GLOB
* 任意字符
? 单一数字或者字符
LIMIT
LIMIT n
从开始到n项
LIMIT n OFFSET m;
以 n项为中心,m正向下m项,m负向上m项
SELECT [] FROM [table.name] ORDER BY [column] ASC|DESC;
SELECT 语句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前
聚集函数
COUNT(DISTINCT|ALL<列名>);
SUM(DISTINCT|ALL<列名>);
AVG(DISTINCT|ALL<列名>);
MAX/MIN(DISTINCT|ALL<列名>);
HAVING [condition]
HAVING 子句必须放在 GROUP BY 子句之后,必须放在 ORDER BY 子句之前
DISTINCT
SELECT DISTINCT [] FROM
与 SELECT 语句一起使用,来消除所有重复的记录
链接实现:
1、nested-loop
2、排序合并:子表排序后顺序查找
sqlite约束:
NOT NULL
DEDFAULT:创建表格时设置默认值
UNIQUE
PRIMMARY KET
CHECK:输入值时check,false则输入无效
example:SALARY REAL CHECK(SALARY> 0);
重命名列,删除列,删除约束在sqlite不可实现
sqlite joins
CROSS JOIN
- SELECT COLUMN1,…COLUMN2 FROM TABLE1 CROSS JOIN TABLE2
INNER JOIN- SELECT COLUMN,…COLUMNn FROM TABLE1 JOIN TABLE2 USING COLUMN1…COLUMNn;
- SELECT COLUMN,…COLUMNn FROM TABLE1 INNER JOIN TABLE2 ON condition;
- SELECT COLUMN,…COLUMNn FROM TABLE1 NATURE JOIN TABLE2 COLUMN1 … COLUMNn;
- OUTER JOIN:LEFT OUTER JOIN\ RIGTH OUTER JOIN\ FULL OUTER JOIN
- SELECT…..FROM table1 [ ] OUTER JOIN table2 ON condition/ USING column….
UNION
每个 SELECT 被选择的列数必须是相同的,相同数目的列表达式,相同的数据类型,并确保它们有相同的顺序,但它们不必具有相同的长度。
1234 SELECT .... FROM TABLE1....WHERE .....UNIONSELECT .... FROM TABLE2....WHERE .....//UNION 去重,UNION ALL 不去重
Alias
TRIIGGER
- 显示触发器:
SELECT name FROM SQLITE——master
WHERE type=’trigger’; - 删除触发器:
DROP TRIGGER triggername; - INDEX:
CREAT [UNIQUE] INDEX indwx_name ON table_name(column1,column); - 显示单表中index:
.indices table - 显示全部:
SELECT * FROM sqlite_master WHERE type = ‘index’; - DROP INDEX index_name;
索引不应该使用在较小的表上。
索引不应该使用在有频繁的大批量的更新或插入操作的表上。
索引不应该使用在含有大量的 NULL 值的列上。
索引不应该使用在频繁操作的列上。 ALERT
ALTER TABLE tablename RENAME TO new_tablename
ALERT TABLE databasename.tablename ADD COLUMN columnname def…..VIEW
CREATE [TEMPORY|TEMP]VIEW viewname AS
SELECT column1 column2….
FROM tablename
WHERE [condition];
SELECT * FROM viewname;
DROP VIEW viewname;TRANSICTION
原子性(Atomicity):确保工作单位内的所有操作都成功完成,否则,事务会在出现故障时终止,之前的操作也会回滚到以前的状态。
一致性(Consistency):确保数据库在成功提交的事务上正确地改变状态。
隔离性(Isolation):使事务操作相互独立和透明。
持久性(Durability):确保已提交事务的结果或效果在系统发生故障的情况下仍然存在。
BEGIN;/BEGIN TRANSACTION;
ROLLBACK/COMMIT;
- VACUUM
VACUUM 命令通过复制主数据库中的内容到一个临时数据库文件,然后清空主数据库,并从副本中重新载入原始的数据库文件。这消除了空闲页,把表中的数据排列为连续的,另外会清理数据库文件结构
VACUUM 命令只适用于主数据库,附加的数据库文件是不可能使用 VACUUM 命令。123sqlite> PRAGMA auto_vacuum = NONE; -- 0 means disable auto vacuumsqlite> PRAGMA auto_vacuum = INCREMENTAL; -- 1 means enable incremental vacuumsqlite> PRAGMA auto_vacuum = FULL; -- 2 means enable full auto vacuum