關于sqlite

SQLite是一個進程庫,實現(xiàn)了一個自包含的, 無服務器, 零配置, 事務性的SQL數(shù)據(jù)庫引擎。SQLite的代碼屬于公共領域,因此可以免費用于任何商業(yè)或私人目的。SQLite是世界上部署最廣泛的數(shù)據(jù)庫。
SQLite是一個嵌入式SQL數(shù)據(jù)庫引擎。與大多數(shù)其他SQL數(shù)據(jù)庫不同,SQLite沒有單獨的服務器進程。SQLite直接讀寫普通磁盤文件。具有多個表,索引,觸發(fā)器和視圖的完整SQL數(shù)據(jù)庫包含在單個磁盤文件中。數(shù)據(jù)庫文件格式是跨平臺的 - 您可以在32位和64位系統(tǒng)之間或在big-endian和 little-endian 體系結構之間自由復制數(shù)據(jù)庫 。這些功能使SQLite成為應用程序文件格式的流行選擇。SQLite數(shù)據(jù)庫文件是美國國會圖書館推薦的存儲格式。認為SQLite不是Oracle的替代品,但作為fopen()的替代品。
SQLite是一個緊湊的庫。啟用所有功能后,庫大小可能小于600KiB,具體取決于目標平臺和編譯器優(yōu)化設置。(64位代碼更大。并且一些編譯器優(yōu)化,例如積極的函數(shù)內(nèi)聯(lián)和循環(huán)展開可能導致目標代碼更大。)在內(nèi)存使用和速度之間存在權衡。SQLite通常運行得越快,你給它的內(nèi)存就越多。然而,即使在低內(nèi)存環(huán)境中,性能通常也非常好。根據(jù)它的使用方式,SQLite可以比直接文件系統(tǒng)I/O更快。
sqlite3管理工具
圖形化管理工具可以讓你更好的學習、操縱、使用數(shù)據(jù)庫,windows系統(tǒng)下個人推薦使用免費的SQLiteSpy工具。SQLiteSpy是SQLite的快速而緊湊的GUI數(shù)據(jù)庫管理器。 它讀取SQLite3文件并對它們執(zhí)行SQL。 其圖形用戶界面使探索,分析和操作SQLite3數(shù)據(jù)庫變得非常容易,下載鏈接https://www.yunqa.de/delphi/products/sqlitespy/index。

接下來演示基本的創(chuàng)建表、插入表、查詢表SQL,如果你還不了解SQL語言,跟著練習可以有一個初步的了解,如果已經(jīng)很熟悉SQL了則可以跳過這部分。
下載解壓后打開SQLiteSpy.exe,選擇菜單項File>New Database..

選擇合適的目錄,輸入數(shù)據(jù)庫名(如demo)后點擊保存,完成后會發(fā)現(xiàn)main下type內(nèi)容已經(jīng)是剛剛創(chuàng)建的數(shù)據(jù)庫文件路徑,說明數(shù)據(jù)庫文件已經(jīng)連接成功。


- 創(chuàng)建表
創(chuàng)建了數(shù)據(jù)庫文件后就可以創(chuàng)建各種應用所需的數(shù)據(jù)表了,創(chuàng)建表使用create語句。
--創(chuàng)建表sql (--開頭的表示為注釋語句)
--demo: 創(chuàng)建的表名稱
--id:表列名,INT為整型數(shù)據(jù)類型,not null表示該字段不能為空
--name:表列名,varchar(20)為字符型數(shù)據(jù)類型,20為字符的長度限制
create table demo (id INT not null, name varchar(20));
右側上面的可輸入?yún)^(qū)域為sql語句輸入?yún)^(qū)域,輸入上面的sql,執(zhí)行Execute > Execute SQL菜單項(快捷鍵F9),執(zhí)行成功后展開main可以看到成功創(chuàng)建一個名為demo的表。

- 插入表
表已經(jīng)創(chuàng)建,但是目前表是空的,沒有任何行數(shù)據(jù),需要向表中插入數(shù)據(jù),插入表使用insert語句。
--插入表sql
--demo:表名
--(id, name):表列名
--(1, 'richard'):分別對應列表id, name,值類型必須和表定義中的類型匹配
insert into demo (id, name) values (1, 'richard');
insert into demo (id, name) values (2, 'bluce');
insert into demo (id, name) values (3, 'grace');
insert into demo (id, name) values (4, 'jhon');
insert into demo (id, name) values (5, 'nio');
在sql輸入?yún)^(qū)輸入以上sql向表中插入5條示例數(shù)據(jù),選中所有insert語句執(zhí)行菜單Execute > Execute SQl Selection(快捷鍵ctrl+F9,注意F9是執(zhí)行所有輸入的sql),沒有彈出報錯提示則表示語句執(zhí)行成功。

- 查詢表
查詢表數(shù)據(jù)使用select語句。
--查詢表sql
select * from demo; --查詢表demo的所有數(shù)據(jù)
select * from demo where name = 'nio'; --查詢demo表中name為nio的行數(shù)據(jù)
select name from demo where id=1; --查詢demo表中id為1的行的name字段的值
在sql輸入?yún)^(qū)輸入以上查詢sql,逐條選中Ctrl+F9執(zhí)行,查詢的結果將在右側下方查詢結果區(qū)域顯示。

python連接sqlite3數(shù)據(jù)庫
本文通過python3進行演示,首先你PC需要安裝python3的解釋器,python3編程環(huán)境的搭建可以參見我的另一篇文章python3編程環(huán)境搭建。
SQLite3已經(jīng)是python3的標準模塊,也就是說只要安裝了python你就擁有了SQLite數(shù)據(jù)庫,只要導入sqlite3模塊你就可以開始創(chuàng)建數(shù)據(jù)庫等一系列數(shù)據(jù)庫操作了,使用python操作SQLite3數(shù)據(jù)庫的流程如下所示:

游標(Cursor)是處理數(shù)據(jù)的一種方法,為了查看或者處理結果集中的數(shù)據(jù),游標提供了在結果集中一次一行或者多行前進或向后瀏覽數(shù)據(jù)的能力??梢园延螛水斪饕粋€指針,它可以指定結果中的任何位置,然后允許用戶對指定位置的數(shù)據(jù)進行處理。
仍然以上一節(jié)介紹的內(nèi)容為例,通過python sqlite3 API來實現(xiàn)創(chuàng)建數(shù)據(jù)庫、創(chuàng)建表、插入表、查詢表等一系列操作(數(shù)據(jù)庫文件名為py_demo.db3)。
新建文件py_sqlite3.py輸入以下代碼
# filename:py_sqlite3.py
# python3.7
import sqlite3
# 創(chuàng)建并連接數(shù)據(jù)庫py_demo.db
conn = sqlite3.connect("py_demo.db3")
# 創(chuàng)建游標
cur = conn.cursor()
# 通過cur.execute執(zhí)行sql語句,操作數(shù)據(jù)庫
# 1.創(chuàng)建表demo
cur.execute("""
create table demo (id INT not null, name varchar(20));
""")
# 2.插入數(shù)據(jù)到表demo
cur.execute("insert into demo (id, name) values (1, 'richard');")
cur.execute("insert into demo (id, name) values (2, 'bluce');")
cur.execute("insert into demo (id, name) values (3, 'grace');")
cur.execute("insert into demo (id, name) values (4, 'jhon');")
cur.execute("insert into demo (id, name) values (5, 'nio');")
# 3.查詢表
cur.execute("""
select * from demo;
""")
print(cur.fetchall()) # 打印所有的查詢的結果
# 提交修改
conn.commit()
# 關閉數(shù)據(jù)庫連接
conn.close()
打開終端cd到該py文件所在目錄,執(zhí)行命令python py_sqlite3.py,執(zhí)行結果如下:

執(zhí)行完畢后,檢查當前目錄發(fā)現(xiàn)會生成一個py_demo.db3的數(shù)據(jù)庫文件,同樣可以使用工具SQLiteSpy打開該數(shù)據(jù)庫文件通過sql語句檢查是否創(chuàng)建了表并成功插入數(shù)據(jù),方法同SQLiteSpy介紹章節(jié),這里不再贅述。