一、INSERT语句
SQLite 的 INSERT INTO 语句用于向数据库的某个表中添加新的数据行。
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]
VALUES (value1, value2, value3,...valueN);
在这里,column1, column2,...columnN 是要插入数据的表中的列的名称。
如果要为表中的所有列添加值,您也可以不需要在 SQLite 查询中指定列名称。但要确保值的顺序与列在表中的顺序一致。SQLite 的 INSERT INTO 语法如下:
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
二、DELETE语句
SQLite 的 DELETE 查询用于删除表中已有的记录。可以使用带有 WHERE 子句的 DELETE 查询来删除选定行,否则所有的记录都会被删除。
DELETE FROM <表名> [WHERE 条件表达式]
示例:
-- 删除Id小于10的数据记录
DELETE FROM Student WHERE Id<10;
三、UPDATE语句
SQLite 的 UPDATE 查询用于修改表中已有的记录。可以使用带有 WHERE 子句的 UPDATE 查询来更新选定行,否则所有的行都会被更新。
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition];
示例:
-- 将Id在(10,100)的Age加1
UPDATE Student SET Age= Age+1 WHERE Id>10 AND Id<100
四、SELECT语句
SQLite 的 SELECT 语句用于从 SQLite 数据库表中获取数据,以结果表的形式返回数据。这些结果表也被称为结果集。
SQLite 的 SELECT 语句的基本语法如下:
SELECT column1, column2, columnN FROM table_name;
SELECT语句可以与WHERE,ORDER BY等子句结合使用。语法如下:
SELECT [ALL | DISTINCT] <目标列表达式>[,<目标列表达式>]…
FROM <表名或视图名>[,<表名或视图名>]…
[WHERE <条件表达式>]
[GROUP BY <列名> [HAVING <条件表达式>]]
[ORDER BY <列名> [ASC|DESC]…]
SQL查询语句的顺序:SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY。SELECT、FROM是必须的,HAVING子句只能与GROUP BY搭配使用
下图表明了SELECT语句的处理过程:
DISTINCT
DISTINCT 关键字同 SELECT 语句一起使用,可以去除所有重复记录,只返回唯一项。
有时候,数据表中可能会有重复的记录。在检索这些记录的时候,应该只取回唯一的记录,而不是重复的。
使用 DISTINCT 关键字去除查询结果中的重复记录的基本语法如下所示:
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]
示例:
SELECT DISTINCT SALARY FROM CUSTOMERS
ORDER BY SALARY
--去除(SALARY 字段)重复记录。
WHERE
WHERE 子句用于有条件地从单个表中取回数据或者将多个表进行合并。
如果条件满足,则查询只返回表中满足条件的值。你可以用 WHERE 子句来过滤查询结果,只获取必要的记录。
WHERE 子句不仅可以用于 SELECT 语句,还可以用于 UPDATE、DELETE 等语句。
SELECT [ALL | DISTINCT] <目标列表达式>[,<目标列表达式>]…
FROM <表名或视图名>[,<表名或视图名>]…
WHERE <条件表达式>
在指定条件时,可以使用关系运算符和逻辑运算符,例如 >、<、=、LIKE、NOT 等。
示例:
SELECT ID, NAME, SALARY
FROM CUSTOMERS
WHERE SALARY > 2000;
LIKE
LIKE 子句通过通配符来将一个值同其他相似的值作比较。可以同 LIKE 运算符一起使用的通配符有两个:
百分号(%)
下划线(_)
百分号代表零个、一个或者多个字符。下划线则代表单个数字或者字符。两个符号可以一起使用。
示例:
GLOB
SQLite 的 GLOB 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,GLOB 运算符将返回真(true),也就是 1。与 LIKE 运算符不同的是,GLOB 是大小写敏感的,对于下面的通配符,它遵循 UNIX 的语法。
星号 (*)
问号 (?)
星号(*)代表零个、一个或多个数字或字符。问号(?)代表一个单一的数字或字符。这些符号可以被组合使用。
示例:
LIMIT和OFFSET
LIMIT和OFFSET限定结果集的大小和范围。LIMIT指定返回记录的最大数量,OFFSET指定偏移的记录数。
LIMIT和OFFSET一起使用时,可以用逗号代替OFFSET关键字。
SELECT * FROM students LIMIT 10 OFFSET 2;
-- 从第二条记录开始选取10条记录
GROUP BY
SQLite 的 GROUP BY 子句用于与 SELECT 语句一起使用,来对相同的数据进行分组。
在 SELECT 语句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前。
示例:
假设有下图的一张表company:
执行语句:
SELECT name, SUM(salary) FROM company GROUP BY name
得到如下结果:
HAVING
HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果。
WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件。
在一个查询中,HAVING 子句必须放在 GROUP BY 子句之后,必须放在 ORDER BY 子句之前。
示例:
还是company,执行语句:
SELECT * FROM company GROUP BY name HAVING count(name) > 2;
结果如下:
ORDER BY
SQLite 的ORDER BY子句是用来基于一个或多个列按升序或降序顺序排列数据。
当要对查询结果排序时,使用ORDER BY子句。
SELECT * FROM students ORDER BY age desc;
按照age将查询结果降序排列。默认是asc(升序)。