1. 程式人生 > >SQLite 數據庫介紹和基本用法

SQLite 數據庫介紹和基本用法

png 觸發 align rim 嵌入 pan upd 參考 add

? 簡介

SQLite 是一款輕量級的關系型數據庫,同時也是一種嵌入式數據庫,與 OracleMySQLSQL Server 等數據庫不同,它可以內嵌在程序中,是程序中的一個組成部分。所以,經常被應用在 AndroidIOSHtml5 等移動設備上,而且它運行速度非常快,占用資源也較少,通常只需要幾百 KB 的內存就夠了。SQLite 不僅支持標準的 SQL 語法,還遵循了數據庫的 ACID 事務,在功能上基本能滿足數據庫的常見操作。因為它是輕量級的本地存儲數據庫,完成本地數據的持久化,所以要求就不能向 OracleDB2 等關系型數據庫那麽高了。下面,分為以下幾點來了解 SQLite

數據庫:

1. SQLite 的優點

2. SQLite 的數據類型

3. SQLite 常用的 DDL 語法

4. SQLite 常用的 CRUD 語法

5. SQLite 的系統表

1. SQLite 的優點

1) 輕量級、內嵌式數據庫,運行速度快,性能高。

2) 通常與程序一起編譯,不需要獨立維護,簡約而不簡單。最好不要把它看作一個數據庫,而是一個文件系統。因為,它其實就是一個以 *.db 為後綴的一個文件。

3) 支持常見的 SQL 語法,和常見的數據庫功能,比如:子查詢、事物、索引、視圖、觸發器等,可以說是麻雀雖小五臟俱全。

4) 可移植性強,支持在 Unix

LinuxMACWindows 等系統上運行。

2. SQLite 的數據類型

SQLite 的數據類型也比較簡單,大致分為以下四種:

1) Integer, 有符號的整數類型。

2) Real, 浮點型。

3) Text, 字符串類型,編碼取決於 BD 的編碼。

4) Blob, 二進制類型,用於存儲二進制數據(比如:圖片、視頻等)。

5) Boolean, SQLite 並沒有 bool 類型,通常使用 0 1 代替,0 表示 false 1 表示 true

6) DateTimeSQLite 也沒有日期類型,通常使用 Text 類型代替。

3.

SQLite 常用的 DDL 語法

1) 創建表

1. 直接創建表(已存在會報錯)

CREATE TABLE Employee(

id integer PRIMARY KEY AUTOINCREMENT, --員工Id:主鍵,自增

name text not null, --姓名

age integer null, --年齡

salary real null, --薪資

pic blob null --照片

);

2. 不存在則創建,否則不創建

CREATE TABLE IF NOT EXISTS Employee(...);

3. 根據現有表,創建另一張表(並寫入數據)

CREATE TABLE Employee2 AS SELECT id, name FROM Employee;

結果:CREATE TABLE Employee2(id INT,name TEXT);

2) 修改表

1. 修改表名

ALTER TABLE Employee RENAME TO Employees;

2. 添加字段

ALTER TABLE Employees ADD COLUMN birthday text;

3. 修改字段

不支持直接修改,但可以通過其他方式達到修改的目的。

4. 刪除字段

也不支持直接刪除,但可以通過其他方式達到刪除的目的。

3) 刪除表

1. 直接刪除(不存在會報錯)

DROP TABLE Employee2;

2. 存在刪除,否則不刪除

DROP TABLE IF EXISTS Employee2;

4. SQLite 常用的 CRUD 語法

1) 插入數據(必須指定列名)

INSERT INTO Employees(name, age, salary, pic)

VALUES(‘愛變成‘, 21, 8888.88, null),(‘程旭媛‘, 20, 6666.66, null)

,(‘張無忌‘, 26, 7890.00, null),(‘孫悟空‘, 50, 10000.00, null)

,(‘白骨精‘, 100, 10000.00, null);

2) 查詢數據

1. 簡單查詢

SELECT * FROM Employees WHERE id = 1;

技術分享圖片

2. 模糊查詢

SELECT * FROM Employees WHERE id < 4 AND name LIKE ‘%‘;

技術分享圖片

3. 排序 + 分頁

SELECT * FROM Employees WHERE id > 0 ORDER BY id ASC LIMIT 1, 2;

技術分享圖片

4. 分組 + 過濾(查詢相同的工資)

SELECT salary FROM Employees WHERE id > 0 GROUP BY salary HAVING COUNT(*) > 1;

技術分享圖片

5. 常用的聚合函數

SELECT MAX(salary) 最高工資, MIN(salary) 最低工資, AVG(salary) 平均工資, SUM(salary) 總工資, COUNT(1) 總人數 FROM Employees;

技術分享圖片

6. 子查詢 + IN 子句 + BETWEEN 子句

SELECT COUNT(1) AS ‘20~30歲的總人數‘ FROM Employees WHERE id IN(SELECT id FROM Employees WHERE age BETWEEN 20 AND 30);

技術分享圖片

7. 別名 + 左連接 + union 子句

SELECT T1.*, T2.user_name FROM Employees AS T1

LEFT JOIN (SELECT 1 id, ‘aibiancheng‘ user_name union SELECT 2 id, ‘chengxuyuan‘ user_name) AS T2 ON(T2.id=T1.id)

WHERE T1.id <= 3; --多表存在相同字段名時,必須指定別名

技術分享圖片

3) 修改數據

UPDATE Employees SET salary=salary+1

WHERE name=‘愛變成‘; --愛變成的 SQLite 學會了工資必須加1塊啊,哈哈哈~

技術分享圖片

4) 刪除數據

DELETE FROM Employees WHERE name IN(‘孫悟空‘, ‘白骨精‘); -- 刪除西遊記裏的人物

技術分享圖片

5. SQLite 的系統表

1) sqlite_master, 查看表、視圖、索引等結構

SELECT * FROM sqlite_master WHERE type=‘table‘ AND name LIKE ‘%Employee%‘;

技術分享圖片

2) sqlite_sequence, 查看自增長字段的下一個值(可使用 UPDATE 語句修改)

SELECT * FROM sqlite_sequence WHERE name=‘Employees‘;

技術分享圖片

? 總結

1. 本文簡要的介紹了 SQLite 的基本概念,和基本的使用語法,更多的使用可參考:http://www.runoob.com/sqlite/sqlite-tutorial.html

2. 另外推薦一個 SQLite 的客戶端工具 SQLite Expert,可在官網中下載,地址:http://www.sqliteexpert.com/download.html

SQLite 數據庫介紹和基本用法