日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

[原创] SQLite数据库使用清单(上)

發布時間:2025/4/14 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [原创] SQLite数据库使用清单(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.?介紹

1.1 安裝

  • 訪問 SQLite 下載頁面,從 Windows 區下載預編譯的二進制文件。

  • 您需要下載 sqlite-shell-win32-*.zipsqlite-dll-win32-*.zip 壓縮文件。

  • 創建文件夾 C:\sqlite,并在此文件夾下解壓上面兩個壓縮文件,將得到 sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件。

  • 添加 C:\sqlite 到 PATH 環境變量,最后在命令提示符下,使用 sqlite3 命令,將顯示如下結果。

  • C:\>sqlite3 SQLite version 3.7.15.2 2013-01-09 11:53:05 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite>

?1.2 命令

sqlite3 打開

.help 幫助

.quit 退出

.show 查看

.databases 查看所有數據庫

.tables 查看數據庫內所有表

sqlite>.header on
sqlite>.mode column
sqlite>.timer on
sqlite> //格式化輸出

sqlite>.schema sqlite_master 表格

1.3 語法

- 大小寫敏感

- 注釋:--或//

- 語句:關鍵字開始,分號結束

- 常用命令語法示例: http://www.runoob.com/sqlite/sqlite-syntax.html

1.4 數據類型

1.4.1 存儲類: NULL,INTEGER, REAL, TEXT, BLOB(blob 數據,完全根據它的輸入存儲)

1.4.2 Affinity類型: TEXT, NUMERIC, INTEGER, REAL, NULL

1.4.3 Boolean 類型:0 / 1

1.4.4 Date與Time類型: TEXT, REAL, INTEGER

?

2. 操作

2.1 創建數據庫 sqlite3 DatabaseName.db

?.databases 檢查已有數據庫

?.dump 導出數據庫文件到其他格式(如sql,txt)文件

  sqlite3 testDB.db .dump > testDB.sql
  sqlite3 testDB.db < testDB.sql

2.2.a SQLite附加數據庫

sqlite> ATTACH DATABASE 'testDB.db' as 'TEST'; //將1或多個數據庫附加到主數據庫

2.2.b SQLite分離數據庫

sqlite> DETACH DATABASE 'TEST'; //將指定數據庫從主數據庫中分離

2.3 創建表

sqlite> CREATE TABLE COMPANY(ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,AGE INT NOT NULL,ADDRESS CHAR(50),SALARY REAL ); //語法示例

2.4 刪除表

sqlite>DROP TABLE COMPANY; //語法示例

2.5 SQLite 語句

2.5.1 INSERT 語句

//向已存在表COMPANY中插入數據 INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00 );INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Allen', 25, 'Texas', 15000.00 );INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (5, 'David', 27, 'Texas', 85000.00 );INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (6, 'Kim', 22, 'South-Hall', 45000.00 );//或使用另一語法插入 INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 ); //語法示例

?使用一個表來填充另一個表:

INSERT INTO first_table_name [(column1, column2, ... columnN)] SELECT column1, column2, ...columnN FROM second_table_name[WHERE condition]; //語法規范,示例待補充

2.5.2 SELECT 語句

//設置正確的格式化輸出 sqlite>.header on sqlite>.mode column sqlite> SELECT * FROM COMPANY;//獲取所有字段 SELECT * FROM table_name;//獲取指定字段 SELECT column1, column2, columnN FROM table_name;eg.) sqlite> SELECT ID, NAME, SALARY FROM COMPANY;//設置輸出列的寬度 sqlite>.width 10, 20, 10 sqlite>SELECT * FROM COMPANY;//

?Schema信息:因為所有的點命令只在 SQLite 提示符中可用,所以當進行帶有 SQLite 的編程時,需要使用下面的帶有 sqlite_master 表的 SELECT 語句來列出所有在數據庫中創建的表:

//選擇引用Schema信息的數據庫列表 sqlite> SELECT tbl_name FROM sqlite_master WHERE type = 'table';//同時列出數據列表的完整信息 sqlite> SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'COMPANY';

2.5.3 UPDATE 語句

//eg.更新指定Key行的指定列的數據 sqlite> UPDATE COMPANY SET ADDRESS = 'Texas' WHERE ID = 6;//更新所有行的指定列的數據,該列數據改變后相同 sqlite> UPDATE COMPANY SET ADDRESS = 'Texas', SALARY = 20000.00;

2.5.4 DELETE 語句

//eg. 刪除指定Key值行,即該ID下“客戶” sqlite> DELETE FROM COMPANY WHERE ID = 7;//刪除表中所有數據 sqlite> DELETE FROM COMPANY;

2.6 Distinct 關鍵字

SQLite 的 DISTINCT 關鍵字與 SELECT 語句一起使用,來消除所有重復的記錄,并只獲取唯一一次記錄。

//查詢時,相同name值只出現一次 sqlite> SELECT DISTINCT name FROM COMPANY;

2.7 運算符

2.7.1 算數運算符 +, -,*, /, %

2.7.2 比較運算符 ==, =, <>, >, <, >=, <=, !=, !>

說明:== 與 = 同義; <> 與 != 同義

//eg. sqlite> SELECT * FROM COMPANY WHERE SALARY > 50000;sqlite> SELECT * FROM COMPANY WHERE SALARY = 20000;sqlite> SELECT * FROM COMPANY WHERE SALARY != 20000;

2.7.3 邏輯運算符

AND, BETWEEN, EXISTS, IN, NOT IN, LIKE, GLOB, NOT, OR, IS NULL, IS, IS NOT, ||, UNIQUE

運算符描述
ANDAND 運算符允許在一個 SQL 語句的 WHERE 子句中的多個條件的存在。
BETWEENBETWEEN 運算符用于在給定最小值和最大值范圍內的一系列值中搜索值。
EXISTSEXISTS 運算符用于在滿足一定條件的指定表中搜索行的存在。
ININ 運算符用于把某個值與一系列指定列表的值進行比較。
NOT ININ 運算符的對立面,用于把某個值與不在一系列指定列表的值進行比較。
LIKELIKE 運算符用于把某個值與使用通配符運算符的相似值進行比較。
GLOBGLOB 運算符用于把某個值與使用通配符運算符的相似值進行比較。GLOB 與 LIKE 不同之處在于,它是大小寫敏感的。
NOTNOT 運算符是所用的邏輯運算符的對立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定運算符。
OROR 運算符用于結合一個 SQL 語句的 WHERE 子句中的多個條件。
IS NULLNULL 運算符用于把某個值與 NULL 值進行比較。
ISIS 運算符與 = 相似。
IS NOTIS NOT 運算符與 != 相似。
||連接兩個不同的字符串,得到一個新的字符串。
UNIQUEUNIQUE 運算符搜索指定表中的每一行,確保唯一性(無重復)。
//eg. sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;sqlite> SELECT * FROM COMPANY WHERE AGE IS NOT NULL;//列出 NAME 以 'Ki' 開始的所有記錄,'Ki' 之后的字符不做限制: sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';//同上,已驗證。 sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';//列出 AGE 的值為 25 或 27 的所有記錄: sqlite> SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );//列出 AGE 的值既不是 25 也不是 27 的所有記錄: sqlite> SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );//列出 AGE 的值在 25 與 27 之間的所有記錄: sqlite> SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;//下面的 SELECT 語句使用 SQL 子查詢,子查詢查找 SALARY > 65000 的帶 有 AGE 字段的所有記錄,后邊的 WHERE 子句與 EXISTS 運算符一起使用,列 出了外查詢中的 AGE 存在于子查詢返回的結果中的所有記錄: sqlite> SELECT AGE FROM COMPANY WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);//下面的 SELECT 語句使用 SQL 子查詢,子查詢查找 SALARY > 65000 的帶 有 AGE 字段的所有記錄,后邊的 WHERE 子句與 > 運算符一起使用,列出了外 查詢中的 AGE 大于子查詢返回的結果中的年齡的所有記錄: sqlite> SELECT * FROM COMPANY WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

?2.7.4 位運算符

& 按位與; | 按位或; ~ 按位非; << 左移; >> 右移

2.8 表達式

布爾表達式 eg. sqlite> SELECT * FROM COMPANY WHERE SALARY = 10000;

數值表達式 eg. sqlite> SELECT (15 + 6) AS ADDITION;

日期表達式 eg. sqlite> SELECT CURRENT_TIMESTAMP;

2.9 SQLite 子句

2.9.1 WHERE 子句:條件限定

//eg. sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;sqlite> SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;//子查詢 sqlite> SELECT AGE FROM COMPANY WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

2.9.2 LIKE 子句:匹配通配符指定模式的文本值

一起使用的通配符:百分號(%)代表零個、一個或多個數字或字符。下劃線(_)代表一個單一的數字或字符。這些符號可以被組合使用。

//可以使用 AND 或 OR 運算符來結合 N 個數量的條件。在這里,XXXX 可以是任何數字或字符串值。 SELECT FROM table_name WHERE column LIKE 'XXXX%' or SELECT FROM table_name WHERE column LIKE '%XXXX%' or SELECT FROM table_name WHERE column LIKE 'XXXX_' or SELECT FROM table_name WHERE column LIKE '_XXXX' or SELECT FROM table_name WHERE column LIKE '_XXXX_'; 語句描述
WHERE SALARY LIKE '200%'查找以 200 開頭的任意值
WHERE SALARY LIKE '%200%'查找任意位置包含 200 的任意值
WHERE SALARY LIKE '_00%'查找第二位和第三位為 00 的任意值
WHERE SALARY LIKE '2_%_%'查找以 2 開頭,且長度至少為 3 個字符的任意值
WHERE SALARY LIKE '%2'查找以 2 結尾的任意值
WHERE SALARY LIKE '_2%3'查找第二位為 2,且以 3 結尾的任意值
WHERE SALARY LIKE '2___3'查找長度為 5 位數,且以 2 開頭以 3 結尾的任意值

2.9.3 GLOB 語句:匹配通配符指定模式的文本值,大小寫敏感,遵循 UNIX 的語法

一起使用的通配符:星號(*)代表零個、一個或多個數字或字符。問號(?)代表一個單一的數字或字符。這些符號可以被組合使用。

//可以使用 AND 或 OR 運算符來結合 N 個數量的條件。在這里,XXXX 可以是任何數字或字符串值。 SELECT FROM table_name WHERE column GLOB 'XXXX*' or SELECT FROM table_name WHERE column GLOB '*XXXX*' or SELECT FROM table_name WHERE column GLOB 'XXXX?' or SELECT FROM table_name WHERE column GLOB '?XXXX' or SELECT FROM table_name WHERE column GLOB '?XXXX?' or SELECT FROM table_name WHERE column GLOB '????' 語句描述
WHERE SALARY GLOB '200*'查找以 200 開頭的任意值
WHERE SALARY GLOB '*200*'查找任意位置包含 200 的任意值
WHERE SALARY GLOB '?00*'查找第二位和第三位為 00 的任意值
WHERE SALARY GLOB '2??'查找以 2 開頭,且長度至少為 3 個字符的任意值
WHERE SALARY GLOB '*2'查找以 2 結尾的任意值
WHERE SALARY GLOB '?2*3'查找第二位為 2,且以 3 結尾的任意值
WHERE SALARY GLOB '2???3'查找長度為 5 位數,且以 2 開頭以 3 結尾的任意值

2.9.4 LIMIT 子句:限制由 SELECT 語句返回的數據數量

//限制查詢6條記錄的數據 sqlite> SELECT * FROM COMPANY LIMIT 6;//從一個特定的偏移開始提取記錄,如下為從第(5+1)行提取3條記錄 sqlite> SELECT * FROM COMPANY LIMIT 3 OFFSET 5;

2.9.5 ORDER BY 子句:基于一個或多個列按升序(ASC)或降序(DESC)順序排列數據

//將結果按 SALARY 升序排序: sqlite> SELECT * FROM COMPANY ORDER BY SALARY ASC;//將結果按 NAME 和 SALARY 升序排序: sqlite> SELECT * FROM COMPANY ORDER BY NAME, SALARY ASC;//將結果按 NAME 降序排序: sqlite> SELECT * FROM COMPANY ORDER BY NAME DESC;

2.9.6 GROUP BY 子句:與 SELECT 語句一起使用,對相同的數據進行分組

說明:在 SELECT 語句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前。

//語法 SELECT column-list FROM table_name WHERE [ conditions ] GROUP BY column1, column2....columnN ORDER BY column1, column2....columnN

?

具體實例見:http://www.runoob.com/sqlite/sqlite-group-by.html

疑問:Group By 子句按指定列名進行分組后,對同名的行合并成為一行,若所選擇的組員其他列為數字,則使用SUM函數求和顯示,如例中所示;若為數字不求和會怎樣?若為字符等其他類型數據如何處理?

//GROUP BY 語句測試 //以下語句結果為:顯示同名的最后一條數據的值 SELECT NAME, SALARY FROM COMPANY GROUP BY NAME ORDER BY NAME;//一下語句結果為:顯示同名的最后一條數據的值 SELECT NAME, ADDRESS FROM COMPANY GROUP BY NAME ORDER BY NAME;

2.9.7 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

例如:

// 顯示名稱計數(重復數)小于 2 的所有記錄: sqlite > SELECT * FROM COMPANY GROUP BY name HAVING count(name) < 2;// 顯示名稱計數大于 2 的所有記錄: sqlite > SELECT * FROM COMPANY GROUP BY name HAVING count(name) > 2;

?

至此,SQLite的基本語法及操作已羅列完畢,下一篇整理SQLite的一些高級操作。

轉載于:https://www.cnblogs.com/misybing/p/4919550.html

總結

以上是生活随笔為你收集整理的[原创] SQLite数据库使用清单(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。