SQLite快速入門


這個SQLite快速入門教學教你如何有效地開始學習並使用SQLite。通過本教學的實踐操作學習之後,相信你應該可以了解並能夠熟練地使用SQLite了。

如果您一直在使用其他關聯式資料庫管理系統,例如:MySQLPostgreSQLOracle,Microsoft SQL Sever等,並且您聽說過SQLite。那麼現在就可更多了解和學習SQLite了。

如果您想使用SQLite資料庫而不是簡單檔案來管理應用程式中的結構化資料。並想要立即開始使用SQLite,以確定SQLite是否可以用於您的應用程式。
如果你是剛剛開始學習SQL,並希望使用SQLite作為資料庫系統。
如果您是上述人員之一,這個SQLite教學是很適合您。

1. SQLite是什麼?

SQLite是一種開源,零組態,獨立的,獨立的,事務關聯式資料庫引擎,旨在嵌入到應用程式中。

2. SQLite入門步驟

如果這是您第一次使用SQLite,應該先學習這一部分。 按照這3個簡單的步驟,快速開始使用SQLite。

  1. 首先,第一個重要的問題:什麼是SQLite? 在開始使用SQLite之前,簡要了解一下SQLite。
  2. 其次,知道如何在您的計算機上下載和安裝SQLite GUI工具
  3. 第三,介紹如何建立SQLite範例資料庫,並引導完成使用範例資料庫進行練習操作的步驟。

2.1 安裝SQLite資料庫

SQLite以其零組態而聞名,所以不需要複雜的設定或管理。 下面來看看如何在系統上安裝SQLite。

在Windows上安裝SQLite

按照以下步驟進行:

  • 開啟SQLite官方網站,轉到下載頁面 - http://www.sqlite.org/download.html 並下載預編譯的Windows二進位制檔案。

  • 下載sqlite-dllsqlite-shell的zip檔案以及sqlite-tools-win32-x86-3170000.zip檔案。

  • 建立一個檔案夾:D:/software/sqlite並放置這些檔案。

  • 進入D:/software/sqlite目錄並開啟sqlite3命令。它將如下所示:
D:\software\sqlite> sqlite3
SQLite version 3.18.0 2017-03-28 18:48:43
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>

上述方法有助於永久建立資料庫,附加資料庫和分離資料庫。在SQLite中執行CRUD操作有另一種方法。在這種方法中,不需要設定路徑。下面我們來看看如何操作 -

  • 只需下載SQlite預編譯的二進位制zip檔案:sqlite-tools-win32-x86-3170000.zip
  • 解壓到目錄:D:/software/sqlite
  • 直接雙擊執行sqlite3.exe應用程式,得到如下結果 -

現在就可以在這裡執行SQLite查詢。 但是在這裡,資料是暫時的,一旦你關閉了電腦,就將失去操作過的所有資料記錄。因為使用這種方法不能建立,附加或分離資料庫。

在Linux上安裝SQLite

當前,幾乎所有的Linux作業系統都將SQLite作為一部分一起發布。可使用以下命令來檢查你的機器上是否安裝了SQLite。

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

如果沒有看到上面的結果,那麼你的Linux機器上就還沒有安裝SQLite。可以按照以下步驟安裝SQLite:

開啟轉到SQLite下載頁面( http://www.sqlite.org/download.html ),並從原始碼部分下載檔案:sqlite-autoconf-*.tar.gz

按照以下步驟操作:

$ tar xvfz sqlite-autoconf-3071502.tar.gz
$ cd sqlite-autoconf-3071502
$ ./configure --prefix=/usr/local
$ make
$ make install

2.2. SQLite語法大全

語法是一組獨特的規則和約定。 以下是SQLite的語法列表。

區分大小寫:

  • SQLite不區分大小寫。但是,有一些區分大小寫的命令。例如:GLOBglob在SQLite語句中有不同的含義。

注釋:

  • 注釋用於在SQLite程式碼中增加程式碼的可讀性。
  • 注釋不能巢狀。
  • 注釋以兩個連續的「 - 」字元。
  • 也可使用「/*」字元開始,並延伸至下一個「*/」字元對所包括的內容視為註釋。

SQLite語句

所有的SQLite語句都是以關鍵字(如:SELECTINSERTUPDATEDELETEALTERDROP等)開始的。所有語句都以分號(;)結尾。

SQLite ANALYZE語句的語法:

ANALYZE;  
-- or  
ANALYZE database_name;  
-- or  
ANALYZE database_name.table_name;

SQLite AND/OR子句的語法:

SELECT column1, column2....columnN  
FROM   table_name  
WHERE  CONDITION-1 {AND|OR} CONDITION-2;

SQLite ALTER TABLE語句的語法

ALTER TABLE table_name ADD COLUMN column_def...;

SQLite ALTER TABLE語句(Rename)語句的語法

ALTER TABLE table_name RENAME TO new_table_name;

SQLite ATTACH DATABASE語句的語法:

ATTACH DATABASE 'DatabaseName' As 'Alias-Name';

SQLite BEGIN TRANSACTION語句的語法:

BEGIN;  
-- or  
BEGIN EXCLUSIVE TRANSACTION;

SQLite BETWEEN語句的語法:

SELECT column1, column2....columnN  
FROM   table_name  
WHERE  column_name BETWEEN val-1 AND val-2;  
SQLite COMMIT Statement:  
COMMIT;

SQLite CREATE INDEX語句的語法:

CREATE INDEX index_name  
ON table_name ( column_name COLLATE NOCASE );

SQLite CREATE UNIQUE INDEX語句的語法:

CREATE UNIQUE INDEX index_name  
ON table_name ( column1, column2,...columnN);

SQLite CREATE TABLE語句的語法:

CREATE TABLE table_name(  
   column1 datatype,  
   column2 datatype,  
   column3 datatype,  
   .....  
   columnN datatype,  
   PRIMARY KEY( one or more columns ));

SQLite CREATE TRIGGER語句的語法:

CREATE TRIGGER database_name.trigger_name   
BEFORE INSERT ON table_name FOR EACH ROW  
BEGIN   
   stmt1;   
   stmt2;  
   ....  
END;

SQLite CREATE VIEW語句的語法:

CREATE VIEW database_name.view_name  AS  
SELECT statement....;

SQLite CREATE VIRTUAL TABLE語句的語法:

CREATE VIRTUAL TABLE database_name.table_name USING weblog( access.log );  
-- or  
CREATE VIRTUAL TABLE database_name.table_name USING fts3( );

SQLite COMMIT TRANSACTION語句的語法:

COMMIT;

SQLite COUNT語句的語法:

SELECT COUNT(column_name)  
FROM   table_name  
WHERE  CONDITION;

SQLite DELETE語句的語法:

DELETE FROM table_name  
WHERE  {CONDITION};

SQLite DETACH DATABASE語句的語法:

DETACH DATABASE 'Alias-Name';

SQLite DISTINCT語句的語法:

SELECT DISTINCT column1, column2....columnN  
FROM   table_name;

SQLite DROP INDEX語句的語法:

DROP INDEX database_name.index_name;

SQLite DROP TABLE語句的語法:

DROP TABLE database_name.table_name;

SQLite DROP VIEW語句的語法:

DROP INDEX database_name.view_name;

SQLite DROP TRIGGER 語句的語法:

DROP INDEX database_name.trigger_name;

SQLite EXISTS語句的語法:

SELECT column1, column2....columnN  
FROM   table_name  
WHERE  column_name EXISTS (SELECT * FROM   table_name );

SQLite EXPLAIN語句的語法:

EXPLAIN INSERT statement...;  
-- or   
EXPLAIN QUERY PLAN SELECT statement...;

SQLite GLOB語句的語法:

SELECT column1, column2....columnN  
FROM   table_name  
WHERE  column_name GLOB { PATTERN };

SQLite GROUP BY語句的語法:

SELECT SUM(column_name)  
FROM   table_name  
WHERE  CONDITION  
GROUP BY column_name;

SQLite HAVING語句的語法:

SELECT SUM(column_name)  
FROM   table_name  
WHERE  CONDITION  
GROUP BY column_name  
HAVING (arithematic function condition);

SQLite INSERT INTO語句的語法:

INSERT INTO table_name( column1, column2....columnN)  
VALUES ( value1, value2....valueN);

SQLite IN語句的語法:

SELECT column1, column2....columnN  
FROM   table_name  
WHERE  column_name IN (val-1, val-2,...val-N);

SQLite Like語句的語法:

SELECT column1, column2....columnN  
FROM   table_name  
WHERE  column_name LIKE { PATTERN };

SQLite NOT IN語句的語法:

SELECT column1, column2....columnN  
FROM   table_name  
WHERE  column_name NOT IN (val-1, val-2,...val-N);

SQLite ORDER BY語句的語法:

SELECT column1, column2....columnN  
FROM   table_name  
WHERE  CONDITION  
ORDER BY column_name {ASC|DESC};

SQLite PRAGMA語句的語法:

PRAGMA pragma_name;

有關pragma的幾個範例:

PRAGMA page_size;  
PRAGMA cache_size = 1024;  
PRAGMA table_info(table_name);

SQLite RELEASE SAVEPOINT語句的語法:

RELEASE savepoint_name;

SQLite REINDEX語句的語法:

REINDEX collation_name;  
REINDEX database_name.index_name;  
REINDEX database_name.table_name;

SQLite ROLLBACK語句的語法:

ROLLBACK;  
-- or  
ROLLBACK TO SAVEPOINT savepoint_name;

SQLite SAVEPOINT語句的語法:

SAVEPOINT savepoint_name;

SQLite SELECT語句的語法:

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

SQLite UPDATE語句的語法:

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

SQLite VACUUM語句的語法:

VACUUM;  
SQLite WHERE Clause:  
SELECT column1, column2....columnN  
FROM   table_name  
WHERE  CONDITION;

3. SQLite基礎

本節介紹可用於SQLite的基本SQL語句。首先將學習如何建立資料庫,並執行CURD運算元據。 如果您已經熟悉SQL(那最好不過,不熟悉也沒有關係),則會注意到SQLite中SQL方言和SQL標準之間的差異。

  • SQLite查詢資料 – 使用SELECT語句從單個表或多個表中查詢資料。
  • SQLite Order By – 以升序或降序對結果集進行排序。
  • SQLite Select Distinct – 使用DISTINCT子句從表查詢唯一行(去除重複行)。
  • SQLite Where – 使用各種條件過濾行結果集。
  • SQLite Limit – 限制要返回的行數。LIMIT子句可用於獲取查詢返回的必要資料。
  • SQLite IN – 檢查值是否匹配值或子查詢列表中的任何值。
  • SQLite Like – 基於使用萬用字元的模式匹配查詢資料:百分號()和下劃線(_)。
  • SQLite Glob – 確定字串是否匹配指定的UNIX模式。
  • SQLite Group By – 根據指定的條件將資料集合分組。 GROUP BY子句可用於分組總結資料以進行報告。
  • SQLite Having – 指定過濾由GROUP BY子句分組匯總的組的條件。
  • SQLite內連線 – 使用inner join子句查詢來自多個表的資料。
  • SQLite左連線 – 使用left join子句組合查詢來自多個表的資料。
  • SQLite交叉連線 – 演示如何使用交叉連線子句來生成連線中涉及的表的結果集的笛卡爾乘積。
  • SQLite自連線 – 將表連線到其自身以建立將行與其他行連線在同一個表中的結果集。
  • SQLite Union – 將多個查詢的結果集合合到單個結果集中。還討論了UNION和UNION ALL子句之間的差異。
  • SQLite全外連線 – 顯示如何使用left joinunion子句來模擬SQLite中的完整外連線。
  • SQLite Case – 為查詢新增條件邏輯。
  • SQLite子查詢 – 介紹SQLite子查詢和相關子查詢。

4. SQLite資料更新

這部分將介紹如何使用insertupdatedelete語句更新表中的資料。

SQLite insert語句 – 將行資料插入到表中
SQLite update語句 – 更新表中存在行資料記錄。
SQLite delete語句 – 從表中刪除存在行資料記錄。

5. 使用資料庫物件

在本節中,將演示如何使用SQL資料定義語言建立資料庫物件,如:表,檢視,索引。

  • SQLite資料型別 – 介紹SQLite動態型別系統及其重要概念:儲存類,表現型別和型別關聯。
  • SQLite建立表 – 演示如何使用CREATE TABLE語句在資料庫中建立新表。
  • SQLite主鍵 – 演示如何使用PRIMARY KEY約束來定義表的主鍵。
  • SQLite AUTOINCREMENT – 演示如何使用AUTOINCREMENT屬性的工作原理以及為什麼情況下應該避免使用它。
  • SQLite修改表定義 – 演示如何使用ALTER TABLE語句將新行新增到現有表中並重新命名表。 還提供執行其他操作的步驟,例如:刪除列,重新命名列等。
  • SQLite刪除表 – 演示如何從資料庫中刪除指定表。
  • SQLite建立檢視 – 介紹檢視概念,並演示如何在資料庫中建立檢視。
  • SQLite索引 – 演示如何使用和建立索引,以及如何利用索引來加快查詢。
  • SQLite表示式索引 – 演示如何使用基於表示式的索引
  • SQLite VACUUM – 優化資料庫檔案。
  • SQLite觸發器 – 在SQLite資料庫中管理觸發器。

6. SQLite函式

SQLite聚合函式

聚合函式將多行的值組合成一個值,該值可以作為分組的度量,例如:最小值,最大值,平均值,總數等。SQLite支援以下聚合函式:

7. SQLite程式設計介面

Java連線SQLite

Java連線SQLite部分中演示如何使用Java JDBC API與SQLite資料庫進行互動。參考:/18/148/4374.html

Python連線SQLite

Python連線SQLite中演示如何使用Python sqlite3模組處理SQLite資料庫。參考:/18/148/4376.html

PHP連線SQLite

本節介紹如何使用PHP PDO與SQLite資料庫進行互動。將引導您完成設定PHP專案結構,連線到SQLite資料庫和執行常見資料庫操作的步驟。參考:/18/148/4375.html