螞蟻金服內部的這份MySQL學習筆記火了,完整版首次公開!

前言

我們每天都在訪問各種各樣的⽹站、APP,如微信、QQ、抖⾳、今⽇頭條等,這些網站上⾯都存在⼤量的信息數據,這些信息數據都需要有地⽅存儲,一般這些數據都存儲在哪呢?

一般這些數據都存儲在數據庫中。所以如果我們需要開發⼀個⽹站、app,數據庫是我們必須掌握的技術,常⽤的數據庫有mysql、oracle、sqlserver、db2等。 上⾯介紹的⼏個數據庫,oracle性能排名第⼀,服務也是相當到位的,但是收費也是⾮常⾼的,⾦融公司對數據庫穩定性要求⽐較⾼,⼀般會選擇oracle。 mysql是免費的,其他⼏個⽬前暫時收費的,mysql在互聯⽹公司使⽤率也是排名第⼀。資料也⾮常完善,社區也⾮常活躍,所以我們主要學習mysql。

螞蟻金服內部的這份MySQL學習筆記火了,完整版首次公開!

數據庫常⻅的概念

DB:數據庫,存儲數據的容器。

DBMS:數據庫管理系統,又稱爲數據庫軟件或數據庫產品,⽤於創建或管理DB。

SQL:結構化查詢語⾔,⽤於和數據庫通信的語⾔,不是某個數據庫軟件持有的,⽽是⼏乎所有的主流數據庫軟件通⽤的語⾔。中國⼈之間交流需要說漢語,和美國⼈之間交流需要說英語,和數據庫溝通需要說SQL語⾔。

數據庫存儲數據的⼀些特點

  • 數據存放在表中,然後表存放在數據庫中

  • ⼀個庫中可以有多張表,每張表具有唯⼀的名稱(表名)來標識⾃⼰

  • 表中有⼀個或多個列,列又稱爲“字段”,相當於java中的“屬性”

  • 表中每⼀⾏數據,相當於java中的“對象”

螞蟻金服內部的這份MySQL學習筆記火了,完整版首次公開!

數據類型選擇的⼀些建議

(1) 選⼩不選⼤:⼀般情況下選擇可以正確存儲數據的最⼩數據類型,越⼩的數據類型通常更快,佔⽤磁盤,內存和CPU緩存更⼩。

(2) 簡單就好:簡單的數據類型的操作通常需要更少的CPU週期,例如:整型⽐字符操作代價要⼩得多,因爲字符集和校對規則(排序規則)使字符⽐整型⽐較更加複雜。

(3) 儘量避免NULL:儘量制定列爲NOT NULL,除⾮真的需要NULL類型的值,有NULL的列值會使得索引、索引統計和值⽐較更加複雜。

(4) 浮點類型的建議統⼀選擇decimal

(5) 記錄時間的建議使⽤int或者bigint類型,將時間轉換爲時間戳格式,如將時間轉換爲秒、毫秒,進⾏存儲,⽅便⾛索引

螞蟻金服內部的這份MySQL學習筆記火了,完整版首次公開!

MySQL權限⼯作原理

mysql是如何來識別⼀個⽤戶的呢?

mysql爲了安全性考慮,採⽤ 主機名+⽤戶名 來判斷⼀個⽤戶的⾝份,因爲在互聯⽹中很難通過⽤戶名來判斷⼀個⽤戶的⾝份,但是我們可以通過ip或者主機名判斷⼀臺機器,某個⽤戶通過這個機器過來的,我們可以識別爲⼀個⽤戶,所以mysql中採⽤⽤戶名+主機名來識別⽤戶的⾝份。當⼀個⽤戶對mysql發送指令的時候,mysql就是通過⽤戶名和來源(主機)來斷定⽤戶的權限。

Mysql權限驗證分爲2個階段:

(1)階段1:連接數據庫,此時mysql會根據你的⽤戶名及你的來源(ip或者主機名稱)判斷是否有權限連接

(2)階段2:對mysql服務器發起請求操作,如create table、select、delete、update、create index等操作,此時mysql會判斷你是否有權限操作這些指令

如何正確的使⽤索引?

學習索引,主要是寫出更快的sql,當我們寫sql的時候,需要明確的知道sql爲什麼會⾛索引?爲什麼有些sql不⾛索引?sql會⾛那些索引,爲什麼會這麼⾛?我們需要了解其原理,瞭解內部具體過程,這樣使⽤起來才能更順⼿,纔可以寫出更⾼效的sql。

Mysql中索引分爲聚集索引(主鍵索引)和⾮聚集索引

聚集索引(主鍵索引)

每個表⼀定會有⼀個聚集索引,整個表的數據存儲以b+樹的⽅式存在⽂件中,b+樹葉⼦節點中的key爲主鍵值,data爲完整記錄的信息;⾮葉⼦節點存儲主鍵的值。

通過聚集索引檢索數據只需要按照b+樹的搜索過程,即可以檢索到對應的記錄。

⾮聚集索引

每個表可以有多個⾮聚集索引,b+樹結構,葉⼦節點的key爲索引字段字段的值,data爲主鍵的值;⾮葉⼦節點只存儲索引字段的值。

通過⾮聚集索引檢索記錄的時候,需要2次操作,先在⾮聚集索引中檢索出主鍵,然後再到聚集索引中檢索出主鍵對應的記錄,該過程⽐聚集索引多了⼀次操作。

螞蟻金服內部的這份MySQL學習筆記火了,完整版首次公開!

整理的這份MySQL學習筆記非常全面且詳細,覆蓋了 MySQL 基礎學習的方方面面,非常適合初學者入門!

資料也按目錄進行編排,每一章下面都有更具體的內容:

螞蟻金服內部的這份MySQL學習筆記火了,完整版首次公開!

螞蟻金服內部的這份MySQL學習筆記火了,完整版首次公開!

螞蟻金服內部的這份MySQL學習筆記火了,完整版首次公開!

這份MySQL學習筆記一共了578頁,現在分享發給大家

關注公衆號:程序員追風,回覆 012 免費獲取這份MySQL學習筆記,

總結

學習是一輩子的事情,學完一段時間之後,想要檢查學習效果如何,其實最好的方法就是可自己去總結一下。比如我在學習的時候會自己做筆記,然後自己再總結,自己的做的筆記也可方便後續的複習,且都是自己的理解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章