SQLite3創建表及操作


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]
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM