SQLite快速入門

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

如果您一直在使用其他關係數據庫管理系統,例如:MySQL,PostgreSQL,Oracle,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文件。
    SQLite快速入門

  • 創建一個文件夾:D:/software/sqlite並放置這些文件。

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快速入門

現在就可以在這裏執行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支持以下聚合函數:

  • SQLite AVG()函數 - 返回一個分組中所有值的平均值。
  • SQLite COUNT()函數 - 計算一個分組中的總數量/數目。
  • SQLite MAX()函數 - 返回在一個分組中所有值的最大值。
  • SQLite MIN()函數 - 返回在一個分組中所有值最小值。
  • SQLite SUM()函數 - 返回一個分組中所有值的總和。

7. SQLite編程接口

Java連接SQLite

Java連接SQLite部分中演示如何使用Java JDBC API與SQLite數據庫進行交互。參考:http://www.yiibai.com/sqlite/java-with-sqlite.html

Python連接SQLite

Python連接SQLite中演示如何使用Python sqlite3模塊處理SQLite數據庫。參考:http://www.yiibai.com/sqlite/python-with-sqlite.html

PHP連接SQLite

本節介紹如何使用PHP PDO與SQLite數據庫進行交互。將引導您完成設置PHP項目結構,連接到SQLite數據庫和執行常見數據庫操作的步驟。參考:http://www.yiibai.com/sqlite/php-with-sqlite.html