1. 程式人生 > >1 資料庫介紹sqlite3

1 資料庫介紹sqlite3

sqlite3資料庫介紹

引題

變數、讀取本地檔案(txt、csv)這些都可以儲存資料。

  1. 持久化。記憶體中的變數當程式重啟和電腦斷電時丟失資料,而硬碟可以長時間、持久地儲存資料。資料儲存到硬碟上的過程叫持久化。
  2. 資料庫更加專業強大。遠比純文字文件、excel表格強大,增刪改查和統計函式。

資料庫基本概念

  1. 庫:好像整個表格文件。好像一個物流公司共佔地100畝,蓋了50個倉庫,A01倉庫負責儲存河南客戶貨物,A02倉庫負責儲存廣州xx專案物料。每一個倉庫對應一個專案。
  2. 表 table: 對應excel表格裡sheet1 sheet2。有行內容和列組成。表描述一個類,每一行描述一個物件。
  3. 欄位 field: 對應表格頭部的 序號、班級、姓名。好像類的屬性。欄位裡儲存的值的型別需要事先定義。
  4. 值 value:表格每一行具體儲存的資訊。
  5. 主鍵 primary key: 類似表格中 序號 這一列。資料庫中這一列會自增並不會重複。
  6. 外來鍵 foreign key:表1學員資訊裡一個班級欄位引用自另一個表班級資訊表的id列。優點易於維護,保持資料一致性。
  7. 正規化:描述 xx學校時,可以把全部資訊欄位定義到一張表上,也可以分為學員資訊表、班級資訊表、課程資訊表。劃分維度、資訊耦合度可高可低,具體結合業務邏輯分析。
    在這裡插入圖片描述

資料庫欄位型別

資料庫建立表示要事先告訴計算機硬碟,每張表的每個欄位存什麼型別、將要儲存的內容大還是小。長度過小,內容值存不進去,長度太大,浪費硬碟空間。我們需要選擇合適的型別和長度。
各資料庫欄位型別關鍵字基本一致。常用欄位型別如下:

  1. 數值
    整數:常用 INT , INTEGER 佔4個位元組,2*32,可以表示常用範圍整數。
    (不太常用)TINYINT(1位元組) SMALLINT(2位元組) MEDIUMINT(3位元組) BIGINT(8位元組) 適用身份證號、VIP號碼比較長的編號。
  2. 浮點數
    FLOAT(4位元組) 單精度小數。即使是單精度,範圍也不小。
    DOUBLE(8位元組) 雙精度小數。
    場景 金錢計算,軌跡計算。
  3. 字串
    CHAR , char(10) 可以儲存長度(位元組長度)不超過10的字串。例如"hello"。但由於長度按照位元組判斷,存unicode編碼的中文只能存3個。
    常用 VARCHAR 0-65535位元組 ,variable char 可變的字串。VARCHAR(5) 可以儲存5箇中文或5個英文字母。場景 使用者名稱、家庭住址。

TEXT : TINYTEXT medium longtext,場景 大文字儲存,書籍文章、使用者反饋。
BLOB medium long ,二進位制檔案, 場景 圖片、視訊。 但一般不在資料庫中儲存圖片和視訊,因為會增加資料庫的計算壓力和寬頻傳輸壓力和備份還原的難度和使用者資訊靜態資源耦合度到一起,解決方案是 圖片視訊存到普通檔案目錄下,資料庫中儲存檔案路徑。
4. 日期
DATE 日期, 形如"2018-11-08"
常用 DATETIME 日期時間,“2018-11-08 16:52:30.123” “2018-11-08 16:52:30 GTM+8”
常用 TIMESTAMP 時間戳, 1541667270 1541667270.7252207 1541667270725

sqlite的欄位比較簡化:
INTEGER : 整數
REAL : 浮點數
TEXT : 字串
NULL : 什麼都不存

常見資料庫介紹

關係型資料庫:

  1. sqlite:輕量級資料庫。功能基礎簡單,在資料較少情況下效能並不比重型資料庫低。優點,Python直譯器內建驅動,無需安裝直接使用,適合初學資料庫。手機應用使用的就是它。
  2. mysql:最流行的的資料庫。中型。開源、php流行推動了mysql的流行。
  3. PostgreSQL: 大象資料庫,號稱最先進的資料庫。從大學興起的開源資料庫、架構優秀、功能前衛,資料量很大的時候,效能衰減不明顯。消耗相同硬體資源的情況下效能和穩定性優於mysql資料庫。django odoo等python框架官方推薦使用此資料庫。但是目前市場佔有率還不高。
  4. oracle: 地位很高的商用資料庫。昂貴、穩定,功能強大,常與java配合使用。
  5. DB2 sybase MSSQL等,其它的商用資料庫。
  6. access:微軟office套件中包含,輕量,由於資料庫門檻,使用者不多。

no-sql(no only sql)型資料庫:

  1. mongodb 儲存單位是文件,json(類似後端dict)結構整個存進去。資料常放在記憶體中以獲得查詢效能,定期把資料持久化到硬碟上。
  2. redis 鍵值對 “name”=“小明” 。