SQLite快速入門教程

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

若是您一直在使用其餘關係數據庫管理系統,例如:MySQLPostgreSQLOracle,Microsoft SQL Sever等,而且您據說過SQLite。那麼如今就可更多瞭解和學習SQLite了。html

若是您想使用SQLite數據庫而不是簡單文件來管理應用程序中的結構化數據。並想要當即開始使用SQLite,以肯定SQLite是否能夠用於您的應用程序。 若是你是剛剛開始學習SQL,並但願使用SQLite做爲數據庫系統。 若是您是上述人員之一,這個SQLite教程是很適合您。java

1. SQLite是什麼?

SQLite是一種開源,零配置,獨立的,獨立的,事務關係數據庫引擎,旨在嵌入到應用程序中。python

2. SQLite入門步驟

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

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

2.1 安裝SQLite數據庫

SQLite以其零配置而聞名,因此不須要複雜的設置或管理。 下面來看看如何在系統上安裝SQLite。web

在Windows上安裝SQLite

按照如下步驟進行:sql

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

  • 下載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數據庫進行交互。參考: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

相關文章
相關標籤/搜索