這是在講關於一名叫 Koa 的全端勇士傳說-MySQL篇-基礎篇(2)

前言

前面我們已經準備好 MySQL 的部分了,接下來這邊將會使用一套資料庫管理軟體來做 MySQL 操作也就是 Navicat (導航貓)

MySQL

可以自行到官方網站下載 導航貓,安裝過程我就不附上了直接來操作。

打開 Navicat 新增一個連線

新增一個 MySQL 連線

依照欄位輸入相關欄位

相關欄位

輸入完畢之後可以點一下連線測試,確保連線成功

如果出現 2003 - Can't connect to MySQL server on 'localhost'(10038) 基本上就是 XAMPP 沒有打開 MySQL,或者 MySQL IP位址輸入錯誤了

Can't connect to MySQL server on 'localhost'(10038)

正常成功的話會出現連線成功

連線成功

接下來點兩下旁邊的 localhost 名稱的灰色小圖案

灰色小圖案

當它變成綠色就是我們已經連入 MySQL 資料庫哩~

連入 MySQL

接下來我們點一下 test 這個資料庫,然後在左邊點一下新增資料表

新增資料表

然後資料表名稱叫 account,內容如下

account 表

這樣子資料表就新增成功哩~

基礎語法認識

接下來我們就要來認識一下基礎常用的 MySQL 語法哩~

所以這邊先切到查詢,並點一下新增查詢

新增查詢

建立資料表

由於後面練習會需要使用到資料表,你可以選擇手動開資料表,也可以用語法的方式來新增,如果要使用語法的話,那麼就要使用 CREATE TABLE 語法,範例如下

1
2
3
4
5
6
CREATE TABLE  '資料表名稱' (
欄位名稱1 資料類型 欄位設定選項
欄位名稱2 資料類型 欄位設定選項
...
索引 欄位
)

那麼我這邊會建立一個同學身高體重資料表,所以就這樣新增

1
2
3
4
5
6
7
CREATE TABLE testtabel (
t_id int(10) NOT NULL auto_increment,
name varchar(5) NOT NULL default '',
weight int(5) NOT NULL default 0,
height float(5) NOT NULL default 0,
PRIMARY KEY (t_id)
) AUTO_INCREMENT=1;

說明:

  • NOT NULL - 不得為空
  • auto_increment - 自動填入
  • default - 預設值
  • PRIMARY KEY - 設置索引
  • AUTO_INCREMENT - 自動遞增,並於數字 1 開始

然後將上面這些 SQL 指令貼入並執行

執行 SQL 指令

執行完畢後,我們回到資料表的位子,然後按一下 F5 重新整理一下畫面就可以看到剛剛新增的資料表哩~

資料表

內容也會與我們所新增的相同

資料表

當然也可以點一下資料表右鍵,設計資料表來查看是否都有與我們所撰寫的指令相同

設計資料表

設計資料表

那麼這就是一個透過 SQL 指令生成資料表的方式~

查詢資料表

首先在上面輸入 SELECT * FROM account; 並點一下上方執行看看

SELECT

接下來下方就會跳出查詢結果 (裡面沒東西是正常的)

查詢結果

WHERE

讓我們回頭講一下語法吧~

SELECT 是最 SQL 指令中最常被使用的語法,那 SELECT * FROM account 的意思是再說查詢表中所有資料,那麼如果要指定特定欄位查詢呢?那麼就會搭配使用 WHERE,完整語法就像這樣子 SELECT * FROM account WHERE aid = 1;

意思就是指查詢 account 資料表中 aid 欄位等於 1 的(由於資料表內沒資料,所以我塞入一下資料),那麼就會得到這個結果

查詢

當然也可以加入 <= OR >= 等符號,所以另外做一下測試針對 testtabel 資料表來做一下查詢的動作,假設我今天要找體重大於 66 的人,那麼就這樣輸入查詢指令

1
SELECT * FROM testtabel WHERE weight <= 66;

那麼就會找到 tom、Tom (竟然兩個同名?!)

tom

那如果我希望它做身高排序由低至高呢呢?那就會使用 ORDER BY(預設是遞增排序由小至大)

1
SELECT * FROM testtabel ORDER BY height

ORDER BY

當然可以混和 WHERE + ORDER BY,但是務必注意先條件查詢在排序,否則會出現錯誤

先條件查詢在排序

正確用法是這樣 SELECT * FROM testtabel WHERE weight >= 66 ORDER BY height;

先條件查詢在排序

如果希望做遞減排序(由大至小),那麼只需要這樣寫即可

1
SELECT * FROM testtabel WHERE weight >= 66 ORDER BY height DESC;

DESC

補充

其中還有其他的條件例如:

  • GROUP BY - 將特定欄位做資料群組
  • HAVING - 必須與 GROUP BY 一起使用會出現錯誤,類似 WHERE 功能,但是無法取代 WHERE,因為 HAVING 是先讀取後篩選
  • DISINCT - 查詢某個欄位裡面是否有特定的資料
  • LIMIT - 限制輸出的資料筆數

但是接下來的範例不太會講到其他的查詢條件,所以就不多作介紹囉~

除非後面有使用到,若有使用到那就會介紹一下哩