SQLite 數據庫介紹和基本用法
? 簡介
SQLite 是一款輕量級的關系型數據庫,同時也是一種嵌入式數據庫,與 Oracle、MySQL、SQL Server 等數據庫不同,它可以內嵌在程序中,是程序中的一個組成部分。所以,經常被應用在 Android、IOS、Html5 等移動設備上,而且它運行速度非常快,占用資源也較少,通常只需要幾百 KB 的內存就夠了。SQLite 不僅支持標準的 SQL 語法,還遵循了數據庫的 ACID 事務,在功能上基本能滿足數據庫的常見操作。因為它是輕量級的本地存儲數據庫,完成本地數據的持久化,所以要求就不能向 Oracle、DB2 等關系型數據庫那麽高了。下面,分為以下幾點來了解 SQLite
1. SQLite 的優點
2. SQLite 的數據類型
3. SQLite 常用的 DDL 語法
4. SQLite 常用的 CRUD 語法
5. SQLite 的系統表
1. SQLite 的優點
1) 輕量級、內嵌式數據庫,運行速度快,性能高。
2) 通常與程序一起編譯,不需要獨立維護,簡約而不簡單。最好不要把它看作一個數據庫,而是一個文件系統。因為,它其實就是一個以 *.db 為後綴的一個文件。
3) 支持常見的 SQL 語法,和常見的數據庫功能,比如:子查詢、事物、索引、視圖、觸發器等,可以說是麻雀雖小五臟俱全。
4) 可移植性強,支持在 Unix
2. SQLite 的數據類型
SQLite 的數據類型也比較簡單,大致分為以下四種:
1) Integer, 有符號的整數類型。
2) Real, 浮點型。
3) Text, 字符串類型,編碼取決於 BD 的編碼。
4) Blob, 二進制類型,用於存儲二進制數據(比如:圖片、視頻等)。
5) Boolean, SQLite 並沒有 bool 類型,通常使用 0 或 1 代替,0 表示 false, 1 表示 true。
6) DateTime,SQLite 也沒有日期類型,通常使用 Text 類型代替。
3.
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 數據庫介紹和基本用法