2024-09-27 MySQL
目錄
1. 資料庫的基本知識
- 由欄(columns)與列(rows)所組成,每一列都代表一筆實際的 data。
1.1 交易控制(Transaction Management)
- 對資料庫執⾏⼀個交易可能包含⼀連串的新增、修改或刪除指令。為了保證交易的正確與可靠,必須符合
ACID(Atomicity, Consistency, Isolation,Durability)
原則。
- 單元性、最小性(Atomicity):交易中的所有操作不是全部執行,就是全部拒絕,沒有任何中間狀態。
- 一致性(Consistency):交易前與交易後的結果都沒有破壞資料庫的完整性,也就是完全符合資料庫設定的規則。
- 隔離性(Isolation):多個交易完全隔離開來,一個交易的執行不會被其他交易所影響。
- 持久性(Durability):一個交易完成後,該交易對資料庫的變更會永久存在資料庫中。
1.2 關聯式資料庫 v.s. 非關聯式資料庫
- 關聯式資料庫
- 以數學集合論為基礎,建立表格與表格之間建立關聯性,以處理複雜資料。
- 使用 SQL 語言。
- 優點是什麼?避免浪費儲存空間、資料錯誤率提高、增加修改困難。
- Oracle DB, MySQL DB, Microsoft SQL Server, PostgreSQL, …
- 非關聯式資料庫
- 專門用來處理不易以固定表格結構表示的資料或大量非結構化的資料。
- 非關聯式資料庫不依賴數學集合論,並且不一定使用 SQL 語言進行操作。
- 常見的資料模型包括文件、鍵值、圖形、和寬行存儲等。
- MongoDB(文件型資料庫)、Redis(鍵值型資料庫)、Cassandra(列族型資料庫)、Neo4j(圖形資料庫)…
常見的 NoSQL 資料庫類型
- 文件型資料庫:
- 將資料以文件形式儲存,每個文件是一個鍵值對或嵌套結構,可以存儲 JSON、BSON、XML 等格式。
- 鍵值型資料庫:
- 以鍵值對的方式儲存資料,每個鍵對應一個值,非常適合簡單查詢和高速寫入的場景。
- 圖形資料庫:
- 適合存儲和處理網狀結構的資料,節點與邊關聯的圖模型可以用來處理社交網絡、推薦系統等場景。
- 列族型資料庫(寬行資料庫):
- 類似於鍵值型資料庫,但可以將多列資料儲存在同一個鍵下,適合儲存超大規模的結構化和半結構化資料。
1.3 主鍵(PK) & 外來鍵(FK)
- 主鍵(Primary Key, PK)特性
- 外來鍵(Foreign Key, FK)特性
- 為了關聯而存在
- 必須參照到另一個表格的主鍵欄位
- 主鍵欄位必須要有值,外來鍵才能關聯
1.4 資料庫正規化(略)
2. 欄位資料類型介紹
2.1 數字類型
signed / unsigned 代表有 / 無正負號
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
2.2 文字類型
2.3 日期時間類型
- 可自動填入系統時間的型別:
TIMESTAMP
、DATETIME
2.4 位元資料
3. SQL 基礎語法 ─ 建立(待補)
4. SQL 基礎語法 ─ 修改(待補)
5. SQL 基礎語法 ─ 刪除(待補)
QA
FK 要怎麼改欄位型別?
Answer:先把約束條件拔掉
Base64 轉成 Blob(二位元資料)儲存的內容是只有 0 和 1 嗎?
Answer:待查找
可以在 MySQL Workbench 更新,然後再自動更新於 vscode 的 MySQL 嗎?
@@autocommit 的 @@ 代表什麼意思?
Answer:https://chatgpt.com/share/66f628a0-2370-8003-b731-86eb8d79d18b
References
SQL
延伸討論
PHP
Laravel