前言
本文介绍一些常用Sqlite3 命令行。
创建数据库
| 12
 3
 
 | $ sqlite3 database_name.db或者
 sqlite> .open database_name.db
 
 | 
附加数据库
| 1
 | ATTACH DATABASE 'file_name' AS 'alias_name';
 | 
分离数据库
| 1
 | DETACH DATABASE 'alias_name';
 | 
如果是临时数据库或直接销毁。
创建表
| 12
 3
 4
 5
 6
 
 | CREATE TABLE table_name(xx		INT		(NOT NULL),
 xx		TEXT	(NOT NULL),
 xx		CHAR(5)	(NOT NULL),
 PRIMARY KEY(xx, xx, ...)
 );
 
 | 
删除表
INSERT
| 12
 
 | INSERT INTO table_name [(col1, col2, col3, ..., coln)]VALUES (val1, val2, val3, ..., valn);
 
 | 
SELECT
| 12
 3
 
 | SELECT col1, col2, col3FROM table_name
 WHERE [CONDITION]
 
 | 
算术运算符
| 运算符 | 描述 | 实例 | 
| == | 检查两个操作数的值是否相等,如果相等则条件为真。 | (a == b) 不为真。 | 
| = | 检查两个操作数的值是否相等,如果相等则条件为真。 | (a = b) 不为真。 | 
| != | 检查两个操作数的值是否相等,如果不相等则条件为真。 | (a != b) 为真。 | 
| <> | 检查两个操作数的值是否相等,如果不相等则条件为真。 | (a <> b) 为真。 | 
| > | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 | (a > b) 不为真。 | 
| < | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 | (a < b) 为真。 | 
| >= | 检查左操作数的值是否大于等于右操作数的值,如果是则条件为真。 | (a >= b) 不为真。 | 
| <= | 检查左操作数的值是否小于等于右操作数的值,如果是则条件为真。 | (a <= b) 为真。 | 
| !< | 检查左操作数的值是否不小于右操作数的值,如果是则条件为真。 | (a !< b) 为假。 | 
| !> | 检查左操作数的值是否不大于右操作数的值,如果是则条件为真。 | (a !> b) 为真。 | 
逻辑运算符
| 运算符 | 描述 | 
| AND | AND运算符允许在一个SQL语句中的WHERE子句中的多个条件的存在 | 
| BETWEEN | BETWEEN 运算符用于在给定最小值和最大值范围内的一系列值中搜索值。 | 
| EXISTS | EXISTS 运算符用于在满足一定条件的指定表中搜索行的存在。 | 
| IN | IN 运算符用于把某个值与一系列指定列表的值进行比较。 | 
| NOT IN | IN 运算符的对立面,用于把某个值与不在一系列指定列表的值进行比较。 | 
| LIKE | LIKE 运算符用于把某个值与使用通配符运算符的相似值进行比较。 | 
| GLOB | GLOB 运算符用于把某个值与使用通配符运算符的相似值进行比较。GLOB 与 LIKE 不同之处在于,它是大小写敏感的。 | 
| NOT | NOT 运算符是所用的逻辑运算符的对立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定运算符。 | 
| OR | OR 运算符用于结合一个 SQL 语句的 WHERE 子句中的多个条件。 | 
| IS NULL | NULL 运算符用于把某个值与 NULL 值进行比较。 | 
| IS | IS 运算符与 = 相似。 | 
| IS NOT | IS NOT 运算符与 != 相似。 | 
| || | 连接两个不同的字符串,得到一个新的字符串。 | 
| UNIQUE | UNIQUE 运算符搜索指定表中的每一行,确保唯一性(无重复)。 | 
位运算符
| 运算符 | 描述 | 实例 | 
| & | 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。 | (A & B) 将得到 12,即为 0000 1100 | 
| | | 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。 | (A | B) 将得到 61,即为 0011 1101 | 
| ~ | 二进制补码运算符是一元运算符,具有”翻转”位效应,即0变成1,1变成0。 | (~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。 | 
| << | 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 | A << 2 将得到 240,即为 1111 0000 | 
表达式
是一个或多个值、运算符和计算值的SQL函数的组合。与公式类似,都写在查询语句中。您还可以使用特定的数据集来查询数据库。
UPDATE
用于修改表中已有的记录。可以使用带有 WHERE 子句的 UPDATE 查询来更新选定行,否则所有的行都会被更新。
| 12
 3
 
 | UPDATE table_nameSET col1=val1, col2=val2, ... coln=valn
 WHERE [CONDITION]
 
 | 
DELETE
用于删除表中已有的记录。可以使用带有 WHERE 子句的 DELETE 查询来删除选定行,否则所有的记录都会被删除。
| 12
 
 | DELETE FROM table_nameWHERE [CONDITION]
 
 | 
LIKE
用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,LIKE 运算符将返回真(true),也就是 1。这里有两个通配符与 LIKE 运算符一起使用
- %:代表零个或多个数字或字符。
- _:代表一个数字或字符。
| 语句 | 描述 | 
| WHERE salary LIKE ‘200%’ | 查找以 200 开头的任意值 | 
| WHERE salary LIKE ‘%200%’ | 查找任意位置包含 200 的任意值 | 
| WHERE salary LIKE ‘_00%’ | 查找第二位和第三位为 00 的任意值 | 
| WHERE salary LIKE ‘2_%_%’ | 查找以 2 开头,且长度至少为 3 个字符的任意值 | 
| WHERE salary LIKE ‘%2’ | 查找以 2 结尾的任意值 | 
| WHERE salary LIKE ‘_2%3’ | 查找第二位为 2,且以 3 结尾的任意值 | 
| WHERE salary LIKE ‘2___3’ | 查找长度为 5 位数,且以 2 开头以 3 结尾的任意值 | 
GLOB
用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,GLOB 运算符将返回真(true),也就是 1。与 LIKE 运算符不同的是,GLOB 是大小写敏感的,对于下面的通配符,它遵循 UNIX 的语法。
- *:代表零个或多个数字或字符。
- ?:代表一个数字或字符。
| 语句 | 描述 | 
| WHERE salary GLOB ‘200*’ | 查找以 200 开头的任意值 | 
| WHERE salary GLOB ‘200‘ | 查找任意位置包含 200 的任意值 | 
| WHERE salary GLOB ‘?00*’ | 查找第二位和第三位为 00 的任意值 | 
| WHERE salary GLOB ‘2??’ | 查找以 2 开头,且长度至少为 3 个字符的任意值 | 
| WHERE salary GLOB ‘*2’ | 查找以 2 结尾的任意值 | 
| WHERE salary GLOB ‘?2*3’ | 查找第二位为 2,且以 3 结尾的任意值 | 
| WHERE salary GLOB ‘2???3’ | 查找长度为 5 位数,且以 2 开头以 3 结尾的任意值 | 
LIMIT
用于限制由 SELECT 语句返回的数据数量
| 12
 3
 4
 5
 6
 7
 8
 9
 
 | SELECT col1, col2, ..., colnFROM table_name
 LIMIT [sizeof rows]
 
 or
 
 SELECT col1, col2, ..., coln
 FROM table_name
 LIMIT [limit_num] OFFSET [offset_num]
 
 | 
ORDER BY
用来基于一个或多个列按升序或降序顺序排列数据。
| 12
 3
 4
 
 | SELECT column-list FROM table_name
 [WHERE condition]
 [ORDER BY column1, column2, .. columnN] [ASC | DESC];
 
 | 
GROUP BY
用于与 SELECT 语句一起使用,来对相同的数据进行分组。在 SELECT 语句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前。
| 12
 3
 4
 5
 
 | SELECT column-listFROM table_name
 WHERE [ conditions ]
 GROUP BY column1, column2....columnN
 ORDER BY column1, column2....columnN
 
 | 
HAVING
HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果。
WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件。
| 12
 3
 4
 5
 6
 
 | SELECT column1, column2FROM table1, table2
 WHERE [ conditions ]
 GROUP BY column1, column2
 HAVING [ conditions ]
 ORDER BY column1, column2
 
 | 
DISTINCT
与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。有可能出现一种情况,在一个表中有多个重复的记录。当提取这样的记录时,DISTINCT 关键字就显得特别有意义,它只获取唯一一次记录,而不是获取重复记录。
| 12
 3
 
 | SELECT DISTINCT column1, column2,.....columnN FROM table_name
 WHERE [condition]
 
 |