| 關鍵字 | 含義 |
|---|---|
| WHERE | 條件篩選關鍵字 |
| LIKE | 匹配通配符指定模式的文本值 |
| GLOB | 匹配通配符指定模式的文本值:字母不分大小寫 |
| LIMIT | 限制由 SELECT 語句返回的數據數量 |
| ORDER BY | 基于條件的升降序排列 |
| GROUP BY | 對相同的數據進行分組 |
| HAVING | 允許指定條件來過濾將出現在最終結果中的分組結果 |
Where 子句
關鍵字: WHERE
SQLite的 WHERE 子句用于指定從一個表或多個表中獲取數據的條件。
如果滿足給定的條件,即為真(true)時,則從表中返回特定的值。您可以使用 WHERE 子句來過濾記錄,只獲取需要的記錄。
WHERE 子句不僅可用在** SELECT** 語句中,它也可用在 UPDATE、DELETE 語句中。
基本語法:
SELECT 列1、列2、列3、......列N FROM 表名 WHERE [條件];
或者:
SELECT * FROM 表名 WHERE [條件];
代碼如下:
let sql = "SELECT * FROM T_Person WHERE age>50 AND height<4"
數據庫中資料:

執(zhí)行結果:
[["height": 3, "age": 60, "id": 7, "name": 李四],
["height": 3, "age": 70, "id": 8, "name": 李四]]
模糊匹配like
關鍵字: LIKE
SQLite 的 LIKE 運算符是用來匹配通配符指定模式的文本值。如果搜索表達式與模式表達式匹配,LIKE 運算符將返回真(true),也就是 1。這里有兩個通配符與 LIKE 運算符一起使用:
- 百分號 (%)
- 下劃線 (_)
百分號(%)代表零個、一個或多個數字或字符。下劃線()代表一個單一的數字或字符。這些符號可以被組合使用。
實例:注意前向結合
| 語句 | 描述 |
|---|---|
| WHERE SALARY LIKE 'ab%' | 查找以 ab 開頭的任意值 |
| WHERE SALARY LIKE '%ab' | 查找以 ab 結尾的任意值 |
| WHERE SALARY LIKE '%ab%' | 查找任意位置包含 ab 的任意值 |
| WHERE SALARY LIKE '_ab%' | 查找第二位和第三位為 ab 的任意值 |
| WHERE SALARY LIKE '_a%b' | 查找第二位為 a,且以 b 結尾的任意值 |
| WHERE SALARY LIKE 'a_%_%' | 查找以 a 開頭,且長度至少為 3 個字符的任意值 |
| WHERE SALARY LIKE 'a___b' | 查找長度為 5 位數,且以 a 開頭以 b 結尾的任意值 |
基本語法:
SELECT FROM 表名
WHERE 字段 LIKE 'XXXX%'
代碼如下:
let sql = "SELECT * FROM T_Person WHERE height LIKE '2%'"
數據庫中資料:

執(zhí)行結果:
[["height": 2, "age": 40, "id": 5, "name": 李四],
["height": 2, "age": 50, "id": 6, "name": 李四]]
模糊匹配Glob
關鍵字: GLOB
SQLite 的 GLOB 運算符是用來匹配通配符指定模式的文本值。如果搜索表達式與模式表達式匹配,GLOB 運算符將返回真(true),也就是 1。與 LIKE 運算符不同的是,GLOB 是大小寫敏感的,對于下面的通配符,它遵循 UNIX 的語法。
- 星號 (*)
- 問號 (?)
星號(*)代表零個、一個或多個數字或字符。
問號(?)代表一個單一的數字或字符。這些符號可以被組合使用。
基本語法:
SELECT FROM 表名
WHERE 字段 GLOB 'XXXX*'
實例:注意前向結合,且部分大小寫
| 語句 | 描述 |
|---|---|
| WHERE SALARY GLOB 'ab*' | 查找以 ab 開頭的任意值 ,不分大小寫 |
| WHERE SALARY GLOB '*ab' | 查找以 ab (不分大小寫)結尾的任意值 |
| WHERE SALARY GLOB 'ab' | 查找任意位置包含 ab(不分大小寫) 的任意值 |
| WHERE SALARY GLOB '?ab*' | 查找第二位和第三位為 ab(不分大小寫) 的任意值 |
| WHERE SALARY GLOB '_a*b' | 查找第二位為 a(不分大小寫),且以 b 結尾的任意值 |
| WHERE SALARY GLOB 'a???b' | 查找長度為 5 位數,且以 a 開頭以 b 結尾的任意值 |
代碼如下:
//查找中間帶-的字符串
let sql = "SELECT * FROM T_Person WHERE name GLOB '*-*'"
數據庫中資料:

執(zhí)行結果:
[["height": 10, "age": 2, "id": 1, "name": A-B],
["height": 7.8, "age": 3, "id": 2, "name": A-b]]
Limit 子句
關鍵字: LIMIT
SQLite 的 LIMIT 子句用于限制由 SELECT 語句返回的數據數量
基本語法:
SELECT * FROM 表名
LIMIT [行數]
或者
SELECT * FROM 表名
LIMIT [行數] OFFSET [偏移]
代碼如下:
//1 輸出偏移兩條后面的三條數據
let sql = "SELECT * FROM T_Person LIMIT 3 OFFSET 2"
數據庫中資料:

執(zhí)行結果:
[["height": 1, "age": 20, "id": 3, "name": 李四],
["height": 1, "age": 30, "id": 4, "name": 李四],
["height": 2, "age": 40, "id": 5, "name": 李四]]
升降序排列
關鍵字: Order By
SQLite 的 ORDER BY 子句是用來基于一個或多個列按升序或降序順序排列數據。
基本語法:
SELECT * FROM 表名
[WHERE 條件]
[ORDER BY 列1, 列2, .. 列N] [ASC | DESC];
代碼如下:
//降序排列
let sql = "SELECT * FROM T_Person ORDER BY age DESC"
數據庫中資料:

執(zhí)行結果:
[["height": 5, "age": 100, "id": 11, "name": 李四],
["height": 4, "age": 90, "id": 10, "name": 李四],
["height": 4, "age": 80, "id": 9, "name": 李四],
["height": 3, "age": 70, "id": 8, "name": 李四],
["height": 3, "age": 60, "id": 7, "name": 李四],
["height": 2, "age": 50, "id": 6, "name": 李四],
["height": 2, "age": 40, "id": 5, "name": 李四],
["height": 1, "age": 30, "id": 4, "name": 李四],
["height": 1, "age": 20, "id": 3, "name": 李四],
["height": 0, "age": 10, "id": 2, "name": 李四],
["height": 0, "age": 0, "id": 1, "name": 李四]]
Group By子句
關鍵字: GROUP BY
SQLite 的 GROUP BY 子句用于與 SELECT 語句一起使用,來對相同的數據進行分組。
在 SELECT 語句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前。
基本語法:
SELECT 列名 FROM 表名
[WHERE 條件 ]
GROUP BY 列1, 列2....列N
ORDER BY 列1, 列2....列N
代碼如下:
//篩選出name , age兩列,但是按照年齡分組
let sql = "SELECT name , age FROM T_Person GROUP BY age"
數據庫中資料:

執(zhí)行結果:分出了5組,
[["age": 10, "name": 李四],
["age": 30, "name": 李四],
["age": 50, "name": 李四],
["age": 70, "name": 李四],
["age": 90, "name": 李四],
["age": 100, "name": 李四]]
代碼如下:
//篩選出name , age兩列,但是按身高分組,按照年齡將序,
let sql = "SELECT name,age FROM T_Person GROUP BY height ORDER BY age DESC"
執(zhí)行結果:
[["age": 100, "name": 李四],
["age": 90, "name": 李四],
["age": 70, "name": 李四],
["age": 50, "name": 李四],
["age": 30, "name": 李四],
["age": 10, "name": 李四]]
Having 子句
關鍵字: HAVING
HAVING 子句允許指定條件來過濾將出現在最終結果中的分組結果。
WHERE 子句在所選列上設置條件,而 HAVING 子句則在由 GROUP BY 子句創(chuàng)建的分組上設置條件。
基本語法:
在一個查詢中,HAVING 子句必須放在 GROUP BY 子句之后,必須放在 ORDER BY 子句之前。下面是包含 HAVING 子句的 SELECT 語句的語法:
SELECT 列名 FROM 表名
WHERE[條件]
GROUP BY [列名]
HAVING [條件]
ORDER BY [列名]
代碼如下:
//1 選出name 數小于2的組
let sql = "SELECT * FROM T_Person GROUP BY name HAVING count(name) < 2"
數據庫中資料:

執(zhí)行結果:
[["height": 7.8, "age": 25, "id": 2, "name": Allen],
["height": 10, "age": 32, "id": 1, "name": Paul],
["height": 4.6, "age": 27, "id": 3, "name": Teddy]]