這是全棧數據工程師養成攻略系列教程的第十一期:11 數據庫 MySQL使用方法。javascript
咱們已經掌握瞭如何用MAMP或WAMP在我的電腦上搭建Web環境,其中包含了用於存儲數據的關係型數據庫MySQL,如今就讓咱們來了解下如何使用MySQL。php
MySQL中能夠存在多個數據庫(Database),每一個數據庫對應一個相對獨立的項目。一個數據庫中能夠包含多個數據表(Table),不一樣的數據表用來存儲不一樣用途的數據。舉例來講,能夠新建一個chat
數據庫用於存儲和某一社交網站相關的數據,裏面有user
和message
兩個表,分別用來存儲用戶基本信息、用戶之間的聊天記錄。須要注意的是,數據庫名和數據表名最好都使用英文名稱。java
數據表和Excel中的表格很相似,既有行也有列,即咱們以前說起的二維表結構。以user
表爲例,每一行記錄了一名用戶的基本信息,每一列即用戶信息的一個字段,例如姓名、性別、職業等。mysql
MySQL涉及的操做包括新建或刪除數據庫,以及在一個已有的數據庫中新建、清空或刪除數據表。除此以外,主要就是在一個已有的數據表中對數據進行CURD操做,即Create
、Update
、Read
、Delete
,分別對應插入數據、更新數據、讀取數據、刪除數據。接下來咱們將瞭解,如何使用命令行、Web工具、本地軟件、Python代碼四種方法,來操做MySQL數據庫。web
能夠在命令行中輸入如下命令,按回車後再輸入MySQL數據庫的密碼,便可進入MySQL提供的交互命令行,相似Python的交互編程環境,每敲一行MySQL語句,按回車便可執行。這種方法僅適用於單獨安裝MySQL數據庫,不適用於MAMP或WAMP,並且對代碼能力要求較高,故不推薦使用。sql
mysql -u root -p複製代碼
Web工具是指在MySQL內核之上,基於Web開發出的圖形化操做界面。只要在網站上點一點,便可完成對MySQL的各種操做。其中最爲經常使用的一種即phpMyAdmin,基於PHP開發,簡單、輕量、好用,在MAMP或WAMP中也會自帶phpMyAdmin。數據庫
在MAMP的歡迎頁面上能夠找到使用phpMyAdmin管理MySQL的連接,點擊後將看到如下界面,左側中所顯示的是當前已存在的數據庫,右側中則顯示了菜單欄和對應的內容。編程
首先讓咱們來嘗試下如何新建數據庫。默認狀況下會存在三個數據庫,information_schema
、mysql
和performance_schema
,這三個數據庫是MySQL自帶的,不要去動它們。點擊左側中的New
,或者右側菜單欄中的Databases
,均可以在右側中看到當前已存在數據庫的一些基本信息,以及進行數據庫新建操做。服務器
輸入新建數據庫的名稱,推薦使用全英文。這裏咱們輸入douban
,由於須要將以前爬取的豆瓣電影數據存入數據庫中。選擇Collation
爲utf8_general_ci
,而後點擊Create
便可。less
新建好數據庫後,因爲數據庫爲空,會自動跳到新建數據表的頁面。給數據表取個英文名,這裏輸入movie
,而後選擇表的列數,默認爲4,點擊Go
進入下一步。即便數據表最終不是4列也不要緊,多的列會自動忽略,列數不夠一樣能夠繼續加,因此不用擔憂。
接下來須要配置每一列的詳細內容,包括Name、Type、Length/Values、Default、Collation、Attributes、Null、Index、A_I、Comments。咱們首先填寫第一個字段,每一個數據表都須要一個主鍵即id,不一樣的行具備惟一不一樣的id,用於進行彼此區分。
id
;INT
便可;INT
類型的默認長度;PRIMARY
,即主鍵,若是有彈窗則點擊Go
便可;接下來再填一下電影的標題字段,Name輸入title
,Type選爲VARCHAR
,Length/Values輸入255
,由於255個字符對於標題而言足夠了,其餘選項不用管。Type的可選值包括數值類Numeric、日期時間類Date and time、文本類String、空間類Spatial四大類,以上所使用的VARCHAR
是一種長度可變的字符串,使用時須要設置最大長度。若是須要存儲更長的文本,能夠考慮TEXT
、MEDIUMTEXT
、LONGTEXT
等。
同理,繼續填寫電影的連接字段,填入url
、VARCHAR
和255
;對於電影的簡介字段,因爲電影簡介可能會很長,因此Name輸入summary
,Type選擇TEXT
;至於電影的評分字段,因爲評分能夠是小數,因此Name輸入score
,Type選擇Numeric類中的FLOAT
。若是須要繼續增長字段,輸入須要增長的列數並點擊Go
,而後根據字段特徵完善Name、Type和Length/Values便可。
字段信息所有填寫完畢後,點擊右下方的Save
便可完成數據表的新建,左側中會選中剛纔新建的數據庫和數據表,右側中會出現新的菜單欄。點擊Browse
能夠查看數據表內的數據記錄,點擊Structure
能夠查看數據表的結構,即各項字段的配置內容,點擊SQL
能夠在當前數據表上執行SQL命令,點擊Insert
能夠向當前數據表中插入數據記錄,點擊Export
和Import
分別能夠導出和導入數據表,點擊Operations
能夠進一步執行清空數據表和刪除數據表等操做。
在上圖所示的Structure
標籤頁中,能夠查看數據表的結構,即各項字段的詳細配置,並對某個字段執行修改Change
、刪除Drop
等操做。除此以外,還能夠向數據表中添加若干列,以及查看數據表的空間存儲狀況。
若是在左側點擊某一數據庫,則右側的菜單欄相應地會變成數據庫級別的操做,如查看數據庫的結構,即各個數據表的基本信息,在當前數據庫上執行SQL命令,導出和導入數據庫,執行刪除數據庫等操做。
細心的話能夠發現,每次在phpMyAdmin上執行相關操做以後,右側菜單欄下都會出現相應的SQL命令,說明phpMyAdmin都是將咱們的點擊操做轉換成了相應的SQL命令,而後交與MySQL執行。
讓咱們嘗試下向movie
表中插入數據。在左側中點擊douban
數據庫中的movie
表,選擇右側菜單欄中的Insert
,依次在title、url、summary、score的Value中填寫對應的值,id留空。若是須要同時插入兩條數據,則取消勾選ignore
並填寫第二條數據的對應值。若是須要同時插入更多數據,則在底部的Continue insertion with
後選擇相應的行數,並依次填寫相關數據。數據所有填寫完畢後,點擊頁面下方的Go
,便可進行數據插入操做,在菜單欄下也能夠看到對應INSERT
命令。以後再點擊Browse
,便可查看剛插入的數據。
總而言之,phpMyAdmin是一款簡單輕量好用的Web工具,它提供的功能雖然有限,但都是管理MySQL所需的最爲核心的功能,所以更容易上手,不會由於功能太多反而致使眼花繚亂。
相對於phpMyAdmin等Web工具,本地數據管理軟件鏈接更穩定、功能更強大,例如Navicat Premium
,Mac OS版本的軟件界面以下圖所示。
Navicat支持MySQL、Oracle、PostgreSQL、SQLite、SQL Server、MariaDB等多種數據庫,在數據庫和數據表之上還有數據鏈接(Connection)這一律念,由於Navicat能夠記錄並鏈接多個主機上的數據庫,而phpMyAdmin做爲一種Web工具僅能鏈接本地數據庫。
讓咱們來嘗試新建一個鏈接。點擊左上角的Connection,選擇MySQL,在彈出的對話框中依次填入鏈接名稱、主機地址、端口、用戶名、密碼等信息,其中基於MAMP安裝的MySQL主機地址即爲localhost
,點擊OK
便可新建一個鏈接。固然,新建鏈接時還能夠涉及到更多配置內容,這裏就不展開講了。
新建鏈接後,在Navicat軟件界面的左側便可看到當前已存在的所有鏈接,雙擊鏈接名稱便可查看鏈接下存在的數據庫,雙擊數據庫名稱便可創建數據鏈接,並查看數據庫下存在的數據表。在鏈接名、數據庫名、數據表名上右鍵,都會出現一系列可執行的操做,例如在數據庫名和數據表名的右鍵菜單裏,都有Execute SQL File
和Dump SQL File
兩項,分別對應數據庫級別和數據表級別的導入和導出操做。
總的來講,Navicat功能更強大,使用門檻也更高,畢竟可點擊的按鈕、可配置的選項、可執行的操做都遠遠更多。我我的的習慣是,使用phpMyAdmin完成新建數據庫、新建數據表、定義表字段等操做,由於phpMyAdmin簡單輕量,但又足以完成這些任務;使用Python代碼對數據表進行CURD操做,由於項目中涉及的數據記錄可能很是多,因此用Python代碼處理天然是最高效和靈活的選擇;當須要導入導出大量數據,或者導入導出須要對涉及字段進行靈活配置時,則使用Navicat完成複雜的導入導出任務。
因此,我首先在本機上編程並將數據庫和數據表整理好,在本地Web環境上實現Web項目和數據庫的交互,而後將數據庫導出並導入到雲端服務器上的MySQL,最後將Web項目也部署到服務器上,便可完成一次數據項目的開發。
至於如何使用Python來操縱MySQL數據庫,將在下一節中進行講解。
視頻連接:MySQL使用方法