一、INSERT語句
SQLite 的 INSERT INTO 語句用於向資料庫的某個表中新增新的資料行。
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]
VALUES (value1, value2, value3,...valueN);
複製程式碼
在這裡,column1, column2,...columnN 是要插入資料的表中的列的名稱。
如果要為表中的所有列新增值,也可以不需要在 SQLite 查詢中指定列名稱。但要確保值的順序與列在表中的順序一致。語法如下:
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(升序)。