一文輕松掌握SQLite3基本用法(收藏版)
SQLite,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關系型數(shù)據(jù)庫管理系統(tǒng),它包含在一個相對小的C庫中。它是D.RichardHipp建立的公有領域項目。它的設計目標是嵌入式的,而且已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時能夠跟很多程序語言相結(jié)合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源的世界著名數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。SQLite第一個Alpha版本誕生于2000年5月。 至2021年已經(jīng)接近有21個年頭,SQLite也迎來了一個版本 SQLite 3已經(jīng)發(fā)布。
SQLite3是一種輕量級的嵌入式數(shù)據(jù)庫,廣泛應用于移動設備、嵌入式系統(tǒng)和小型應用中。它不需要獨立的服務器進程,數(shù)據(jù)存儲在一個單一的磁盤文件中,極大地方便了應用的部署和管理。本文將帶你全面掌握SQLite3的基本用法,包括數(shù)據(jù)庫的創(chuàng)建、表的操作、數(shù)據(jù)的增刪改查以及索引和事務的使用。
一、SQLite3簡介
SQLite3是一個C語言庫,提供了一個獨立、無服務器、零配置、事務性的SQL數(shù)據(jù)庫引擎。其設計目標是嵌入式環(huán)境,但也非常適用于小型應用程序和開發(fā)測試環(huán)境。
二、SQLite3的安裝
在大多數(shù)現(xiàn)代操作系統(tǒng)中,SQLite3都已經(jīng)預裝。如果沒有預裝,可以通過包管理器安裝:
Ubuntu/Debian:
sudo apt-get install sqlite3
macOS:
brew install sqlite
Windows:
從SQLite官方網(wǎng)站下載預編譯的二進制文件。
三、SQLite3基本操作
3.1 創(chuàng)建數(shù)據(jù)庫
SQLite3數(shù)據(jù)庫是一個文件,創(chuàng)建數(shù)據(jù)庫實際上是創(chuàng)建一個文件。
sqlite3 mydatabase.db
上面的命令會創(chuàng)建一個名為 mydatabase.db的數(shù)據(jù)庫文件,并啟動SQLite3交互式命令行工具。
3.2 創(chuàng)建表
使用SQL語句創(chuàng)建表。下面的示例創(chuàng)建一個名為 users的表,包含 id、name和 email三個字段。
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE
);
?3.3 插入數(shù)據(jù)
使用 INSERT語句向表中插入數(shù)據(jù)。
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');3.4 查詢數(shù)據(jù)
使用 SELECT語句查詢數(shù)據(jù)。
SELECT * FROM users;
可以使用 WHERE子句進行條件查詢。
SELECT * FROM users WHERE name = 'Alice';
3.5 更新數(shù)據(jù)
使用 UPDATE語句更新數(shù)據(jù)。
UPDATE users SET email = 'alice_new@example.com' WHERE name = 'Alice';
3.6 刪除數(shù)據(jù)
使用 DELETE語句刪除數(shù)據(jù)。
DELETE FROM users WHERE name = 'Bob';
3.7 創(chuàng)建索引
索引可以加快查詢速度。使用 CREATE INDEX語句創(chuàng)建索引。
CREATE INDEX idx_users_name ON users (name);
3.8 使用事務
事務確保一組操作要么全部成功,要么全部失敗,保持數(shù)據(jù)的一致性。使用 BEGIN TRANSACTION開始事務,COMMIT提交事務,ROLLBACK回滾事務。
BEGIN TRANSACTION;
INSERT INTO users (name, email) VALUES ('Charlie', 'charlie@example.com');
UPDATE users SET email = 'alice_new@example.com' WHERE name = 'Alice';
COMMIT;如果在事務中發(fā)生錯誤,可以使用 ROLLBACK回滾事務。
BEGIN TRANSACTION;
INSERT INTO users (name, email) VALUES ('David', 'david@example.com');
-- 假設此操作失敗
UPDATE users SET email = 'error@example.com' WHERE name = 'Error';
ROLLBACK;四、SQLite3高級功能
4.1 觸發(fā)器
觸發(fā)器是在特定事件發(fā)生時自動執(zhí)行的SQL語句。使用 CREATE TRIGGER語句創(chuàng)建觸發(fā)器。
CREATE TRIGGER user_update_trigger
AFTER UPDATE ON users
BEGIN
INSERT INTO user_logs (user_id, action) VALUES (NEW.id, 'UPDATE');
END;
?4.2 視圖
視圖是虛擬表,通過查詢結(jié)果定義。使用 CREATE VIEW語句創(chuàng)建視圖。
CREATE VIEW user_emails AS SELECT name, email FROM users;
4.3 參數(shù)化查詢
在應用程序中使用SQLite3時,參數(shù)化查詢可以防止SQL注入攻擊。
import sqlite3
conn = sqlite3.connect('mydatabase.db')
cursor = conn.cursor()
name = 'Alice'
cursor.execute("SELECT * FROM users WHERE name = ?", (name,))
print(cursor.fetchall())
conn.close()
?4.4 導入和導出數(shù)據(jù)
SQLite3支持導入和導出數(shù)據(jù),可以使用 .import命令導入CSV文件,使用 .dump命令導出數(shù)據(jù)庫內(nèi)容。
sqlite3 mydatabase.db sqlite> .import data.csv users sqlite> .dump > backup.sql
五、實際案例
5.1 項目背景
假設我們正在開發(fā)一個簡單的圖書管理系統(tǒng),需要存儲圖書信息和借閱記錄。
5.2 數(shù)據(jù)庫設計
我們需要兩個表:books和 borrow_records。
CREATE TABLE books (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
author TEXT NOT NULL,
available INTEGER NOT NULL DEFAULT 1
);
CREATE TABLE borrow_records (
id INTEGER PRIMARY KEY AUTOINCREMENT,
book_id INTEGER NOT NULL,
borrower TEXT NOT NULL,
borrow_date TEXT NOT NULL,
return_date TEXT,
FOREIGN KEY (book_id) REFERENCES books(id)
);5.3 操作示例
插入圖書數(shù)據(jù)
INSERT INTO books (title, author) VALUES ('1984', 'George Orwell');
INSERT INTO books (title, author) VALUES ('To Kill a Mockingbird', 'Harper Lee');借閱圖書
BEGIN TRANSACTION; UPDATE books SET available = 0 WHERE id = 1; INSERT INTO borrow_records (book_id, borrower, borrow_date) VALUES (1, 'John Doe', '2023-07-02'); COMMIT;
歸還圖書
BEGIN TRANSACTION; UPDATE books SET available = 1 WHERE id = 1; UPDATE borrow_records SET return_date = '2023-07-15' WHERE book_id = 1 AND return_date IS NULL; COMMIT;
到此這篇關于一篇文章帶你掌握SQLite3基本用法的文章就介紹到這了,更多相關SQLite3用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SQLite數(shù)據(jù)庫管理系統(tǒng)-我所認識的數(shù)據(jù)庫引擎
SQLite是一款輕量級的、被設計用于嵌入式系統(tǒng)的關聯(lián)式數(shù)據(jù)庫管理系統(tǒng),SQLite 是一個實現(xiàn)自我依賴、純客戶端、零配置且支持事務的數(shù)據(jù)庫引擎2013-01-01
sqlite時間戳轉(zhuǎn)時間語句(時間轉(zhuǎn)時間戳)
這篇文章主要介紹了sqlite時間戳轉(zhuǎn)時間、時間轉(zhuǎn)時間戳的方法,需要的朋友可以參考下2014-06-06
UniApp集成SQLite數(shù)據(jù)庫的完整方法步驟
在uni-app中集成SQLite,可以實現(xiàn)離線數(shù)據(jù)存儲,例如在物資管理APP中存儲商品信息、出入庫記錄等,這篇文章主要介紹了UniApp集成SQLite數(shù)據(jù)庫的相關資料,需要的朋友可以參考下2026-04-04
SQLite教程(五):索引和數(shù)據(jù)分析/清理
這篇文章主要介紹了SQLite教程(五):索引和數(shù)據(jù)分析/清理,本文講解了創(chuàng)建索引、刪除索引、重建索引、數(shù)據(jù)分析、數(shù)據(jù)清理等內(nèi)容,需要的朋友可以參考下2015-05-05

