這個(gè)SQLite快速入門教程教你如何有效地開始學(xué)習(xí)并使用SQLite。通過(guò)本教程的實(shí)踐操作學(xué)習(xí)之后,相信你應(yīng)該可以了解并能夠熟練地使用SQLite了。
如果您一直在使用其他關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),例如:MySQL,PostgreSQL,Oracle,Microsoft SQL Sever等,并且您聽說(shuō)過(guò)SQLite。那么現(xiàn)在就可更多了解和學(xué)習(xí)SQLite了。
如果您想使用SQLite數(shù)據(jù)庫(kù)而不是簡(jiǎn)單文件來(lái)管理應(yīng)用程序中的結(jié)構(gòu)化數(shù)據(jù)。并想要立即開始使用SQLite,以確定SQLite是否可以用于您的應(yīng)用程序。
如果你是剛剛開始學(xué)習(xí)SQL,并希望使用SQLite作為數(shù)據(jù)庫(kù)系統(tǒng)。
如果您是上述人員之一,這個(gè)SQLite教程是很適合您。
SQLite是一種開源,零配置,獨(dú)立的,獨(dú)立的,事務(wù)關(guān)系數(shù)據(jù)庫(kù)引擎,旨在嵌入到應(yīng)用程序中。
如果這是您第一次使用SQLite,應(yīng)該先學(xué)習(xí)這一部分。 按照這3個(gè)簡(jiǎn)單的步驟,快速開始使用SQLite。
SQLite以其零配置而聞名,所以不需要復(fù)雜的設(shè)置或管理。 下面來(lái)看看如何在系統(tǒng)上安裝SQLite。
按照以下步驟進(jìn)行:
打開SQLite官方網(wǎng)站,轉(zhuǎn)到下載頁(yè)面 - http://www.sqlite.org/download.html 并下載預(yù)編譯的Windows二進(jìn)制文件。
下載sqlite-dll和sqlite-shell的zip文件以及sqlite-tools-win32-x86-3170000.zip文件。
創(chuàng)建一個(gè)文件夾: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>
上述方法有助于永久創(chuàng)建數(shù)據(jù)庫(kù),附加數(shù)據(jù)庫(kù)和分離數(shù)據(jù)庫(kù)。在SQLite中執(zhí)行CRUD操作有另一種方法。在這種方法中,不需要設(shè)置路徑。下面我們來(lái)看看如何操作 -
sqlite-tools-win32-x86-3170000.zip。D:/software/sqlite。sqlite3.exe應(yīng)用程序,得到如下結(jié)果 -
現(xiàn)在就可以在這里執(zhí)行SQLite查詢。 但是在這里,數(shù)據(jù)是暫時(shí)的,一旦你關(guān)閉了電腦,就將失去操作過(guò)的所有數(shù)據(jù)記錄。因?yàn)槭褂眠@種方法不能創(chuàng)建,附加或分離數(shù)據(jù)庫(kù)。
當(dāng)前,幾乎所有的Linux操作系統(tǒng)都將SQLite作為一部分一起發(fā)布??墒褂靡韵旅顏?lái)檢查你的機(jī)器上是否安裝了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>
如果沒(méi)有看到上面的結(jié)果,那么你的Linux機(jī)器上就還沒(méi)有安裝SQLite??梢园凑找韵虏襟E安裝SQLite:
打開轉(zhuǎn)到SQLite下載頁(yè)面( 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
語(yǔ)法是一組獨(dú)特的規(guī)則和約定。 以下是SQLite的語(yǔ)法列表。
區(qū)分大小寫:
GLOB和glob在SQLite語(yǔ)句中有不同的含義。注釋:
- ”字符。/*”字符開始,并延伸至下一個(gè)“*/”字符對(duì)所包括的內(nèi)容視為注釋。SQLite語(yǔ)句
所有的SQLite語(yǔ)句都是以關(guān)鍵字(如:SELECT,INSERT,UPDATE,DELETE,ALTER,DROP等)開始的。所有語(yǔ)句都以分號(hào)(;)結(jié)尾。
SQLite ANALYZE語(yǔ)句的語(yǔ)法:
ANALYZE;
-- or
ANALYZE database_name;
-- or
ANALYZE database_name.table_name;
SQLite AND/OR子句的語(yǔ)法:
SELECT column1, column2....columnN
FROM table_name
WHERE CONDITION-1 {AND|OR} CONDITION-2;
SQLite ALTER TABLE語(yǔ)句的語(yǔ)法
ALTER TABLE table_name ADD COLUMN column_def...;
SQLite ALTER TABLE語(yǔ)句(Rename)語(yǔ)句的語(yǔ)法
ALTER TABLE table_name RENAME TO new_table_name;
SQLite ATTACH DATABASE語(yǔ)句的語(yǔ)法:
ATTACH DATABASE 'DatabaseName' As 'Alias-Name';
SQLite BEGIN TRANSACTION語(yǔ)句的語(yǔ)法:
BEGIN;
-- or
BEGIN EXCLUSIVE TRANSACTION;
SQLite BETWEEN語(yǔ)句的語(yǔ)法:
SELECT column1, column2....columnN
FROM table_name
WHERE column_name BETWEEN val-1 AND val-2;
SQLite COMMIT Statement:
COMMIT;
SQLite CREATE INDEX語(yǔ)句的語(yǔ)法:
CREATE INDEX index_name
ON table_name ( column_name COLLATE NOCASE );
SQLite CREATE UNIQUE INDEX語(yǔ)句的語(yǔ)法:
CREATE UNIQUE INDEX index_name
ON table_name ( column1, column2,...columnN);
SQLite CREATE TABLE語(yǔ)句的語(yǔ)法:
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns ));
SQLite CREATE TRIGGER語(yǔ)句的語(yǔ)法:
CREATE TRIGGER database_name.trigger_name
BEFORE INSERT ON table_name FOR EACH ROW
BEGIN
stmt1;
stmt2;
....
END;
SQLite CREATE VIEW語(yǔ)句的語(yǔ)法:
CREATE VIEW database_name.view_name AS
SELECT statement....;
SQLite CREATE VIRTUAL TABLE語(yǔ)句的語(yǔ)法:
CREATE VIRTUAL TABLE database_name.table_name USING weblog( access.log );
-- or
CREATE VIRTUAL TABLE database_name.table_name USING fts3( );
SQLite COMMIT TRANSACTION語(yǔ)句的語(yǔ)法:
COMMIT;
SQLite COUNT語(yǔ)句的語(yǔ)法:
SELECT COUNT(column_name)
FROM table_name
WHERE CONDITION;
SQLite DELETE語(yǔ)句的語(yǔ)法:
DELETE FROM table_name
WHERE {CONDITION};
SQLite DETACH DATABASE語(yǔ)句的語(yǔ)法:
DETACH DATABASE 'Alias-Name';
SQLite DISTINCT語(yǔ)句的語(yǔ)法:
SELECT DISTINCT column1, column2....columnN
FROM table_name;
SQLite DROP INDEX語(yǔ)句的語(yǔ)法:
DROP INDEX database_name.index_name;
SQLite DROP TABLE語(yǔ)句的語(yǔ)法:
DROP TABLE database_name.table_name;
SQLite DROP VIEW語(yǔ)句的語(yǔ)法:
DROP INDEX database_name.view_name;
SQLite DROP TRIGGER 語(yǔ)句的語(yǔ)法:
DROP INDEX database_name.trigger_name;
SQLite EXISTS語(yǔ)句的語(yǔ)法:
SELECT column1, column2....columnN
FROM table_name
WHERE column_name EXISTS (SELECT * FROM table_name );
SQLite EXPLAIN語(yǔ)句的語(yǔ)法:
EXPLAIN INSERT statement...;
-- or
EXPLAIN QUERY PLAN SELECT statement...;
SQLite GLOB語(yǔ)句的語(yǔ)法:
SELECT column1, column2....columnN
FROM table_name
WHERE column_name GLOB { PATTERN };
SQLite GROUP BY語(yǔ)句的語(yǔ)法:
SELECT SUM(column_name)
FROM table_name
WHERE CONDITION
GROUP BY column_name;
SQLite HAVING語(yǔ)句的語(yǔ)法:
SELECT SUM(column_name)
FROM table_name
WHERE CONDITION
GROUP BY column_name
HAVING (arithematic function condition);
SQLite INSERT INTO語(yǔ)句的語(yǔ)法:
INSERT INTO table_name( column1, column2....columnN)
VALUES ( value1, value2....valueN);
SQLite IN語(yǔ)句的語(yǔ)法:
SELECT column1, column2....columnN
FROM table_name
WHERE column_name IN (val-1, val-2,...val-N);
SQLite Like語(yǔ)句的語(yǔ)法:
SELECT column1, column2....columnN
FROM table_name
WHERE column_name LIKE { PATTERN };
SQLite NOT IN語(yǔ)句的語(yǔ)法:
SELECT column1, column2....columnN
FROM table_name
WHERE column_name NOT IN (val-1, val-2,...val-N);
SQLite ORDER BY語(yǔ)句的語(yǔ)法:
SELECT column1, column2....columnN
FROM table_name
WHERE CONDITION
ORDER BY column_name {ASC|DESC};
SQLite PRAGMA語(yǔ)句的語(yǔ)法:
PRAGMA pragma_name;
有關(guān)pragma的幾個(gè)示例:
PRAGMA page_size;
PRAGMA cache_size = 1024;
PRAGMA table_info(table_name);
SQLite RELEASE SAVEPOINT語(yǔ)句的語(yǔ)法:
RELEASE savepoint_name;
SQLite REINDEX語(yǔ)句的語(yǔ)法:
REINDEX collation_name;
REINDEX database_name.index_name;
REINDEX database_name.table_name;
SQLite ROLLBACK語(yǔ)句的語(yǔ)法:
ROLLBACK;
-- or
ROLLBACK TO SAVEPOINT savepoint_name;
SQLite SAVEPOINT語(yǔ)句的語(yǔ)法:
SAVEPOINT savepoint_name;
SQLite SELECT語(yǔ)句的語(yǔ)法:
SELECT column1, column2....columnN
FROM table_name;
SQLite UPDATE語(yǔ)句的語(yǔ)法:
UPDATE table_name
SET column1 = value1, column2 = value2....columnN=valueN
[ WHERE CONDITION ];
SQLite VACUUM語(yǔ)句的語(yǔ)法:
VACUUM;
SQLite WHERE Clause:
SELECT column1, column2....columnN
FROM table_name
WHERE CONDITION;
本節(jié)介紹可用于SQLite的基本SQL語(yǔ)句。首先將學(xué)習(xí)如何創(chuàng)建數(shù)據(jù)庫(kù),并執(zhí)行CURD操作數(shù)據(jù)。 如果您已經(jīng)熟悉SQL(那最好不過(guò),不熟悉也沒(méi)有關(guān)系),則會(huì)注意到SQLite中SQL方言和SQL標(biāo)準(zhǔn)之間的差異。
DISTINCT子句從表查詢唯一行(去除重復(fù)行)。%)和下劃線(_)。GROUP BY子句可用于分組總結(jié)數(shù)據(jù)以進(jìn)行報(bào)告。GROUP BY子句分組匯總的組的條件。inner join子句查詢來(lái)自多個(gè)表的數(shù)據(jù)。left join子句組合查詢來(lái)自多個(gè)表的數(shù)據(jù)。left join和union子句來(lái)模擬SQLite中的完整外連接。這部分將介紹如何使用insert,update和delete語(yǔ)句更新表中的數(shù)據(jù)。
SQLite insert語(yǔ)句 – 將行數(shù)據(jù)插入到表中
SQLite update語(yǔ)句 – 更新表中存在行數(shù)據(jù)記錄。
SQLite delete語(yǔ)句 – 從表中刪除存在行數(shù)據(jù)記錄。
在本節(jié)中,將演示如何使用SQL數(shù)據(jù)定義語(yǔ)言創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象,如:表,視圖,索引。
CREATE TABLE語(yǔ)句在數(shù)據(jù)庫(kù)中創(chuàng)建新表。PRIMARY KEY約束來(lái)定義表的主鍵。AUTOINCREMENT屬性的工作原理以及為什么情況下應(yīng)該避免使用它。ALTER TABLE語(yǔ)句將新行添加到現(xiàn)有表中并重命名表。 還提供執(zhí)行其他操作的步驟,例如:刪除列,重命名列等。SQLite聚合函數(shù)
聚合函數(shù)將多行的值組合成一個(gè)值,該值可以作為分組的度量,例如:最小值,最大值,平均值,總數(shù)等。SQLite支持以下聚合函數(shù):
Java連接SQLite
Java連接SQLite部分中演示如何使用Java JDBC API與SQLite數(shù)據(jù)庫(kù)進(jìn)行交互。參考:http://www.yiibai.com/sqlite/java-with-sqlite.html
Python連接SQLite
Python連接SQLite中演示如何使用Python sqlite3模塊處理SQLite數(shù)據(jù)庫(kù)。參考:http://www.yiibai.com/sqlite/python-with-sqlite.html
PHP連接SQLite
本節(jié)介紹如何使用PHP PDO與SQLite數(shù)據(jù)庫(kù)進(jìn)行交互。將引導(dǎo)您完成設(shè)置PHP項(xiàng)目結(jié)構(gòu),連接到SQLite數(shù)據(jù)庫(kù)和執(zhí)行常見數(shù)據(jù)庫(kù)操作的步驟。參考:http://www.yiibai.com/sqlite/php-with-sqlite.html