1. 程式人生 > >QT:SQLite資料庫 '增、刪、改、查'

QT:SQLite資料庫 '增、刪、改、查'

SQLite資料庫 '增、刪、改、查'

1. 資料庫簡介
 資料庫指的是以一定方式儲存在一起,能為多個使用者共享,具有儘可能小的冗餘度的特點,是與應用程式彼此獨立的資料集合。
 // 一定方式:可以理解為策略、演算法
 // 網盤相同的檔案是以 MD5 碼的形式標記相同的檔案,以網路共享。

2. 和資料相關的術語
 DBMS '資料庫管理系統'
 DBA  '資料庫管理員'
 DB  '資料庫'
 RDB  '關係型資料庫'
 RDBMS '關係型資料庫管理系統'

3. 資料分類
 層次型資料庫 - 有序二叉樹,現在用的少
 網路型資料庫 - 網狀結構,用的也少
 關係型資料庫 - '二維表格形式',現在普遍使用的。

4. 常見資料庫
 商業資料庫:
  - 甲骨文 Oracle
, 市場佔有率 50%
  - 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