單元1 數(shù)據(jù)庫基礎(chǔ)知識(shí)
附加亂七八糟的知識(shí)點(diǎn)
(1)關(guān)于MySQL發(fā)音的官方答案:
The official way to pronounce “MySQL” is “My Ess Que Ell” (not “my sequel”), but we do not mind if you pronounce it as “my sequel” or in some other localized way.
(2)碰到的問題:
A ?一個(gè)正常10毫秒就能完成的SQL查詢請求偶爾要執(zhí)行100多毫秒才結(jié)束。
B 當(dāng)在代碼里寫下一行數(shù)據(jù)庫命令的時(shí)候,我就能想到它在數(shù)據(jù)庫端將怎么執(zhí)行,它的性能是怎么樣的,怎樣寫能讓我的應(yīng)用程序訪問數(shù)據(jù)庫的性能最高。
C 哪些數(shù)據(jù)處理讓數(shù)據(jù)庫系統(tǒng)來做性能會(huì)更好,哪些數(shù)據(jù)處理在緩存里做性能會(huì)更好;
在建表和建索引的時(shí)候,我也會(huì)更有意識(shí)地為將來的查詢優(yōu)化做綜合考慮,比如確定是否使用遞增主鍵、主鍵的列怎樣選擇,等等。
D 給學(xué)生介紹的路線
? ?MYSQL實(shí)戰(zhàn)45講中的觀點(diǎn):
【1】我?guī)н^十幾個(gè)應(yīng)屆畢業(yè)生,看著他們成長,要求他們原理先行,再實(shí)踐驗(yàn)證。幾年下來,他們的成長速度都很快,其中好幾個(gè)畢業(yè)沒兩年就成為團(tuán)隊(duì)的骨干力量了。我也在社招的時(shí)候面試過很多有著不錯(cuò)的運(yùn)維實(shí)踐經(jīng)驗(yàn)和能力的候選人,但都因?yàn)閷?duì)數(shù)據(jù)庫原理僅有一知半解的了解,而最終遺憾地沒有通過面試。
? ?【2】 激發(fā)開發(fā)者對(duì)數(shù)據(jù)庫原理的探索欲,從而更好地理解工作中遇到的問題,更能知道背后的為什么。所以我會(huì)選那些平時(shí)使用數(shù)據(jù)庫時(shí)高頻出現(xiàn)的知識(shí),如事務(wù)、索引、鎖等內(nèi)容構(gòu)成專欄的主線。這些主線上是一個(gè)個(gè)的知識(shí)點(diǎn)。每個(gè)點(diǎn)就是一個(gè)概念、一個(gè)機(jī)制或者一個(gè)原理說明。
? 【3】希望能以這樣的方式,讓你對(duì)MySQL的幾條主線有一個(gè)整體的認(rèn)識(shí),并且了解基本概念。在之后的實(shí)踐篇中,我會(huì)引用到這些主線的知識(shí)背景,并著力說明它們是怎樣指導(dǎo)實(shí)踐的。這樣,你可以從點(diǎn)到線,再到面,形成自己的MySQL知識(shí)網(wǎng)絡(luò)。
? 尚硅谷
【1】
1.1 數(shù)據(jù)庫概述
1、為啥要使用數(shù)據(jù)庫呢?
? ?持久化(persistence):把數(shù)據(jù)保存到可掉電式存儲(chǔ)設(shè)備中以供之后使用。大多數(shù)情況下,特別是企業(yè)級(jí)應(yīng)用,數(shù)據(jù)持久化意味著將內(nèi)存中的數(shù)據(jù)保存到硬盤上加以”固化”,而持久化的實(shí)現(xiàn)過程大多通過各種關(guān)系數(shù)據(jù)庫來完成。
?持久化的主要作用是將內(nèi)存中的數(shù)據(jù)存儲(chǔ)在關(guān)系型數(shù)據(jù)庫中,當(dāng)然也可以存儲(chǔ)在磁盤文件、XML數(shù)據(jù)文件中。生活中例子,舉例QQ
2、DB 與DBMS、SQL
數(shù)據(jù)庫管理系統(tǒng)(DBMS)可以管理多個(gè)數(shù)據(jù)庫,一般開發(fā)人員會(huì)針對(duì)每一個(gè)應(yīng)用創(chuàng)建一個(gè)數(shù)據(jù)庫。為保存應(yīng)用中實(shí)體的數(shù)據(jù),一般會(huì)在數(shù)據(jù)庫創(chuàng)建多個(gè)表,以保存程序中實(shí)體用戶的數(shù)據(jù)。

常見的數(shù)據(jù)庫管理系統(tǒng)排名(DBMS)
目前互聯(lián)網(wǎng)上常見的數(shù)據(jù)庫管理軟件有Oracle、MySQL、MS SQL Server、DB2、PostgreSQL、Access、Sybase、Informix這幾種。以下是2021年DB-Engines Ranking 對(duì)各數(shù)據(jù)庫受歡迎程度進(jìn)行調(diào)查后的統(tǒng)計(jì)結(jié)果:(查看數(shù)據(jù)庫最新排名: https://db-engines.com/en/ranking )

具體的數(shù)據(jù)庫介紹(每個(gè)DBMS的介紹,見 尚硅谷的第01章 數(shù)據(jù)庫概述)
重點(diǎn)突出MYSQL

關(guān)于MySQL 8.0
MySQL從5.7版本直接跳躍發(fā)布了8.0版本,可見這是一個(gè)令人興奮的里程碑版本。MySQL 8版本在功能上做了顯著的改進(jìn)與增強(qiáng),開發(fā)者對(duì)MySQL的源代碼進(jìn)行了重構(gòu),最突出的一點(diǎn)是多MySQL Optimizer優(yōu)化器進(jìn)行了改進(jìn)。不僅在速度上得到了改善,還為用戶帶來了更好的性能和更棒的體驗(yàn)。

為啥這么多公司用呢?
開放源代碼,使用成本低。
性能卓越,服務(wù)穩(wěn)定。
軟件體積小,使用簡單,并且易于維護(hù)。
歷史悠久,社區(qū)用戶非常活躍,遇到問題可以尋求幫助。
許多互聯(lián)網(wǎng)公司在用,經(jīng)過了時(shí)間的驗(yàn)證。
可以擴(kuò)展給學(xué)生講的東西
oracle VS ?MySQL
Oracle 更適合大型跨國企業(yè)的使用,因?yàn)樗麄儗?duì)費(fèi)用不敏感,但是對(duì)性能要求以及安全性有更高的要求。MySQL 由于其體積小、速度快、總體擁有成本低,可處理上千萬條記錄的大型數(shù)據(jù)庫,尤其是開放源碼這一特點(diǎn),使得很多互聯(lián)網(wǎng)公司、中小型網(wǎng)站選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫(Facebook,Twitter,YouTube,阿里巴巴/螞蟻金服,去哪兒,美團(tuán)外賣,騰訊)。
RDBMS VS 非RDBMS

NoSQL 泛指非關(guān)系型數(shù)據(jù)庫,包括了榜單上的鍵值型數(shù)據(jù)庫、文檔型數(shù)據(jù)庫、搜索引擎和
列存儲(chǔ)等,除此以外還包括圖形數(shù)據(jù)庫。也只有用 NoSQL 一詞才能將這些技術(shù)囊括進(jìn)來。
鍵值型數(shù)據(jù)庫:通過 Key-Value 鍵值的方式來存儲(chǔ)數(shù)據(jù),其中 Key 和 Value 可以是簡單的對(duì)象,也可以是復(fù)雜的對(duì)象。Key 作為唯一的標(biāo)識(shí)符,優(yōu)點(diǎn)是查找速度快,在這方面明顯優(yōu)于關(guān)系型數(shù)據(jù)庫,缺點(diǎn)是無法像關(guān)系型數(shù)據(jù)庫一樣使用條件過濾(比如 WHERE),如果你不知道去哪里找數(shù)據(jù),就要遍歷所有的鍵,這就會(huì)消耗大量的計(jì)算。鍵值型數(shù)據(jù)庫典型的使用場景是作為內(nèi)存緩存。Redis 是最流行的鍵值型數(shù)據(jù)庫。
NoSQL 對(duì) SQL 做出了很好的補(bǔ)充,比如實(shí)際開發(fā)中,有很多業(yè)務(wù)需求,其實(shí)并不需要完整的關(guān)系型數(shù)據(jù)庫功能,非關(guān)系型數(shù)據(jù)庫的功能就足夠使用了。這種情況下,使用性能更高、成本更低的非關(guān)系型數(shù)據(jù)庫當(dāng)然是更明智的選擇。比如:日志收集、排行榜、定時(shí)器等。
在 DBMS 排名中,還是 SQL 陣營的比重更大,影響力前 5 的 DBMS 中有4 個(gè)是關(guān)系型數(shù)據(jù)庫,而排名前 20 的 DBMS 中也有 12 個(gè)是關(guān)系型數(shù)據(jù)庫。所以說,掌握 SQL 是非常有必要的
1.2 MySQL的安裝與配置
先講解過程,可以參考【尚硅谷】的該章節(jié),然后 參考教材中的【綜合實(shí)訓(xùn)】 安裝和配置MySQL服務(wù)器 ?P24部分。
參考網(wǎng)頁:(102條消息) MySql免安裝版下載及安裝_感謝相遇Y(^_^)Y的博客-CSDN博客_mysql免安裝版
用命令提示符,不用用powershell
我修改密碼為111111
測試部分
參考MOOC題目,在學(xué)習(xí)通上展現(xiàn)
操作記錄:出現(xiàn)問題以及解決方案的記錄
【1】啟動(dòng)DBeaver時(shí),提示無法連接,那肯定是因?yàn)閙ysql沒有啟動(dòng),于是,啟動(dòng)
net start mysql,但是出錯(cuò)

查閱以后,原來是命令窗口不是管理員,于是用管理員啟動(dòng)cmd

從左上角可以看出來差異。
【2】問題2,打開dbeaver仍然出錯(cuò)!

然后呢:
解決
在新建連接的時(shí)候,驅(qū)動(dòng)屬性里設(shè)置 allowPublicKeyRetrieval 的值為 true

如果是JDBC連接報(bào)錯(cuò),只需要在連接后加上:allowPublicKeyRetrieval=true即可
【3】查看mysql的端口號(hào)
第一步,啟動(dòng)mysql ?

若輸入如圖所示的命令行 mysql這個(gè)是服務(wù)名哦 如果安裝版的就是mysqld如果解壓版的就是自己設(shè)置的哦 輸入密碼進(jìn)入

然后我們打開安裝目錄文件夾下的my.ini 配置文件 找到如圖所示的項(xiàng) 修改你想要的端口號(hào) 保存(這個(gè)也是很簡單的查看當(dāng)前端口號(hào)的方法哦)

然后打開然后打開計(jì)算機(jī)管理界面的服務(wù) 找到服務(wù)項(xiàng)后點(diǎn)擊重啟選項(xiàng)


重啟完畢后 重新進(jìn)入大家可以看到 我這次進(jìn)入的命令行和之前不一樣 那是因?yàn)槎丝谔?hào)不是默認(rèn)的了 需要在這里指定 然后同樣的方法 你會(huì)看到端口號(hào)已經(jīng)改變了
這里呢,啟動(dòng)mysql后,命令行里就得使用-P新端口號(hào)

使用默認(rèn)端口的時(shí)候,不需要-P