SQLite是一個嵌入式關係型資料庫,支持ACID事務,並且被廣泛應用於Android、iOS、Java等跨平台開發中。SQLite資料庫具有小巧、便捷和易用等優點,下面從多個方面詳細闡述SQLite資料庫。
一、SQLite的基礎
SQLite是一個輕型的嵌入式關係型資料庫管理系統,它的數據存儲在單一的磁碟文件中。它可以使用SQL語言進行操作,支持大部分SQL語法,包括事務、觸發器、索引等。SQLite不像傳統的資料庫那樣需要安裝、啟動和配置,只需要將SQLite的可執行文件和開發庫文件導入到項目中即可。
SQLite的代碼示例:
import sqlite3 conn = sqlite3.connect('test.db') print("Opened database successfully") conn.execute('''CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL);''') print("Table created successfully") conn.close()
二、SQLite的數據類型
SQLite支持多種數據類型,包括NULL、INTEGER、REAL、TEXT以及BLOB等數據類型。在創建表的時候需要為每一個欄位指定數據類型,一旦指定無法更改。SQLite的數據類型並不需要指定長度,因為SQLite會根據實際存儲的數據自動調整欄位的長度。例如,如果欄位類型為TEXT,那麼SQLite會自動根據存儲的內容分配相應的長度。
SQLite的數據類型示例:
import sqlite3 conn = sqlite3.connect('test.db') print ("Opened database successfully") conn.execute('''CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL);''') print ("Table created successfully") conn.close()
三、SQLite的事務
SQLite支持ACID事務,也就是Atomicity(原子性)、Consistency(一致性)、Isolation(隔離性)和Durability(持久化)。如果在事務中的任意一步驟出現錯誤,那麼整個事務會被回滾,使得資料庫的狀態恢復到操作之前的狀態。
SQLite的事務代碼示例:
import sqlite3 conn = sqlite3.connect('test.db') print ("Opened database successfully") conn.execute('''CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL);''') print ("Table created successfully") conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (1, 'Paul', 32, 'California', 20000.00 )") conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (2, 'Allen', 25, 'Texas', 15000.00 )") conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )") conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00 )") conn.commit() print ("Records created successfully") conn.close()
四、SQLite的索引
索引是一種特殊的數據結構,用於加速查詢操作。SQLite支持B-Tree和Hash索引,可以使用CREATE INDEX語句創建索引。可以根據需要為一個表創建多個索引,每一個索引可以包含多列,可以根據索引的列進行排序和過濾。
SQLite的索引代碼示例:
import sqlite3 conn = sqlite3.connect('test.db') print ("Opened database successfully") conn.execute('''CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL);''') print ("Table created successfully") conn.execute("CREATE INDEX IDX_NAME ON COMPANY (NAME)") conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (1, 'Paul', 32, 'California', 20000.00 )") conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (2, 'Allen', 25, 'Texas', 15000.00 )") conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )") conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00 )") conn.commit() print ("Records created successfully") conn.close()
五、SQLite的觸發器
SQLite的觸發器是一種特殊的資料庫對象,它可以捕獲特定的資料庫事件(如INSERT、UPDATE、DELETE等),並在事件發生時自動執行某些操作。通過使用觸發器,可以方便地保持資料庫的完整性和約束。
SQLite的觸發器代碼示例:
import sqlite3 conn = sqlite3.connect('test.db') print ("Opened database successfully") conn.execute('''CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL);''') print ("Table created successfully") conn.execute('''CREATE TRIGGER salary_update AFTER UPDATE ON COMPANY FOR EACH ROW WHEN NEW.SALARY > 50000 BEGIN INSERT INTO HIGH_SALARY (ID, NAME, AGE, SALARY) VALUES (NEW.ID, NEW.NAME, NEW.AGE, NEW.SALARY); END;''') conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (1, 'Paul', 32, 'California', 20000.00 )") conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (2, 'Allen', 25, 'Texas', 15000.00 )") conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )") conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00 )") conn.commit() print ("Records created successfully") conn.close()
結束語
本文詳細地闡述了SQLite資料庫的多個方面,包括基礎、數據類型、事務、索引以及觸發器等方面,並給出了對應的代碼示例。SQLite有著小巧、便捷和易用等優點,廣泛應用於跨平台開發中,值得開發者們深入了解。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/310129.html