給新手學(xué)習(xí)MySQL的建議
本篇文章,筆者將以自己的經(jīng)驗(yàn)及認(rèn)知,談?wù)勎覍?duì)新手學(xué)習(xí) MySQL 的建議。
搭建好環(huán)境,弄清基礎(chǔ)概念。
學(xué)習(xí) MySQL ,首先要有個(gè)自己的環(huán)境,可以在自己本機(jī)或某臺(tái)虛擬機(jī)上安裝下 MySQL ,建議最好使用 Linux 系統(tǒng),體驗(yàn)下完整的安裝步驟,盡量理解清楚每個(gè)步驟的作用。關(guān)于安裝教程,可以參考 Windows 及 Linux 這兩篇文章。
接下來(lái),你要弄清一些基礎(chǔ)概念了,比如什么是庫(kù)、表、字段、索引啊等等。說(shuō)到這里,就簡(jiǎn)單介紹下一些常見(jiàn)的基礎(chǔ)概念吧:
- 實(shí)例(instance):指的是操作系統(tǒng)上的一組進(jìn)程/線程和內(nèi)存的集合。比如我們?cè)诒緳C(jī)安裝好 MySQL ,那就代表著我們本地有一套 MySQL 實(shí)例。
- 數(shù)據(jù)庫(kù)(database):指的是文件系統(tǒng)上的一組文件,等同于 schema 。
- 表(table):表是數(shù)據(jù)的矩陣。在一個(gè)數(shù)據(jù)庫(kù)中的表看起來(lái)像一個(gè)簡(jiǎn)單的電子表格。
- 字段(column):字段是指數(shù)據(jù)表的列,表由字段組成。
- 索引(index):索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)。類似于書(shū)籍的目錄。
- 主鍵(primary key):主鍵是唯一的。一個(gè)數(shù)據(jù)表中只能包含一個(gè)主鍵。
- 記錄(record):指數(shù)據(jù),一行可稱為一條記錄。
- 服務(wù)端(server):指 MySQL 服務(wù)所在端,一般可理解為 MySQL 所在主機(jī)。
- 客戶端(client):連接數(shù)據(jù)庫(kù)部分,比如 Navicat、jdbc 程序都可稱為客戶端。
- 數(shù)據(jù)類型(Data Types):又稱字段類型,即定義某個(gè)字段所能存儲(chǔ)的類型,如 int 、varchar 等。
- 字符集(character set):字符是各種文字和符號(hào)的總稱,字符集是多個(gè)字符的集合。
學(xué)習(xí)基礎(chǔ)操作,熟悉命令規(guī)范。
了解過(guò)基礎(chǔ)概念后,建議你逐步學(xué)習(xí)一些基礎(chǔ)操作,比如如何建庫(kù)、建表、插入數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)、查詢數(shù)據(jù)等等。這部分主要練習(xí)的是 DDL 及 DML 語(yǔ)句。建議大家一定要按照命令規(guī)范來(lái),比如插入數(shù)據(jù)時(shí)指定字段名,建表時(shí)指定字符集。
你可以使用 MySQL 命令行來(lái)執(zhí)行 SQL ,也可以使用可視化客戶端,關(guān)鍵是要明白你每步操作的意義及每條 SQL 的作用。關(guān)于基礎(chǔ)命令操作,可以參考之前發(fā)的《入門 MySQL 》系列文章。
了解報(bào)錯(cuò)內(nèi)容,善用搜索引擎。
在執(zhí)行 SQL 或連接數(shù)據(jù)庫(kù)過(guò)程中,難免會(huì)遇到各種報(bào)錯(cuò),這個(gè)時(shí)候建議你先仔細(xì)看下是否存在書(shū)寫及標(biāo)點(diǎn)錯(cuò)誤,關(guān)鍵還是要留意報(bào)錯(cuò)內(nèi)容,根據(jù)報(bào)錯(cuò)內(nèi)容大概率就能發(fā)現(xiàn)問(wèn)題所在,比如 Access denied for user xxx 、able 'xxx' doesn't exist ... 有些看到報(bào)錯(cuò)內(nèi)容很明顯就可以發(fā)現(xiàn)問(wèn)題,若實(shí)在找不到問(wèn)題,可以復(fù)制報(bào)錯(cuò)內(nèi)容到搜索引擎查找下,要相信不只你一個(gè)人遇到過(guò)這類錯(cuò)誤。
根據(jù)你的崗位,有目的的進(jìn)行學(xué)習(xí)。
在互聯(lián)網(wǎng)行業(yè),不同崗位的小伙伴可能都會(huì)用到 MySQL ,但不同崗位員工學(xué)習(xí) MySQL 的側(cè)重點(diǎn)卻不盡相同。例如做數(shù)據(jù)分析的同學(xué)可能平時(shí)寫查詢 SQL 比較多,開(kāi)發(fā)同學(xué)更側(cè)重程序邏輯如何與數(shù)據(jù)庫(kù)交互,DBA 同學(xué)可能側(cè)重在數(shù)據(jù)庫(kù)高性能高可用方面。所以建議你根據(jù)自己的需求,有側(cè)重點(diǎn)的進(jìn)行學(xué)習(xí)。
要系統(tǒng)、循序漸進(jìn)的學(xué)習(xí)。
市面上關(guān)于 MySQL 的學(xué)習(xí)資料有很多,建議選取一個(gè)系統(tǒng)的資料進(jìn)行學(xué)習(xí),可以是一本書(shū)、一個(gè)網(wǎng)站等。切記不要這個(gè)資料看一點(diǎn)又轉(zhuǎn)向另外一些資料。關(guān)于 MySQL 系統(tǒng)學(xué)習(xí)資料,可以參考這篇文章。
同其他語(yǔ)言學(xué)習(xí)方法一樣,MySQL 學(xué)習(xí)也要循序漸進(jìn),不能說(shuō)我一上來(lái)就學(xué)習(xí)事務(wù)、學(xué)習(xí) SQL 優(yōu)化,任何事情都要一步步來(lái)。當(dāng)然最重要的還是堅(jiān)持,我一直認(rèn)為,有需求才能推動(dòng)你去學(xué)習(xí),假如你工作中經(jīng)常用到 MySQL 或者某個(gè)項(xiàng)目要使用 MySQL ,那么你自然而然的就會(huì)慢慢了解 MySQL ,如果你平時(shí)基本沒(méi)有使用 MySQL 的需求,我相信你也不會(huì)有很大的動(dòng)力去學(xué)習(xí)了。
總結(jié):
碎碎念了這么多,還是希望各位新手能夠有信心,MySQL 數(shù)據(jù)庫(kù)本身還是很容易上手的,它作為一款開(kāi)源的數(shù)據(jù)庫(kù),具有小巧靈活的特點(diǎn),不像 Oracle 一樣對(duì)安裝環(huán)境有著較高的要求且安裝步驟復(fù)雜 。關(guān)鍵還是要堅(jiān)持系統(tǒng)的去學(xué)習(xí),要記住它只是一個(gè)工具,你學(xué)得越好就能用它越好。