[MySQL光速入門]002 讓MySQL跑起來

貓哥的技術部落格發表於2019-04-18

資料庫簡介

什麼是資料庫

官方定義:

資料庫是將資料按照一定的資料模型組織, 描述和儲存, 具有較小的冗餘, 較高資料獨立性和易擴充套件性, 並作為各種使用者共享的資料集合

不過, 我更喜歡我自己的理解:

資料庫, 顧名思義, 就是資料的倉庫

其實相關概念還有很多, 舉個栗子吧...

假設你有一個工廠, 用來生產電視機, 那麼肯定也需要一個倉庫來儲存電視, 還需要招聘一個管理倉儲的王大爺...

那麼問題來了, 你為什麼需要一個倉庫?

  1. 存放電視機, 方便統計和管理(資料管理)
  2. 找個王大爺, 防止電視失竊(資料持久化)

這裡的電視機就是DATA(資料)

存放電視機的倉庫就是DB(資料庫)

這裡的王大爺就是DBA(資料庫管理員)

你問:"老王, 我們們今天有多少電視機入庫?"

王大爺說: "稍等, 老總, 我用管理軟體查一下..."

這裡的管理軟體就是DBMS(資料庫管理系統), 常見DMS: MySQL, Oracle, SQL server

有下面一個公式:

DBS = DBA 使用 DBMS 管理 DB

資料庫系統 就是 資料庫管理員 使用資料庫管理系統 來管理 資料庫

什麼是資料持久化

簡單來說, 就是想辦法不讓資料丟失.

可能你會好奇, 什麼資料存在計算機裡, 還會丟失?

答案是: 可能會, 也可能不會...主要看你把它存到了哪裡

這裡需要引出兩個概念記憶體,硬碟

記憶體的特點, 速度快, 非常之快, 斷電資料丟失

硬碟的特點, 容量大, 非常之大, 斷電資料不丟失

簡單的說, 記憶體小而快, 硬碟慢而大, 4000G(4T)硬碟的價格約等於16G記憶體的價格, 4000:16

所以, 要想資料持久化, 就必須把資料存到硬碟裡

如果你是用資料庫管理系統的話, 它會自動完成資料持久化

什麼是mysql

最著名的資料庫管理系統DBMS, 就是前面老王使用的管理軟體

當然DBMS不止MySQL一個, MySQL為什麼能在眾多DBMS中脫穎而出呢?

  1. 體積小, 執行快
  2. 價效比高, 因為不要錢...
  3. 方便各個作業系統移植
  4. 對SQL語句支援的很好
  5. 執行速度很快

安裝mysql

這裡只講windows系統的壓縮包安裝方式, 因為這種方式最簡單,最流行

MySQL5.7官網下載地址

cdn.mysql.com//Downloads/…

安裝MySQL

1. 解壓

把壓縮包解壓到D:\test_mysql_57 (路徑隨意)

1553160580095.png

2. 新增環境變數

把bin目錄的路徑()新增到環境變數, 因為該資料夾下有msyql.exe(命令列工具-客戶端)msyqld.exe(服務端)

1553160705494.png

1553160735339.png

1553160754567.png

1553160777651.png

1553160827790.png

1553160841667.png

1553160891223.png

一路點選確定, 關閉剛才所有的彈窗

3. 配置檔案

建立配置檔案: D:\test_mysql_57\my.ini

建立資料儲存資料夾: D:\test_mysql_57\data

1553220877136.png

1553221359136.png

內容如下

[client]
port=3306 # 預設埠號
[mysql]
default-character-set=utf8 # 預設字符集

[mysqld]
port=3306
basedir="D:/test_mysql_57/" # mysql路徑
datadir="D:/test_mysql_57/data/" # mysql資料路徑
character-set-server=utf8 # 預設字符集
default-storage-engine=innodb # 預設資料庫引擎
複製程式碼
4. 使用命令列, 安裝mysql服務

windows+X 開啟命令列(管理員身份),

1553419812727.png

輸入命令: mysqld install 連線名 --defaults-file="配置檔案路徑"

mysqld install mysql3306 --defaults-file="D:\test_mysql_57\my.ini" 
複製程式碼

1553419000337.png

5. 初始化mysql

輸入如下命令

mysqld  --initialize
複製程式碼

1553419036688.png

6. 啟動mysql

輸入如下命令

net start mysql3306
複製程式碼
7. 重置密碼

再從檔案中找到預設密碼

D:\test_mysql_57\data\USER-20170622RQ.err

1553420031031.png

使用預設密碼登入mysql, 重置密碼

mysql -h localhost -u root -p
複製程式碼

1553420266402.png

SET PASSWORD = PASSWORD('你的新密碼');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;
複製程式碼

1553420361028.png

8. 使用新密碼, 重新登入, 開心的輸命令吧

1553420485513.png

啟動/關閉/重啟mysql

啟動mysql:輸入 net start mysql;

停止mysql:輸入 net stop mysql;

windows下不能直接重啟(restart),只能先停止,再啟動。

資料庫基本概念

資料庫

存放資料的倉庫, 所以本質上是一個容器

1553422577898.png

資料表

通過組成二維表, 來儲存資料

1553422751547.png

欄位

一列稱為一個欄位

記錄

一行稱為一個記錄

資料

每一個格子存一個資料

總結

資料庫裡有資料表, 資料表裡有, 行來儲存資料, 列來描述資料

1553422937926.png

1553423003480.png

1553422898622.png

表關係

一對一(1:1)

使用者表和使用者詳情表

「使用者詳情表表」,其欄位包含:姓名、性別、年齡、身高、體重、籍貫和居住地等

一對多/多對一(1:N/N:1)

國家表,城市表

多對多(N:N)

學生表, 課程表

需要中間表建立聯絡

正規化

簡介

什麼是正規化

設計資料表遵守的規範

意義何在?

是為了解決資料的儲存和優化問題

特點

  • 非必須
  • 越來越嚴格
  • 向下相容

內容

  • 資料表中的每一列(每個欄位)必須是不可拆分的最小單元,也就是確保每一列的原子性
  • 滿足 1NF 後,要求表中的所有列,都必須依賴於主鍵,而不能有任何一列與主鍵沒有關係
  • 必須先滿足第二正規化(2NF),要求:表中的每一列只與主鍵直接相關而不是間接相關

說人話

  • 一個欄位只存一個資料
  • 一張表只幹一件事
  • 不屬於這個表的欄位, 不要加到這個表裡來

1118686-20170616134418946-1189742758.png

1118686-20170616134438775-1068700526.png

1118686-20170616134457821-1631705781.png

逆規範化

冗餘和效率

符合正規化, 資料不容易重複, 但是查詢起來比較費事

為了速度, 可以多買點硬碟...

相關文章