QT:SQLite資料庫 '增、刪、改、查'
1. 資料庫簡介
資料庫指的是以一定方式儲存在一起,能為多個使用者共享,具有儘可能小的冗餘度的特點,是與應用程式彼此獨立的資料集合。
// 一定方式:可以理解為策略、演算法
// 網盤相同的檔案是以 MD5 碼的形式標記相同的檔案,以網路共享。
2. 和資料相關的術語
DBMS '資料庫管理系統'
DBA '資料庫管理員'
DB '資料庫'
RDB '關係型資料庫'
RDBMS '關係型資料庫管理系統'
3. 資料分類
層次型資料庫 - 有序二叉樹,現在用的少
網路型資料庫 - 網狀結構,用的也少
關係型資料庫 - '二維表格形式',現在普遍使用的。
4. 常見資料庫
商業資料庫:
- 甲骨文 Oracle
- IBM DB2 , 市場佔有率 20%
- 微軟 Sqlserver , 市場佔有率 15%
非商業資料庫:
- Sun Mysql ---> 被Oracle收購,甲骨文旗下產品
- 開源SQLite,輕量級嵌入式領域關係型資料庫
5. 資料庫的操作語言
'SQL' 結構化查詢語言
是一種特殊目的的程式語言,實現資料庫的查詢和程式設計,常用於關係型資料庫系統,實現資料增、刪、改、查等操作。
三、SQLite 資料庫的操作
1. 安裝
線上安裝 $: sudo apt-get install sqlite3
離線安裝
$: sudo dpkg -i /home/tarena/Downloads/sqlite3/sqlite3_3.7.9-2ubuntu1.2_amd64.deb
2. 在終端輸入 sqlite3 ,進入sqlite命令列操作介面
$: sqlite3
SQLite version 3.7.9 2011-11-01 00:52:41
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
sqlite>
...
3. sqlite指令 instructions 指令
.help // 幫助手冊,列出所有sqlite所有幫助資訊
.quit // .e 或 .exit 退出
Ctrl + L // 實現清理螢幕
; // 英文分號代表sqlite語句命令結束,回到正常sqlite命令列
四、在命令列使用SQL語句操作sqlite資料庫
1. 建立資料庫檔案(DB)
$: sqlite3 DatabaseName.db
建立成功後,會自動進入sqlite命令列的介面" sqlite> "
eg:
$: sqlite3 testDB.db // 開啟名為testDB的資料檔案,不存在則建立
2. 輸入" .database " 檢視資料庫檔案資訊
seq // 序號
name // 資料庫名
file // 資料庫檔名
檔案許可權:- rw- r-- r--
3. 建立資料表 '語法'
CREATE TABLE table_name (
列名1 型別1 [約束],
列名2 型別2 [約束],
...);
【注】sql語句中不區分大小寫,習慣把'關鍵字'(create table)寫成大寫
eg:
建立一個公司員工資訊表company,
列包含:ID、姓名、年齡、地址、薪資
sqlite> CREATE TABLE company(
...> id INT PRIMARY KEY NOT NULL,
...> name TEXT NOT NULL,
...> age INT NOT NULL,
...> address TEXT,
...> salary REAL NOT NULL);
sqlite> .table ---> ' .table ' // 查看錶的名字
.ta
company
sqlite> .schema ---> ' .schema ' // 檢視建立表詳細資訊
.sc
CREATE TABLE company(
id INT PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
age INT NOT NULL,
address TEXT,
salary REAL NOT NULL);
'[約束]':
PRIMARY KEY // 主鍵約束,資料唯一,並且可以加快資料訪問
NOT NULL // 非空,限制插入資料不能為空
'型別關鍵字':
INT 整型
TEXT 文字字串
REAL 浮點數
練習:
建立學生成績的資料表
表名:Student
列名:ID(INT) NAME(TEXT) SCORE(REAL)
要求ID唯一,每一列的資料非空。
sqlite> create table Student(
...> ID INT PRIMARY KEY NOT NULL,
...> NAME TEXT NOT NULL,
...> SCORE REAL NOT NULL);
4. 刪除資料庫表 '語法'
DROP TABLE 表名;
eg:
DROP TABLE Student;
將Student表刪除,裡面的資料也會被刪除,且資料恢復比較困難。
5. 插入資料 '語法'
INSERT INTO 表名
(列名1, 列名2, 列名3...)
VALUES(資料1, 資料2, 資料3...);
eg:向company表中插入資料
10086 "張飛" 30歲 "四川" 800.5
10011 "關羽" 31歲 801.5
INSERT INTO company
(id, name, age, address, salary)
VALUES(10086, "張飛", 30, "四川", 800.5);
INSERT INTO company
(id, name, age, salary)
VALUES(10011, "關羽", 31, 800.5);
6. 查詢資料 '語法'
select * from company;
eg:
sqlite> select * from company ;
10011|關羽|31|成都|801.5
10011|關羽|31|成都|801.5
10086|張飛|30|四川|800.5
10000|曹操|35||999.9
10002|劉備|34|河南|855.5
10013|關興|28|湖南|600.5
10015|劉禪|18|北京|300.0
10014|曹植|16|廣東|1200.5
10008|趙雲|26|上海|888.8
7. 刪除資料 '語法'
DELETE FROM 表名 WHERE [條件] // 一般使用唯一屬性進行匹配刪除
eg:// 比如 id
DELETE FROM company WHERE id = 10000;
8. 修改資料 '語法'
UPDATE 表名 SET 列名1 = 數值1, 列名2 = 數值2...
WHERE [條件];
// 一般使用唯一屬性進行匹配修改單條資訊
eg:
UPDATE company SET age= 26 WHERE id= 10014;
UPDATE company SET address= "上海" WHERE id < 10014;
// 算數:+ - * / % 比較:== = != <> > < >= <= !< !>
// 邏輯:AND BETWEEN EXISTS IN LIKE
// 邏輯:GLOB NOT OR IS UNIQUE
9. 查詢資料 '語法'
// 所有列,可以用 * 替換
SELECT 列名1, 列名2, 列名3...
FROM 表名;
SELECT 列名1, 列名2, 列名3... FROM 表名 WHERE [條件];
SELECT 列名1, 列名2, 列名3... FROM 表名 WHERE [條件]
ORDER BY 列名 ASC/DESC ; // ASC 升序,DESC 降序
eg:
SELECT id, name FROM company;
SELECT id, name FROM company WHERE id > 10014;
SELECT * FROM company WHERE salary < 1000;
SELECT id,name FROM company ORDER BY id ASC;
10. 擴充SQLite資料庫操作,瞭解命令: LIKE / LIMIT / DISTINCT