Day3-從基礎學習 ThinkPHP-基礎 MySQL 學習-資料表篇

前言

前一篇我們已經學習了基礎的資料庫操作,但是資料庫底下還有一個東西叫做資料表,而資料表就是存放資料的地方,你可以把它想像成表格或是筆記本概念,所以這一篇就要來學習資料表的基礎 SQL 指令操作。

資料型態

學習資料表相關語法之前,我們必須先來認識一下常見的資料表的資料欄位型態有哪些,一般來講我個人常用的資料欄位型態有以下(以下僅列我常用的資料型態):

  • VARCHAR
    • 另一個常見的是 CHAR,但 CHAR 是屬於固定長度的字串,如果字串長度會變動的話建議使用 VARCHAR
  • TEXT
    • 最常見用於留言板上,但是除了 TEXT 還有另外兩個資料型態 MEDIUMTEXTLOGNTEXT,而我個人常用 TEXT
  • INT
    • 正整數,就是沒有小數點的意思
    • 另一個是 SMALLINT,比較適合用於小數值的欄位,但是基本上我比較常用 INT (偷懶)。
  • FLOAT
    • 浮點數,例如:3.14759….
    • 還有另一個是 DOUBLEFLOAT 類同,但 DOUBLE 所消耗的空間是 FLOAT 兩倍,因為精密度較高,但是一般來講使用 FLOAT 就夠了。
  • CHAR
    • 上面已經介紹過哩。
  • TIMESTAMP
    • 時間戳,以 YYYY-MM-DD HH:MM:SS 格式作為時間戳記。
    • 如果你沒特別去指定時間,它會自動依照目前的時間做紀錄。

以上只是僅列我使用過 & 常用的資料型態,如果你想更了解的資料型態的各種說明,我會建議可以看這一位前輩寫的文章會有更詳細的說明 → 常用的資料型態

建立資料表

首先我們在前一篇已經建立一個資料庫叫做 it_think_sql,前面情景我們是使用銀行來做比喻,那這邊也是一樣。

一般來講銀行裡面都會有一個一個的小型保險櫃,如果你沒有做規劃的話,那就只是一個鐵盒而已,所以為了替將來要儲存進來的資料做好規劃,那麼我們就要新增一張資料表來保存資料,所以假設我們今天要建立一個班上同學的身高體重紀錄表,那就會使用以下的語法來建立資料表:

1
2
3
4
5
6
7
CREATE TABLE hw_table (
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 (id)
) AUTO_INCREMENT=1;

看到一些陌生的東西時,莫帕莫驚慌,因為我會介紹,首先讓我們認識一下上面幾個英文單字 ↓

  • NOT NULL - 意旨此欄位不得為空。
  • auto_increment - 自動填入。
  • default - 預設值,後面就是預設的資料 or 值。
  • PRIMARY KEY - 設置索引值,也就是 Key
  • AUTO_INCREMENT - 自動遞增,並於數字 1 開始,所以 id 欄位將會自己從 1 開始計算。

※ 指令說明:

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

但是這邊要注意一件事情,在你執行上面 SQL 指令時,請務必確認自己正在 it_think_sql 底下,否則資料表極有可能建立在別的地方 or 無法建立唷!

SQL 執行位置

當執行成功後就可以看到 it_think_sql 裡面多了一張資料表 ↓

新增成功

查詢資料表欄位資訊

資料表也有與資料庫查詢清單類似的語法,最主要是用於查詢特定資料表欄位的資訊,讓我們來試著查詢剛剛新增的 hw_table 資料表欄位資訊看看:

1
DESCRIBE hw_table;

※ 指令說明: DESCRIBE [資料表名稱];

查詢資料表欄位資訊

更新資料表欄位

有建立資料表以及查詢資料表欄位,那麼就一定會有更新資料欄位的方式,假設我們要將資料欄位中的 weight 欄位改成 float 的資料型態,那麼語法就會像下面這樣撰寫:

1
ALTER TABLE hw_table CHANGE COLUMN weight weight float;

※ 指令說明: ALTER TABLE [資料表名稱] CHANGE COLUMN [要修改的欄位名稱] [新的欄位名稱] [新的欄位型態];

接下來我們可以試著使用剛剛所學到的 DESCRIBE [資料表名稱]; 語法來看看資料欄位有沒有成功被修改 ↓

修改結果

同理,如果我們要更改名稱 weightitweight 並且資料型態變成 int,那麼只需要依照上面的語法來做變化即可達到需求:

1
ALTER TABLE hw_table CHANGE COLUMN weight itweight int;

當然結果就會像我們預期的一樣 ↓

修改成功

刪除資料表欄位

最後就是刪除資料欄位,假設我們要把剛剛修改的 itweight 資料欄位刪除,那就會使用到刪除資料欄位語法,但是你會發現刪除語法與更新語法非常的相似,所以在使用時,請務必小心輸入(打錯字就 GG 了):

1
ALTER TABLE hw_table DROP COLUMN itweight;

※ 指令說明: ALTER TABLE [資料表名稱] DROP COLUMN [欄位名稱];

那我就直接使用 DESCRIBE hw_table; 來看執行後的結果,一般來講在 phpMyAdmin 執行該語法時,是會跳出提示訊息的唷 ↓

提示訊息(圖中指令小寫請忽略)

原因我在前面有講過,刪除語法本身是一個非常危險的動作,所以它才會跟你確認 「你真的要刪除這個欄位嗎?」 ↓

刪除成功(圖中指令小寫請忽略)

新增資料欄位

你會發現我將新增資料欄位語法放在後面,主要是為了展示建立資料表後,可以很順利地更新資料欄位 → 查詢欄位以及刪除資料欄位,那麼接下來就是介紹新增資料欄位的語法,你會發現新增資料欄位的語法與更新資料欄位語法也是非常相像,所以我這邊就不多說廢話直接上程式碼!讓我們把剛剛刪除的 weight 給復原吧~

1
ALTER TABLE hw_table ADD COLUMN weight int;

※ 指令說明: ALTER TABLE [資料表名稱] ADD COLUMN [欄位名稱] [資料型態];

那麼我們這樣就成功將剛剛被刪除的資料欄位新增回來囉~

新增成功

刪除資料表

老生常談這個語法很危險,所以請務必小心使用,那我這邊就不做示範,避免影響後面的章節操作,直接提供語法說明就可以囉~

※ 指令說明: DROP TABLE [資料表名稱];

清空資料表

這個語法類似刪除,但是它主要是清空資料表內的所有資料,那麼由於我們目前資料表內並沒有塞入任何資料,所以就算執行了也不會有任何問題,只是執行該語法之後,它會保留資料表的資料結構以及欄位,簡單來講就是只有裡面的資料會消失而已:

※ 指令說明: TRUNCATE TABLE [資料表名稱];

結尾

最後讓我們整理一下本篇所講到的 SQL 指令

操作功能 SQL 語法
建立資料表 CREATE TABLE ‘資料表名稱’ ( 欄位名稱1 資料類型 欄位設定選項 欄位名稱2 資料類型 欄位設定選項 … 索引 欄位 )
查詢資料表欄位資訊 DESCRIBE [資料表名稱];
更新資料表欄位 ALTER TABLE [資料表名稱] CHANGE COLUMN [要修改的欄位名稱] [新的欄位名稱] [新的欄位型態];
刪除資料表欄位 ALTER TABLE [資料表名稱] DROP COLUMN [欄位名稱];
新增資料表欄位 ALTER TABLE [資料表名稱] ADD COLUMN [欄位名稱] [資料型態];
刪除資料表 DROP TABLE [資料表名稱];
清空資料表 TRUNCATE TABLE [資料表名稱];