MySQL入門系列:MySQL概述

標籤: MySQL入門mysql


存儲數據方式演變

人們從古至今都有儲存數據的需求,存儲方式是按照下邊的方式演變的。程序員

人工管理階段

好久好久之前,人們把數據存在動物骨頭上,後來存到竹片上,再後來存到紙上,直到近代發明了磁帶留聲機啥的,不過這些都是依賴人工進行整理和保存的,特色就是效率低下、錯誤率高、查找不方便等等等等。。。sql

文件系統階段

後來人們發明了計算機,爲了管理各類數據,人們發明了一種叫文件系統的東東,能夠方便的經過文件的存儲路徑和文件名來訪問各個文件的內容,計算機程序也能夠直接經過文件系統來操做各類文件,比人工管理爽多了。數據庫

數據庫階段

隨着文件中存儲的內容愈來愈多,在文件中修改和查找某些數據已經變得很是困難了,因此人們發明了一種專門的軟件來管理存儲的數據,這些數據依照必定格式保存,經過這個軟件能夠方便的對數據進行增刪改查操做,從而極大的提高了數據管理效率,人們就把這個管理數據的軟件叫作數據庫管理系統安全

MySQL簡介

關係型數據庫管理系統

咱們平時常常會用表格來存放信息,好比下邊的兩個表格就存放着學生的一些基本信息和他們的各類科目的考試成績:bash

學生基本信息表
學號 姓名 性別 身份證號 學院 專業 入學時間
20180101 杜子騰 158177199901044792 計算機學院 計算機科學與工程 2018-09-01
20180102 杜琦燕 151008199801178529 計算機學院 計算機科學與工程 2018-09-01
20180103 範統 17156319980116959X 計算機學院 軟件工程 2018-09-01
20180104 史珍香 141992199701078600 計算機學院 軟件工程 2018-09-01
20180105 範劍 181048200008156368 航天學院 飛行器設計 2018-09-01
20180106 朱逸羣 197995199801078445 航天學院 電子信息 2018-09-01
學生成績表
學號 科目 成績
20180101 母豬的產後護理 78
20180101 論薩達姆的戰爭準備 88
20180102 母豬的產後護理 100
20180102 論薩達姆的戰爭準備 98
20180103 母豬的產後護理 59
20180103 論薩達姆的戰爭準備 61
20180104 母豬的產後護理 55
20180104 論薩達姆的戰爭準備 46

若是咱們想查找史珍香的《母豬的產後護理》科目的考試成績怎麼辦呢?咱們能夠先經過學生基本信息表查找到她的學號,而後再經過她的學號到學生成績表裏找到該學號對應的《母豬的產後護理》科目的成績。服務器

表格也簡稱爲表。有一種類型的數據庫管理系統就是經過表格來存放數據的,並且不一樣的表能夠經過某種關係聯繫起來(例子中成績表經過學號和基本信息表聯繫起來),咱們把這種數據庫管理系統也稱爲關係型數據庫管理系統,咱們要嘮叨的MySQL就是一種關係型數據庫管理系統微信

MySQL的優點

這種所謂的關係型數據庫管理系統有好多,好比甲骨文的Oracle,IBM的DB2,微軟的AccessSQL Server,開源的PostgreSQLMySQL 。。。咱們是來嘮叨 MySQL的,因此瞅瞅它有啥牛逼的地方:架構

  1. 免費學習

    就是不要錢,有不少數據庫管理系統是要花真金白銀買的,不過MySQL隨便在網上下載就好嘍~

  2. 開源

    MySQL的代碼都是公開的,網上隨便就能下載下來,方便咱們瞭解它的實現原理。又由於是開源的,因此一旦有bug就會被好多人發現,設計MySQL的大叔們就會當即把bug修復,因此是很是穩定的。

  3. 跨平臺

    MySQL能夠運行在各類主流的操做系統上,各類類Unix系統、Windows系統啥的~

  4. 很牛逼

    它能夠快速、安全、有效地處理大量數據,不牛逼就沒人用啦~

客戶端/服務器架構

以咱們平時使用的微信爲例,它實際上是由兩部分組成的,一部分是客戶端,一部分是服務器。客戶端可能有不少種形式,好比手機APP,電腦軟件或者是網頁版微信,每一個客戶端都有一個惟一的用戶名,就是你的微信號,另外一方面,騰訊公司在他們的機房裏運行着一個服務器軟件,咱們平時操做微信其實都是用客戶端來和這個服務器來打交道。好比狗哥用微信給貓爺發了一條消息的過程實際上是這樣的:

  1. 消息被客戶端包裝了一下,添加了發送者和接受者信息,而後從狗哥的微信客戶端傳送給微信服務器;
  2. 微信服務器從消息裏獲取到它的發送者和接收者,根據消息的接受者信息把這條消息送達到貓爺的微信客戶端,貓爺的微信客戶端裏就顯示出狗哥給他發了一條消息。

MySQL的使用過程跟這個是同樣的,它有一個服務器程序直接和咱們存儲的數據打交道,而後能夠有好多客戶端程序鏈接到這個服務器程序,發送增刪改查的請求,而後服務器就響應這些請求,從而操做它維護的數據。和微信同樣,MySQL的每一個客戶端都須要提供用戶名密碼才能登陸,登陸以後才能給服務器發請求來操做某些數據。另外,客戶端程序和服務器程序能夠安裝到同一臺機器上,也能夠安裝到不一樣的機器上。不過從咱們學習的角度來講,也不必弄兩個電腦,一個當服務器一個當客戶端了。因此咱們通常只須要在本身的電腦上把服務器程序和客戶端程序都安裝上,先開啓服務器程序,再打開客戶端程序和服務器程序進行交互就行了~

小貼士: `MySQL`的大部分安裝包都包含了服務器程序和客戶端程序(在Linux下使用RPM包時會有單獨的服務器RPM包和客戶端RPM包,須要分別安裝),可是安裝包中自帶的客戶端程序是在黑框框裏使用的,若是你習慣了圖形用戶界面,能夠本身去下載個 `MySQL Workbench` 或者 `Navicat`,這兩個客戶端軟件可讓你在圖形界面上點點點~ 順便說一句,做爲程序員使用圖形界面是否是有點兒low啊~ 也不是單純爲了裝逼,使用黑框框的話不少時候會比圖形界面更快,更簡單~ 因此該用哪一個客戶端軟件你內心應該有點兒*數吧!

安裝MySQL

在安裝過程當中必定要記住安裝路徑和用戶名密碼啊

個人機器上MySQL的安裝路徑是:/usr/local/Cellar/mysql/5.7.21/

用戶名是:root

密碼是:123456

Windows下安裝

略~

Mac下安裝

略~

Linux下安裝

略~

MySQL命令

MySQL中的可執行文件

一般在MySQL安裝目錄下有個bin目錄,看一下在個人機器中bin目錄下的部分文件:

.
├── mysql
├── mysql.server -> ../support-files/mysql.server
├── mysqladmin
├── mysqlbinlog
├── mysqlcheck
├── mysqld
├── mysqld_multi
├── mysqld_safe
├── mysqldump
├── mysqlimport
├── mysqlpump
... (省略其餘文件)

0 directories, 40 files
複製代碼

這些都是可執行文件,也就是說只要咱們在黑框框裏輸入這些文件的路徑(絕對路徑、相對路徑均可以)就能夠執行它們。其實這些文件就至關於圖形界面中的軟件圖標,鼠標雙擊就能夠運行,只不過在黑框框裏不能用鼠標,必須把這些文件的路徑輸入到黑框框裏才能執行它們。比方我想運行mysql這個文件,那就能夠在黑框框裏輸入:

/usr/local/Cellar/mysql/5.7.21/bin/mysql
複製代碼

或者把當前目錄切換到/usr/local/Cellar/mysql/5.7.21/bin/,使用相對路徑也能夠運行,就像這樣:

cd /usr/local/Cellar/mysql/5.7.21/bin/
mysql
複製代碼

若是你以爲輸入絕對路徑或者切換當前目錄太麻煩,能夠考慮把這些可執行文件添加個快捷方式。Windows裏能夠把bin目錄的路徑添加到系統變量PATH中,Linux或者Mac用戶就不用管了,在安裝過程當中已經默認把這些命令設置爲快捷方式了,你只須要直接輸入命令名稱就行了。

使用Windows的小夥伴趕忙把`bin`目錄的路徑添加到系統變量`PATH`中,咱們下邊的操做都默認你們有了這些可執行文件的快捷方式,就再也不使用絕對路徑或者切換目錄的方式來執行這些文件了。
複製代碼

服務器相關的可執行文件

類UNIX系統

咱們重點關注一下mysql.server這個可執行文件,這個文件能夠幫助咱們啓動和關閉服務器。這個可執行文件後邊能夠攜帶參數,啓動和關閉的參數以下:

  1. 啓動服務器攜帶的參數:

    mysql.server start
    複製代碼
  2. 關閉服務器攜帶的參數:

    mysql.server stop
    複製代碼

咱們開啓一下服務器,在黑框框裏輸入mysql.server start,看到輸出結果:

Starting MySQL
. SUCCESS!
複製代碼

這就說明啓動成功了~

Windows系統

通常把MySQL註冊爲Windows的服務,而後調用net start MySQLnet stop MySQL來啓動和關閉服務器。

客戶端相關的可執行文件

在服務器程序啓動以後,就可使用mysql這個可執行文件來啓動客戶端並鏈接該服務器了,這個可執行文件須要一些參數,格式以下:

mysql -h主機名  -u用戶名 -p密碼
複製代碼

各個參數的意義以下:

參數名 含義
-h 表示啓動服務器程序的計算機的域名或者IP地址,若是服務器程序就運行在本機的話,能夠省略這個參數,也能夠填localhost或者127.0.0.1。也能夠寫做 --host=主機的形式。
-u 表示用戶名,若是你是剛剛使用MySQL,則用戶名是root。也能夠寫做 --user=用戶名的形式。
-p 表示密碼,若是你在安裝過程當中設置了密碼,那就用你設置的密碼,不然密碼爲空。也能夠寫做 --password=密碼的形式。

好比我這樣執行下邊這個可執行文件(用戶名密碼按你的實際狀況填寫),就能夠啓動MySQL客戶端,而且鏈接到服務器了。

mysql -hlocahhost -uroot -p123456
複製代碼

也能夠這麼寫:

mysql --host=localhost --user=root --password=123456
複製代碼

咱們看一下鏈接成功後的界面:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.21 Homebrew

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
複製代碼

最後一行的mysql>是一個客戶端的提示符,以後客戶端發送給服務器的命令都須要寫在這個提示符後邊。

若是咱們想斷開客戶端與服務器的鏈接而且關閉客戶端的話,能夠在mysql>提示符後輸入下邊任意一個命令:

  1. quit
  2. exit
  3. \q

好比咱們輸入quit試試:

mysql> quit
Bye
複製代碼

輸出了Bye說明客戶端程序已經關掉了。注意注意注意,這是關閉客戶端程序的方式,不是關閉服務器程序的方式,怎麼關閉服務器上一節裏嘮叨過了。

若是你願意,你能夠多打開幾個黑框框,每一個黑框框都使用mysql -hlocahhost -uroot -p123456來運行多個客戶端程序,每一個客戶端程序都是互不影響的。若是你有多個電腦,也能夠試試把它們用局域網連起來,在一個電腦上啓動MySQL服務器程序,在另外一個電腦上執行mysql命令時使用IP地址做爲主機名來鏈接到服務器。

鏈接注意事項
  1. 最好不要在一行命令中輸入密碼。

    咱們直接在黑框框裏把密碼敲出去被別人看到咋辦,這和你當別人的面輸入銀行卡密碼沒啥區別,因此咱們在執行mysql鏈接服務器的時候能夠不顯式的寫出密碼,就像這樣:

    mysql -hlocahhost -uroot -p
    複製代碼

    點擊回車以後纔會提示你輸入密碼:

    Enter password:
    複製代碼

    不過這回你輸入的密碼不會被顯示出來,心懷不軌的人也就看不到了,輸入完成點擊回車就成功鏈接到了服務器。

  2. 若是你非要在顯式的把密碼熟出來,那密碼值和-p之間不能有空白字符,其餘參數名之間能夠有空白字符,就像這樣:

    mysql -h localhost -u root -p123456
    複製代碼

    若是加上了空白字符就是錯誤的,好比這樣:

    mysql -h localhost -u root -p 123456
    複製代碼
  3. mysql的各個參數的擺放順序沒有硬性規定,也就是說你也能夠這麼寫:

    mysql -p  -u root -h localhost
    複製代碼
  4. 若是你的服務器和客戶端安裝在同一臺機器上,-h參數能夠省略,就像這樣:

    mysql -u root -p  
    複製代碼
  5. 若是你使用的是類Unix系統,而且省略-u參數後,會把你登錄操做系統的用戶名看成MySQL的用戶名去處理。

    比方說我用登陸操做系統的用戶名是wangqingfeng,那麼在個人機器上下邊這兩條命令是等價的:

    mysql -u wangqingfeng -p
    複製代碼
    mysql -p
    複製代碼

    對於Windows系統來講,默認的用戶名是ODBC,你能夠經過設置環境變量USER來添加一個默認用戶名。

總結

  1. 傳統的數據存儲方式有這樣那樣的弊端,因此使用數據庫管理系統能夠更方便的管理數據。

  2. MySQL是一種關係型數據庫管理系統,使用表來存儲數據。它免費、開源、跨平臺很牛逼,是居家旅行的不二之選。MySQL是使用客戶端/服務器架構組織的軟件,服務器程序用來統一管理真實數據,客戶端軟件能夠鏈接到服務器而且向服務器發送各類操做數據的請求。

  3. 安裝好的MySQL一般都會攜帶服務器程序和客戶端程序。

  4. 類Unix系統一般使用mysql.server來開啓和關閉服務器,Windows系統一般將服務器程序註冊爲一個Windows服務,能夠經過net start|stop mysql來開啓或關閉服務器程序。

  5. 一般使用mysql來啓動客戶端程序並鏈接到服務器,須要攜帶的參數以下:

    • -h:表示主機名
    • -u:表示用戶名
    • -p:表示密碼

小冊

本系列專欄都是MySQL入門知識,想看進階知識能夠到小冊中查看:《MySQL是怎樣運行的:從根兒上理解MySQL》的連接 。小冊的內容主要是從小白的角度出發,用比較通俗的語言講解關於MySQL進階的一些核心概念,好比記錄、索引、頁面、表空間、查詢優化、事務和鎖等,總共的字數大約是三四十萬字,配有上百幅原創插圖。主要是想下降普通程序員學習MySQL進階的難度,讓學習曲線更平滑一點~

相關文章
相關標籤/搜索