MySQL學習
- 資料庫基本知識
- 為什么要使用資料庫
- 什么是SQL?
- 什么是MySQL
- 資料庫三大范式是什么
- 第一范式:列不可再分
- 第二范式:屬性完全依賴于主鍵
- 第三范式:屬性不依賴于其他非主屬性 屬性直接依賴于外鍵
- 總結
- MySQL權限表
- MySQL的binlog
- Binlog日志的兩個重要使用場景
- Binlog日志格式
- 參考博客
資料庫基本知識
為什么要使用資料庫
- 資料永久保存
- 使用SQL陳述句方便查詢資料
什么是SQL?
結構化查詢語言(Structured Query Language)簡稱SQL,是一種資料庫查詢語言,
作用:用于存取資料、查詢、更新和管理關系資料庫系統,
什么是MySQL
MySQL是一個關系型資料庫管理系統,由瑞典MySQL AB 公司開發,屬于 Oracle 旗下產品,MySQL 是最流行的關系型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關系資料庫管理系統) 應用軟體之一,在Java企業級開發中非常常用,因為 MySQL 是開源免費的,并且方便擴展,
資料庫三大范式是什么
第一范式:列不可再分
- 每一列屬性都是不可再分的屬性值,確保每一列的原子性
- 兩列的屬性相近或相似或一樣,盡量合并屬性一樣的列,確保不產生冗余資料
第二范式:屬性完全依賴于主鍵
在第一范式的基礎上,要求資料庫表中的每個實體或行必須可以被惟一地區分,為實作區分通常需要為表加上一個列,以存盤各個實體的惟一標識,這個惟一屬性列被稱為主鍵
第三范式:屬性不依賴于其他非主屬性 屬性直接依賴于外鍵
在第二范式的基礎上,要求資料不能存在傳遞關系,即每個屬性都跟主鍵有直接關系而不是間接關系,像:a–>b–>c 屬性之間含有這樣的關系,是不符合第三范式的,
比如Student表(學號,姓名,年齡,性別,所在院校,院校地址,院校電話)
院校地址和院校電話欄位與主鍵不存在直接關系,與所在院校存在直接關系,所以不滿足第三范式的要求,
總結
三大范式是基本的資料庫設計理念,但實際生產中,更重要的是需求和性能,
MySQL權限表
MySQL服務器通過權限表來控制用戶對資料庫的訪問,權限表存放在mysql資料庫里,由mysql_install_db腳本初始化,這些權限表分別user,db,table_priv,columns_priv和host,
- user權限表:記錄允許連接到服務器的用戶帳號資訊,里面的權限是全域級的,
- db權限表:記錄各個帳號在各個資料庫上的操作權限,
- table_priv權限表:記錄資料表級的操作權限,
- columns_priv權限表:記錄資料列級的操作權限,
- procs_priv權限表:記錄存盤程序和存盤函式相關的權限,
- proxies_priv權限表:代理用戶權限,
MySQL的binlog
MySQL 的二進制日志 binlog 可以說是 MySQL 最重要的日志,它記錄了所有的 DDL 和 DML 陳述句(除了資料查詢陳述句select、show等),以事件形式記錄,還包含陳述句所執行的消耗的時間,MySQL的二進制日志是事務安全型的,binlog 的主要目的是復制和恢復,
Binlog日志的兩個重要使用場景
- MySQL主從復制:主節點將資料更改記錄保存到binlog日志 -> 從庫讀取binlog日志保存到服務器中的relay log日志 -> 從庫SQL thread讀取relay log日志完成資料同步
- 資料恢復:通過使用 mysqlbinlog工具來使恢復資料
Binlog日志格式
-
Statement
記錄每一次修改資料的SQL
優點:不需要記錄每一行的變化,減少了binlog日志量,節約了IO, 提高了性能,
缺點:因為記錄的是SQL,為了保證SQL的執行結果一致,同時需要記錄SQL運行時的背景關系,并且一些特定的函式可能無法保證主從資料同步
-
Row
不記錄SQL陳述句背景關系,只保存哪條記錄被修改
優點:binlog中僅記錄哪一條資料被修改,所以解決一些特定情況,無法主從資料同步的問題
缺點:會產生大量日志,占用空間
-
Mixed
Statement與Row的結合版
一般陳述句使用Statement方式記錄,Statement無法完成主從復制操作的SQL使用Row方式記錄
參考博客
涉及侵權,請私信,
MySQL資料庫面試題(2020最新版)
資料庫三大范式
MySQL Binlog 介紹
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/271442.html
標籤:其他
下一篇:查詢select
