MySQL數據庫基礎(筆記整理一)
數據庫的組織結構
MySQL屬於關系數據庫管理系統(Relational Database Management System, RDBMS)
數據庫(Database,DB)即一個用來存放信息的倉庫,他們構造簡單,遵守一定規則;
- 數據庫裏的數據集合都存放在數據表(table)裏;
- 數據表由數據行(row)和數據列(column)構成;
- 一個數據行就是數據表裏的一條記錄(record);
- 記錄可以包含多個信息項,數據表裏的每一個數據列都對應一個信息項。
- 管理系統(Management System, MS) 指的是用來對數據進行插入、檢索、修改、刪除等操作的軟件。
關系(Relational ,R)表示RDBMS是DBMS中的一種,RDBMS專長是把分別存放在兩個數據表裏的信息聯系起來(匹配),這種聯系是通過查找兩個數據表的共同元素來實現的。RDBMS的強項在於它能方便地抽取出數據表裏的數據並把它們與其他數據表裏的信息結合起來為那些單獨利用某個數據表無法找到答案的問題提供答案。
數據庫的查詢語言
為了與MySQL交互,你需要使用一種名為SQL(Structed Query Language,結構化查詢語言)的語言。SQL是標準化數據庫語言,SQL的各種語句是它能夠搞效率地與你的數據庫盡心互動。
MySQL的體系結構
MySQL采用的是C/S(客戶/服務器)體系結構。- mysqld (MySQL的服務器程序 ),運行在存放你數據庫的機器上。負責在網絡上監聽並處理來自客戶的服務請求,並根據這些請求去訪問數據庫的內容,再將有關信息回傳給客戶。
- Client (MySQL的客戶程序),負責連接到數據庫服務器,並通過向服務器發出命令來告知它們需要哪些信息。
MySQL的“客戶/服務器”體系結構的優點:
- 並發控制,由服務器提供,因而不會出現兩個用戶同時修改一條記錄的現象。
- 你不必非要在存放你數據庫的那臺機器上登錄MySQL。
創建MySQL用戶並賦予權限
首先以root的身份登錄MySQL,再用CREATE USER和GRANT語句新建一個MySQL用戶,並賦予數據庫權限。
$ mysql -u root -p Enter password: \*\*\*\*\*\* mysql> CREATE USER ‘example‘@‘localhost‘ IDENTIFIED BY ‘123456‘ ; mysql> GRANT ALL ON webdata.* TO ‘example‘@‘localhost‘ ;
mysql命令的-p選項會讓mysql提示MySQL的root用戶輸入密碼。假設你打算使用遠程登錄的方式管理數據庫,CREATE USER中的localhost就應該改為%(或者你要使用的另一臺計算機的IP)
建立/斷開與MySQL服務器的連接
mysql -h host_name -p -u user_name [database]
- -h host_name 帶連接的服務器主機名。本地可省略。
- -u user_name 你的MySQL用戶名。
- -p 提示輸入MySQL口令。
- 連接常用的數據庫(不必在USE database)
quit/exit 即可斷開與MySQL的連接。
小技巧:
Linux下可以將常用的mysql命令寫入
~/.bashrc
例如,可以將以下語句寫入.bashrc
:
alias mysql-example=‘mysql -u example -p sample‘
alias mysql-root=‘mysql -u root -p‘
alias mysqlstart=‘sudo systemctl start mysqld‘
alias mysqlstop=‘sudo systemctl stop mysqld‘
alias mysqlstatus=‘sudo systemctl status mysqld‘
在執行
source .bashrc
,再次連接MySQL數據庫只需輸入mysql-example即可連接到example用戶,而啟動/停止/查看,MySQL服務用上面的別名也會方便很多。
執行SQL語句
連接上服務器後,現在就可以通過select語句進行相關的數據查詢了。利用mysql命令行的方式進行數據庫查詢很簡單:敲入有關命令,命令末尾以分號 ;
或\g
表示語句結束。事實上,這個過程是在你輸入完查詢語句之後,查詢命令將由mysql發往服務器執行,服務器對查詢進行處理並把其結果返回給mysql,最後由mysql將查詢結果顯示在屏幕上。
例如:
mysql> SELECT NOW();
上面這條語句將返回系統的當前日期和時間。上面說過,除了 分號 ;
以外 \g
(表示go) 也可以表示語句的結束。其實還可以使用 \G
(將會豎直排列顯示結果,每行一個值)
mysql> SELECT NOW(), USER(), VERSION() \G
NOW(): 2018/10/07 17:21
USER(): example@localhost
VERSION: 10.1.36 -MariaDB
如果查詢命令的輸出行比較短,以 \G
作為查詢命令的結束符效果還不太明顯。但萬一輸出行比較長,在屏幕上顯示為好幾行的時候,\G
結束符就能使屏幕輸出的內容更便於閱讀。
因為mysql必須等待語句結束符,所以我們沒必要把查詢命令完整地寫在同一行上。例如:
mysql> SELECT NOW(),
-> USER(),
-> VERSION()
-> ;
假如,我已經輸入了好幾行查詢命令但卻突然發現不應該執行它,輸入 \c
即可取消它。有一點特別註意,當查詢命令的 ‘
未配對的的情況下,應該用 ‘\c
來取消執行。
批處理的方式執行SQL語句
可以用SQL腳本的方式,讓mysql從文件讀入數據和命令也不是通過鍵盤的輸入。這樣的處理方式,在數據量比較大的時候,要比在命令行插入數據高效的多。我們可以通過shell的輸入重定向功能,將SQL語句寫入一個名為 mysqlscript.sql的文件中,通過下面的方式執行它們:
$ mysql < mysqlscript.sql
或者是在msql命令行中以 source
的方式執行sql腳本:
mysql> source /home/example/mysqlscript.sql
需要註意的是,mysqlscript.sql 要給出它的絕對路徑。通過這樣的方法,我們可以方便的批量創建一系列表或者從很多文件中LOAD 數據。
2018/10/07 數據庫基礎筆記(一)
MySQL數據庫基礎(筆記整理一)