一、sqlite3 簡介
SQLite是一種嵌入式關係型數據庫管理系統(RDBMS),被廣泛用於移動設備和嵌入式系統中。SQLite原址為:https://www.sqlite.org。SQLite採用C語言編寫,通常使用sqlite3命令進行交互。
二、基礎命令
1、打開數據庫
sqlite3 filename
filename是指數據庫文件的名稱,如無則在當前目錄新建一個文件名為filename的數據庫文件。如果文件已存在,則打開已存在的數據庫。
2、創建表格
CREATE TABLE table_name(
column1 datatype contraint,
column2 datatype contraint,
...
columnN datatype contraint);
其中,table_name是你要創建的表格的名稱;columnX是你要創建的表格中的列的名稱;datatype是列的數據類型,如INTEGER、TEXT、BLOB、REAL等; contraint用於約束對該列的限制,如NOT NULL(不允許為空)、UNIQUE(唯一約束)、PRIMARY KEY(主鍵)等。
3、插入數據
INSERT INTO table_name(column1, column2, column3,...columnN)
VALUES(value1, value2, value3,...valueN);
其中,table_name是你要插入數據的表格的名稱;columnX是你要插入數據的表格中的列的名稱;valueX是你要插入的值。
4、查詢數據
SELECT column1, column2,...columnN
FROM table_name
[WHERE CONDITION];
其中,table_name是你要查詢數據的表格的名稱;columnX是你要查詢數據的表格中的列的名稱;CONDITION是查詢條件,如WHERE columnX=valueX。
5、修改數據
UPDATE table_name
SET column_name = new_value
[WHERE CONDITION];
其中,table_name是你要修改數據的表格的名稱;column_name是你要修改的數據列的名稱;new_value是你要修改為的數據值;CONDITION是修改條件,如WHERE columnX=valueX。
6、刪除數據
DELETE FROM table_name
[WHERE CONDITION];
其中,table_name是你要刪除數據的表格的名稱;CONDITION是刪除條件。
三、高級使用
1、索引的創建和使用
CREATE INDEX index_name ON table_name (column1, column2,...columnN);
其中,index_name為自定義索引名;table_name為需要創建索引的表名;column1, column2,…columnN 為需要創建索引的列名。索引是將表中某些列的值存儲在另外一起數據結構中,此數據結構稱為索引表。索引表中的數據與表中的數據相同,只是多一個列指向對應行的地址。這樣在查詢該表數據時,可以先通過索引表找到對應的所有地址,從而降低查詢的時間。
2、事務的使用
事務是針對一組操作的操作序列,它們可以全部成功,也可以全部失敗。使用事務可以確保操作的原子性,即保證在該操作被提交後,要麼全部執行成功,要麼全部回滾。SQLite支持隱式事務提交和顯式事務提交兩種方式。
BEGIN; // 開始事務
UPDATE table_name SET column_name = new_value WHERE CONDITION;
DELETE FROM table_name WHERE CONDITION;
COMMIT; // 提交事務
其中,BEGIN表示開始一筆事務,COMMIT表示提交這筆事務。如果需要回滾當前的事務,則需要使用ROLLBACK命令。
3、模糊查詢和正則表達式的使用
SQLite提供模糊查詢的LIKE和GLOB操作符,以及使用正則表達式進行查詢的REGEXP操作符。
SELECT column1, column2,...columnN
FROM table_name
WHERE columnX LIKE '%value%';
SELECT column1, column2,...columnN
FROM table_name
WHERE columnX GLOB '*value*';
SELECT column1, column2,...columnN
FROM table_name
WHERE columnX REGEXP 'value';
四、優化
1、建立合適的索引。合適的索引可以極大的提高查詢效率,但是過多的索引會減低數據插入、更新、刪除的速度。
2、減少重複列。SQLite中,每個列在每個表中只會存在一個數據類型。如果需要在多個表中使用同一個列,那麼應該將這個列單獨剝離出來,然後建立外鍵關係。
3、使用預處理語句。SQLite中,預處理語句可以把SQL查詢語句分解成兩部分,提高了執行效率,避免了SQL注入等安全問題。
sqlite3_prepare_v2(database, sql, -1, &stmt, NULL);
4、合理使用內存。SQLite默認緩存大小為2KB,如果需要修改緩存大小,則可以使用PRAGMA命令進行修改。
PRAGMA cache_size = 64000;
5、使用WAL模式。WAL是一種SQLite3提供的日誌模式,可以大幅度提升插入和更新操作的性能。
PRAGMA journal_mode = WAL;
五、總結
本文對SQLite3命令的基礎使用和優化進行了詳細的闡述,從而使讀者在使用和優化SQLite,提高數據查詢效率和安全性方面可以有所啟發。
原創文章,作者:EJNXM,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/372390.html