SQLite语句(二):INSERT DELETE UPDATE

作者: carver | 来源:发表于2018-03-03 13:07 被阅读102次

一、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语句的处理过程:


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 运算符一起使用的通配符有两个:

  • 百分号(%)

  • 下划线(_)

百分号代表零个、一个或者多个字符。下划线则代表单个数字或者字符。两个符号可以一起使用。

示例:

LIKE子句示例
GLOB

SQLite 的 GLOB 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,GLOB 运算符将返回真(true),也就是 1。与 LIKE 运算符不同的是,GLOB 是大小写敏感的,对于下面的通配符,它遵循 UNIX 的语法。

  • 星号 (*)

  • 问号 (?)

星号(*)代表零个、一个或多个数字或字符。问号(?)代表一个单一的数字或字符。这些符号可以被组合使用。

示例:

GLOB子句示例
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:


COMPANY表

执行语句:

SELECT name, SUM(salary) FROM company GROUP BY name

得到如下结果:

RESULT
HAVING

HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果。

WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件。

在一个查询中,HAVING 子句必须放在 GROUP BY 子句之后,必须放在 ORDER BY 子句之前。

示例:

还是company,执行语句:

SELECT * FROM company GROUP BY name HAVING count(name) > 2;

结果如下:

RESULT
ORDER BY

SQLite 的ORDER BY子句是用来基于一个或多个列按升序或降序顺序排列数据。
当要对查询结果排序时,使用ORDER BY子句。

SELECT * FROM students ORDER BY age desc;

按照age将查询结果降序排列。默认是asc(升序)。

相关文章

网友评论

    本文标题:SQLite语句(二):INSERT DELETE UPDATE

    本文链接:https://www.haomeiwen.com/subject/esutfftx.html