SQLite備忘筆記

一. SQLite簡(jiǎn)介

SQLite是一個(gè)進(jìn)程內(nèi)的庫,實(shí)現(xiàn)了自給自足的、無服務(wù)器的、零配置的、事務(wù)性的 SQL 數(shù)據(jù)庫引擎。它是一個(gè)零配置的數(shù)據(jù)庫,這意味著與其他數(shù)據(jù)庫不一樣,您不需要在系統(tǒng)中配置。
就像其他數(shù)據(jù)庫,SQLite 引擎不是一個(gè)獨(dú)立的進(jìn)程,可以按應(yīng)用程序需求進(jìn)行靜態(tài)或動(dòng)態(tài)連接。SQLite 直接訪問其存儲(chǔ)文件。

SQLite特點(diǎn)

  • 不需要一個(gè)單獨(dú)的服務(wù)器進(jìn)程或操作的系統(tǒng)(無服務(wù)器的)。
  • SQLite 不需要配置,這意味著不需要安裝或管理。
  • 一個(gè)完整的 SQLite 數(shù)據(jù)庫是存儲(chǔ)在一個(gè)單一的跨平臺(tái)的磁盤文件。
  • SQLite 是非常小的,是輕量級(jí)的,完全配置時(shí)小于 400KiB,省略可選功能配置時(shí)小于250KiB。
  • SQLite 是自給自足的,這意味著不需要任何外部的依賴。
  • SQLite 事務(wù)是完全兼容 ACID 的,允許從多個(gè)進(jìn)程或線程安全訪問。
  • SQLite 支持 SQL92(SQL2)標(biāo)準(zhǔn)的大多數(shù)查詢語言的功能。
  • SQLite 使用 ANSI-C 編寫的,并提供了簡(jiǎn)單和易于使用的 API。
  • SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中運(yùn)行。

二. 安裝SQLite

  1. 下載
    https://www.sqlite.org/download.html 我們直接選擇預(yù)編譯版本就行了
  1. 安裝
    創(chuàng)建文件夾 C:\sqlite,并在此文件夾下解壓上面兩個(gè)壓縮文件,將得到 sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件。

  2. 創(chuàng)建環(huán)境變量
    添加 C:\sqlite 到 PATH 環(huán)境變量

  3. 測(cè)試環(huán)境
    命令行輸入: sqlite3 --version可以查看版本信息 輸入sqlite3可以進(jìn)入sqlite3

三. SQLite 的點(diǎn)命令

如需獲取可用的點(diǎn)命令的清單,可以在任何時(shí)候輸入 ".help"

具體點(diǎn)命令

1. 退出 SQLite 提示符
.exit
.quit
2. 顯示各種設(shè)置的當(dāng)前值
.show
3. 開啟或關(guān)閉統(tǒng)計(jì)
.stats ON|OFF
#例如:
.stats ON
4. 超時(shí)時(shí)間
.timeout MS
5. 開啟或關(guān)閉頭部顯示
.header(s) ON|OFF
6. 設(shè)置輸出模式
.mode MODE
MODE 說明
csv CSV文件, 逗號(hào)分隔值的輸出
column 左對(duì)齊的列輸出
html HTML 的 <table> 代碼
line 每行一個(gè)值
list 由 .separator 字符串分隔的值
tabs 由 Tab 分隔的值
insert TABLE 表的 SQL 插入(insert)語句
tcl TCL 列表元素
7. 備份數(shù)據(jù)庫到文件
.backup ?DB? FILE
# 例如:
.backup main c:\sqlite
8. 發(fā)生錯(cuò)誤后是否停止
.bail ON|OFF
# 例如:
.bail ON
9. 列出數(shù)據(jù)庫的名稱及其所依附的文件
.databases

四. 數(shù)據(jù)庫操作

1. 創(chuàng)建數(shù)據(jù)庫

#在命令行中
sqlite3 students.db
# 或者在sqlite3命令行中: 
.open students.db
# 存在則直接會(huì)打開,不存在就創(chuàng)建它。

五. 表操作

1. 創(chuàng)建表

CREATE TABLE database_name.table_name(
   column1 datatype  PRIMARY KEY(one or more columns),
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
);
  • 可以使用 SQLIte 命令中的 .tables 命令來驗(yàn)證表是否已成功創(chuàng)建
  • 可以使用 .schema查看創(chuàng)建信息 (也可以只查看單個(gè)的.schema SCHOOL)

關(guān)于每一列的約束.可以參考下表:

約束 說明
NOT NULL 確保某列不能有 NULL 值
UNIQUE 確保某列中的所有值是不同的
PRIMARY KEY 唯一標(biāo)識(shí)數(shù)據(jù)庫表中的各行/記錄
DEFAULT 當(dāng)某列沒有指定值時(shí),為該列提供默認(rèn)值
AUTOINCREMENT 自動(dòng)遞增
CHECK CHECK 約束確保某列中的所有值滿足一定條件

例如:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL UNIQUE,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00,
   TAXRATE       REAL    CHECK(TAXRATE> 0)
);

2. 刪除表

DROP TABLE database_name.table_name;
#例如: DROP TABLE TEST

六. 數(shù)據(jù)操作

1. 插入數(shù)據(jù)(Insert 語句)

方法1: 要確保值的順序與列在表中的順序一致

INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);

方法2:

INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]  
VALUES (value1, value2, value3,...valueN);

在這里,column1, column2,...columnN 是要插入數(shù)據(jù)的表中的列的名稱。

例如

INSERT INTO STUDENT VALUES (1,'TOM',13,'tingshua');

2. 更新數(shù)據(jù)

UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];

例如:

UPDATE STUDENT SET AGE=16 WHERE NAME='TOM';

3. 刪除數(shù)據(jù)

DELETE FROM table_name
WHERE [condition];

七. 查詢操作

1. SELECT語句

SELECT * FROM table_name;
SELECT column1, column2, columnN FROM table_name;

2. 帶條件的查詢

SELECT * FROM STUDENT WHERE AGE>12;
SELECT * FROM STUDENT WHERE AGE%2 == 1;
SELECT * FROM STUDENT WHERE AGE IN (11,13);
SELECT * FROM STUDENT WHERE AGE BETWEEN 10 AND 15;
SELECT * FROM STUDENT WHERE NAME LIKE 'a%%';

下面是sqlite常用的運(yùn)算符

3. 方言LIMIT OFFSET

SQLite 的 LIMIT 子句用于限制由 SELECT 語句返回的數(shù)據(jù)數(shù)量。

4. 排序 ORDER BY

SQLite 的 ORDER BY 子句是用來基于一個(gè)或多個(gè)列按升序或降序順序排列數(shù)據(jù)。

5. 分組 GROUP BY

SQLite 的 GROUP BY 子句用于與 SELECT 語句一起使用,來對(duì)相同的數(shù)據(jù)進(jìn)行分組。

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

假設(shè)我們有這樣一個(gè)表:

我們看到里面有三個(gè)James, 兩個(gè)paul , 我們可以把他們分別視為一組來統(tǒng)計(jì)

6. HAVING子句 (子篩選)

HAVING 子句允許指定條件來過濾將出現(xiàn)在最終結(jié)果中的分組結(jié)果。
WHERE 子句在所選列上設(shè)置條件,而 HAVING 子句則在由 GROUP BY 子句創(chuàng)建的分組上設(shè)置條件。

7. DISTINCT 消除所有重復(fù)

SQLite 的 DISTINCT 關(guān)鍵字與 SELECT 語句一起使用,來消除所有重復(fù)的記錄,并只獲取唯一一次記錄。
有可能出現(xiàn)一種情況,在一個(gè)表中有多個(gè)重復(fù)的記錄。當(dāng)提取這樣的記錄時(shí),DISTINCT 關(guān)鍵字就顯得特別有意義,它只獲取唯一一次記錄,而不是獲取重復(fù)記錄。

SELECT DISTINCT column1, column2,.....columnN 
FROM table_name
WHERE [condition]

八. 常用函數(shù)

1. COUNT 函數(shù)

COUNT 聚集函數(shù)是用來計(jì)算一個(gè)數(shù)據(jù)庫表中的行數(shù)。

SELECT COUNT(AGE) FROM STUDENT WHERE AGE>14;

2. MAX 函數(shù)

MAX 聚合函數(shù)允許我們選擇某列的最大值

SELECT MAX(salary) FROM COMPANY;

3. MIN 函數(shù)

MIN 聚合函數(shù)允許我們選擇某列的最小值

4. AVG 函數(shù)

SELECT AVG(salary) FROM COMPANY;

5. SUM 函數(shù)

SUM 聚合函數(shù)允許為一個(gè)數(shù)值列計(jì)算總和。

SELECT SUM(salary) FROM COMPANY;

6. ABS 函數(shù)

ABS 函數(shù)返回?cái)?shù)值參數(shù)的絕對(duì)值。

SELECT ABS(salary) FROM COMPANY;

7. UPPER 函數(shù) / LOWER 函數(shù)

UPPER 函數(shù)把字符串轉(zhuǎn)換為大寫字母。 / SQLite LOWER 函數(shù)把字符串轉(zhuǎn)換為小寫字母。

SELECT UPPER(NAME),AGE FROM STUDENT;

8. LENGTH 函數(shù)

LENGTH 函數(shù)返回字符串的長度。

SELECT UPPER(NAME),AGE FROM STUDENT WHERE LENGTH(NAME)=3;

九. 事務(wù)控制

1. 開始事務(wù)

BEGIN;

2. 提交事務(wù)

COMMIT;

3. 回滾事務(wù)

ROLLBACK;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • SQLite 簡(jiǎn)介 本教程幫助您了解什么是 SQLite,它與 SQL 之間的不同,為什么需要它,以及它的應(yīng)用程序...
    Import1024閱讀 1,452評(píng)論 2 19
  • 什么是SQLite SQLite,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它包含在一個(gè)相對(duì)小的C...
    zcwfeng閱讀 945評(píng)論 0 6
  • SQLite 什么是SQLite SQLite,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它包含在...
    小烏龜爸閱讀 1,336評(píng)論 0 1
  • 官網(wǎng):http://www.sqlite.org/lang.html (他人的中文翻譯http://blog.cs...
    liboxiang閱讀 4,074評(píng)論 0 6
  • 前言 上一篇我們研究了,sqlite數(shù)據(jù)庫在安卓中的使用,今天我們研究在window客戶端的使用。這篇文章是參考了...
    yzzCool閱讀 2,176評(píng)論 1 4

友情鏈接更多精彩內(nèi)容