狠狠撸

狠狠撸Share a Scribd company logo
資料庫入門
Part 1
我是 Allen Chou
● 廢物學渣QQ
● 剛開始學程式
● 學科能力競賽都墊底TAT
● https://allenchou.cc
● s3131212@gmail.com
● FB: Allen Chou (@s3131212)
● https://github.com/s3131212
相信我们都遇过一种状况......
慟!资料不见了!
有哪些資料要存?
● 使用者的帳號密碼
● 作家的著作整理
● 誰按了什麼讚
● 通訊錄裡的聯絡人
● ……
資料要怎麼整理與儲存?
● 存在變數裡然後祈禱程式永遠不會被關閉
● 直接開一個檔案寫進去
● 把资料丢到异次元,缘分到了,资料自然就会回来了
資料庫 Database &
資料庫管理系統
Database Management System
那是什麼?聽起來好可怕 QQ
資料庫 (DB) vs 資料庫管理系統 (DBMS)
● 資料庫Database:處存電子資訊的地方,通常是表格
● 資料庫管理系統(DBMS):管理DB 所用的軟體
id name password email balance
1 王小明 123 aaa@example.com 1000
2 陳小華 456 bbb@example.com -200
3 ☆㊣↖煞氣ㄟ倫哥↘㊣☆ 789 ccc@example.com 8787
row/
record
列
column/field 行
Table 資料表
很多 Table -> Database 資料庫
什麼是 Database
DBMS 的好處
- 為什麼不存在 FS 裡面就好?
● DBMS 跑 Query 比較快+ 方便
● DBMS 支援交易(Transaction)
● DBMS 可以避免當機時資料損毀
資料庫入門 Part1
Query
● 找出第一筆ID 為 Allen 的使用者以及他的密碼
○ ID: Allen
○ password: hello
● 找出 Allen 前三次登入的時間
○ 0: 2018/06/01 10:26:32
○ 1: 2018/06/02 13:47:51
○ 2: 2018/06/03 01:12:34
● 找出 Allen 是否為管理員
○ is_admin: false
● 找出 Allen 的所有朋友
○ 查無資料 QQ
Transaction
● 一連串的讀寫
● 只有完全成功(commit)或完全失敗(rollback),沒有做一半的
● 範例:甲給乙50 元
a. 交易開始
b. 甲帳號 - 50 元
c. 電腦插頭被拔了 QQ
d. 系統恢復運作
e. 交易失敗,還原成交易前
的狀態
a. 交易開始
b. 甲帳號 - 50 元
c. 乙帳號 + 50 元
d. 交易成功
ACID
● Atomicity(原子性):Transaction 只能完全成功或完全失敗,沒有部分成功
● Consistency(一致性):Transaction 前後資料庫維持完整穩定,符合所有預設規則
● Isolation(隔離性):多個Transaction 可以同時執行且維持數據一致
● Durability(持久性):Transaction 結束後數據會永久更改,不會因為系統故障而損毀
SQL
● Structured Query Language
● 一種用來與DBMS 互動的語言
● 支援查詢、新增、更新、刪除數據,及修改資料型態、資料庫權限等等
各式各樣的 DBMS
● Relational Database Management System
○ MySQL
■ MariaDB(後面教學都是用他)
○ Microsoft SQL Server
○ PostgreSQL
● NoSQL
○ MongoDB
○ BigTable
○ CouchDB
等等,NoSQL 是什麼 QQ
那個名字很長的又是什麼 Orz
關聯式資料庫(Relational Database)
● 目前最主流的資料庫形式
● 剛剛所講的一切都是Relational Database 的東西
● 以表格為主,用某個值做對應關係(Relation)
id name
1 Alice
2 Bob
3 Christopher
4 David
id user_id1 user_id2 relationsip
8787 1 2 friend
8788 2 3 friend
8789 2 4 relative
NoSQL
● 這幾年才崛起的
● 號稱「沒有SQL」(Non SQL),但有些也支援類SQL 語言
● Scale-out (Horizontal scaling)
● 速度理論上會比較快,但實務上不一定
● 缺乏一些RDBMS 有的功能,多半沒有ACID,但也有些支援
● 儲存形式
○ Key-Value
○ Document
○ Graph
○ Column
○ ...

More Related Content

資料庫入門 Part1