SQLite 創建表
SQLite 的 CREATE TABLE 語句用於在任何給定的數據庫創建一個新表。創建基本表,涉及到命名表、定義列及每一列的數據類型。
語法
CREATE TABLE 語句的基本語法如下:
CREATE TABLE database_name.table_name( column1 datatype PRIMARY KEY(one or more columns), column2 datatype, column3 datatype, ..... columnN datatype, );
實例:

使用 SQLIte 命令中的 .tables 命令來驗證表是否已成功創建,該命令用於列出附加數據庫中的所有表。
使用 SQLite .schema 命令得到表的完整信息
SQLite 刪除表
SQLite 的 DROP TABLE 語句用來刪除表定義及其所有相關數據、索引、觸發器、約束和該表的權限規范。
語法
DROP TABLE 語句的基本語法如下。您可以選擇指定帶有表名的數據庫名稱,如下所示:
DROP TABLE database_name.table_name;
SQLite Insert 語句
SQLite 的 INSERT INTO 語句用於向數據庫的某個表中添加新的數據行。
語法
INSERT INTO 語句有兩種基本語法,如下所示:
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)] VALUES (value1, value2, value3,...valueN);
使用一個表來填充另一個表
您可以通過在一個有一組字段的表上使用 select 語句,填充數據到另一個表中。下面是語法:
INSERT INTO first_table_name [(column1, column2, ... columnN)] SELECT column1, column2, ...columnN FROM second_table_name [WHERE condition];
SQLite Select 語句
SQLite 的 SELECT 語句用於從 SQLite 數據庫表中獲取數據,以結果表的形式返回數據。這些結果表也被稱為結果集。
語法
SQLite 的 SELECT 語句的基本語法如下:
SELECT column1, column2, columnN FROM table_name;
在這里,column1, column2...是表的字段,他們的值即是您要獲取的。如果您想獲取所有可用的字段,那么可以使用下面的語法:
SELECT * FROM table_name;
設置輸出列的寬度
有時,由於要顯示的列的默認寬度導致 .mode column,這種情況下,輸出被截斷。此時,您可以使用 .width num, num.... 命令設置顯示列的寬度,如下所示:
sqlite>.width 10, 20, 10 sqlite>SELECT * FROM COMPANY;
SQLite 算術運算符
假設變量 a=10,變量 b=20,則:
運算符 | 描述 | 實例 |
---|---|---|
+ | 加法 - 把運算符兩邊的值相加 | a + b 將得到 30 |
- | 減法 - 左操作數減去右操作數 | a - b 將得到 -10 |
* | 乘法 - 把運算符兩邊的值相乘 | a * b 將得到 200 |
/ | 除法 - 左操作數除以右操作數 | b / a 將得到 2 |
% | 取模 - 左操作數除以右操作數后得到的余數 | b % a will give 0 |
SQLite 比較運算符
假設變量 a=10,變量 b=20,則:
運算符 | 描述 | 實例 |
---|---|---|
== | 檢查兩個操作數的值是否相等,如果相等則條件為真。 | (a == b) 不為真。 |
= | 檢查兩個操作數的值是否相等,如果相等則條件為真。 | (a = b) 不為真。 |
!= | 檢查兩個操作數的值是否相等,如果不相等則條件為真。 | (a != b) 為真。 |
<> | 檢查兩個操作數的值是否相等,如果不相等則條件為真。 | (a <> b) 為真。 |
> | 檢查左操作數的值是否大於右操作數的值,如果是則條件為真。 | (a > b) 不為真。 |
< | 檢查左操作數的值是否小於右操作數的值,如果是則條件為真。 | (a < b) 為真。 |
>= | 檢查左操作數的值是否大於等於右操作數的值,如果是則條件為真。 | (a >= b) 不為真。 |
<= | 檢查左操作數的值是否小於等於右操作數的值,如果是則條件為真。 | (a <= b) 為真。 |
!< | 檢查左操作數的值是否不小於右操作數的值,如果是則條件為真。 | (a !< b) 為假。 |
!> | 檢查左操作數的值是否不大於右操作數的值,如果是則條件為真。 | (a !> b) 為真。 |
SQLite 邏輯運算符
下面是 SQLite 中所有的邏輯運算符列表。
運算符 | 描述 |
---|---|
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 運算符搜索指定表中的每一行,確保唯一性(無重復)。 |
SQLite 位運算符
位運算符作用於位,並逐位執行操作。真值表 & 和 | 如下:
p | q | p & q | p | q |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 |
AND 運算符
AND 運算符允許在一個 SQL 語句的 WHERE 子句中的多個條件的存在。使用 AND 運算符時,只有當所有條件都為真(true)時,整個條件為真(true)。例如,只有當 condition1 和 condition2 都為真(true)時,[condition1] AND [condition2] 為真(true)。
語法
帶有 WHERE 子句的 AND 運算符的基本語法如下:
SELECT column1, column2, columnN FROM table_name WHERE [condition1] AND [condition2]...AND [conditionN];
OR 運算符
OR 運算符也用於結合一個 SQL 語句的 WHERE 子句中的多個條件。使用 OR 運算符時,只要當條件中任何一個為真(true)時,整個條件為真(true)。例如,只要當 condition1 或 condition2 有一個為真(true)時,[condition1] OR [condition2] 為真(true)。
語法
帶有 WHERE 子句的 OR 運算符的基本語法如下:
SELECT column1, column2, columnN FROM table_name WHERE [condition1] OR [condition2]...OR [conditionN]
Update 語句
SQLite 的 UPDATE 查詢用於修改表中已有的記錄。可以使用帶有 WHERE 子句的 UPDATE 查詢來更新選定行,否則所有的行都會被更新。
語法
帶有 WHERE 子句的 UPDATE 查詢的基本語法如下:
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition];
Delete 語句
SQLite 的 DELETE 查詢用於刪除表中已有的記錄。可以使用帶有 WHERE 子句的 DELETE 查詢來刪除選定行,否則所有的記錄都會被刪除。
語法
帶有 WHERE 子句的 DELETE 查詢的基本語法如下:
DELETE FROM table_name
WHERE [condition];
Like 子句
SQLite 的 LIKE 運算符是用來匹配通配符指定模式的文本值。如果搜索表達式與模式表達式匹配,LIKE 運算符將返回真(true),也就是 1。這里有兩個通配符與 LIKE 運算符一起使用:
-
百分號 (%)
-
下划線 (_)
百分號(%)代表零個、一個或多個數字或字符。下划線(_)代表一個單一的數字或字符。這些符號可以被組合使用。
下面一些實例演示了 帶有 '%' 和 '_' 運算符的 LIKE 子句不同的地方:
語句 | 描述 |
---|---|
WHERE SALARY LIKE '200%' | 查找以 200 開頭的任意值 |
WHERE SALARY LIKE '%200%' | 查找任意位置包含 200 的任意值 |
WHERE SALARY LIKE '_00%' | 查找第二位和第三位為 00 的任意值 |
Glob 子句
SQLite 的 GLOB 運算符是用來匹配通配符指定模式的文本值。如果搜索表達式與模式表達式匹配,GLOB 運算符將返回真(true),也就是 1。與 LIKE 運算符不同的是,GLOB 是大小寫敏感的,對於下面的通配符,它遵循 UNIX 的語法。
-
星號 (*)
-
問號 (?)
星號(*)代表零個、一個或多個數字或字符。問號(?)代表一個單一的數字或字符。這些符號可以被組合使用。
語句 | 描述 |
---|---|
WHERE SALARY GLOB '200*' | 查找以 200 開頭的任意值 |
WHERE SALARY GLOB '*200*' | 查找任意位置包含 200 的任意值 |
WHERE SALARY GLOB '?00*' | 查找第二位和第三位為 00 的任意值 |
Limit 子句
SQLite 的 LIMIT 子句用於限制由 SELECT 語句返回的數據數量。
語法
帶有 LIMIT 子句的 SELECT 語句的基本語法如下:
SELECT column1, column2, columnN FROM table_name LIMIT [no of rows]
Order By
SQLite 的 ORDER BY 子句是用來基於一個或多個列按升序或降序順序排列數據。
語法
ORDER BY 子句的基本語法如下:
SELECT column-list FROM table_name [WHERE condition] [ORDER BY column1, column2, .. columnN] [ASC | DESC];
Group By
SQLite 的 GROUP BY 子句用於與 SELECT 語句一起使用,來對相同的數據進行分組。
在 SELECT 語句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前。
語法
下面給出了 GROUP BY 子句的基本語法。GROUP BY 子句必須放在 WHERE 子句中的條件之后,必須放在 ORDER BY 子句之前。
SELECT column-list FROM table_name WHERE [ conditions ] GROUP BY column1, column2....columnN ORDER BY column1, column2....columnN
Having 子句
HAVING 子句允許指定條件來過濾將出現在最終結果中的分組結果。
WHERE 子句在所選列上設置條件,而 HAVING 子句則在由 GROUP BY 子句創建的分組上設置條件。
語法
下面是 HAVING 子句在 SELECT 查詢中的位置:
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
在一個查詢中,HAVING 子句必須放在 GROUP BY 子句之后,必須放在 ORDER BY 子句之前。下面是包含 HAVING 子句的 SELECT 語句的語法:
SELECT column1, column2 FROM table1, table2 WHERE [ conditions ] GROUP BY column1, column2 HAVING [ conditions ] ORDER BY column1, column2
Distinct 關鍵字
SQLite 的 DISTINCT 關鍵字與 SELECT 語句一起使用,來消除所有重復的記錄,並只獲取唯一一次記錄。
有可能出現一種情況,在一個表中有多個重復的記錄。當提取這樣的記錄時,DISTINCT 關鍵字就顯得特別有意義,它只獲取唯一一次記錄,而不是獲取重復記錄。
語法
用於消除重復記錄的 DISTINCT 關鍵字的基本語法如下:
SELECT DISTINCT column1, column2,.....columnN FROM table_name WHERE [condition]