數據庫SQLite基本用法(二)

關鍵字 含義
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"

數據庫中資料:


條件篩選.png

執(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%'"

數據庫中資料:


條件篩選.png

執(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 '*-*'"

數據庫中資料:


數據庫中數據.png

執(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"

數據庫中資料:


條件篩選.png

執(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"

數據庫中資料:


原始數據.png

執(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"

數據庫中資料:


條件篩選.png

執(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"

數據庫中資料:


數據庫中原有數據.png

執(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]]

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容