目录
十七、重新引索REINDEX十八、查询SELECT1、简单查询2、复合查询十九、更新UPDATE二十、公用表表达式(CTE)WITH1、普通表达式2、递归表达式二十三、VACUUM二十四、UPSERT十七、重新引索REINDEX
REINDEX命令用于从头开始删除和重新创建索引。
十八、查询SELECT
1、简单查询
关键词:
FROM :数据源,后加表名或子查询WHERE:过滤GROUP BY:聚合查询,根据一个或多个列对结果集进行分组(合并行)HAVING:过滤,和WHERE类似,WHERE不能和合计函数一起使用,HAVING可以DISTINCT:去重
2、复合查询
在复合SELECT中,所有组成的SELECT必须返回相同数量的结果列。由于复合SELECT的组件必须是简单的SELECT语句,因此它们可能不包含ORDER BY或LIMIT子句。 ORDER BY和LIMIT子句只能在整个复合SELECT的末尾出现,然后仅在该复合词的最后一个元素不是VALUES子句时才出现。
关键词:
UNION:UNION 操作符用于合并两个或多个 SELECT 语句的结果集。UNION ALL:和UNION类似,不同点是UNION返回的结果不包括重复值。INTERSECT:返回两个SELECT结果的交集。EXCEPT:返回第一个SELECT的结果,并剔除出现在第二个SELECT中的结果。注意:MySQL中没有EXCEPT
UNION用法,其它方法类似
SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s) FROM table_name2
十九、更新UPDATE
如果UPDATE语句没有WHERE子句,则UPDATE修改表中的所有行。否则,UPDATE仅影响那些WHERE子句 布尔表达式为true的行。如果表中的任何行的WHERE子句都不为true,这不是错误-这仅意味着UPDATE语句影响零行。
二十、公用表表达式(CTE)WITH
1、普通表达式
格式:
WITH name AS(SQL语句)
2、递归表达式
格式:
WITH RECURSIVEname AS(SQL语句)
示例:使用SQL语句打印1到100
WITH RECURSIVEcnt(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM cnt WHERE x<100)SELECT x FROM cnt;
二十三、VACUUM
VACUUM命令用于重建数据库文件,将其重新打包到最小的磁盘空间中。
VACUUM INTO 可以备份数据库。参见【数据库】sqlite3数据库备份、导出方法汇总
二十四、UPSERT
UPSERT是INSERT特殊语法补充,它不是标准的SQL。和关键词"ON CONFLICT" 和 "DO"一起使用,来解决唯一性冲突。