前一篇我們已經學習了基礎的資料庫操作,但是資料庫底下還有一個東西叫做資料表,而資料表就是存放資料的地方,你可以把它想像成表格或是筆記本概念,所以這一篇就要來學習資料表的基礎 SQL 指令操作。
學習資料表相關語法之前,我們必須先來認識一下常見的資料表的資料欄位型態有哪些,一般來講我個人常用的資料欄位型態有以下(以下僅列我常用的資料型態):
VARCHAR
CHAR
,但 CHAR
是屬於固定長度的字串,如果字串長度會變動的話建議使用 VARCHAR
。TEXT
TEXT
還有另外兩個資料型態 MEDIUMTEXT
、LOGNTEXT
,而我個人常用 TEXT
。INT
SMALLINT
,比較適合用於小數值的欄位,但是基本上我比較常用 INT
(偷懶)。FLOAT
DOUBLE
與 FLOAT
類同,但 DOUBLE
所消耗的空間是 FLOAT
兩倍,因為精密度較高,但是一般來講使用 FLOAT
就夠了。CHAR
TIMESTAMP
YYYY-MM-DD HH:MM:SS
格式作為時間戳記。以上只是僅列我使用過 & 常用的資料型態,如果你想更了解的資料型態的各種說明,我會建議可以看這一位前輩寫的文章會有更詳細的說明 → 常用的資料型態。
首先我們在前一篇已經建立一個資料庫叫做 it_think_sql
,前面情景我們是使用銀行來做比喻,那這邊也是一樣。
一般來講銀行裡面都會有一個一個的小型保險櫃,如果你沒有做規劃的話,那就只是一個鐵盒而已,所以為了替將來要儲存進來的資料做好規劃,那麼我們就要新增一張資料表來保存資料,所以假設我們今天要建立一個班上同學的身高體重紀錄表,那就會使用以下的語法來建立資料表:
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
開始計算。※ 指令說明:
CREATE TABLE '資料表名稱' (
欄位名稱1 資料類型 欄位設定選項
欄位名稱2 資料類型 欄位設定選項
...
索引 欄位
)
但是這邊要注意一件事情,在你執行上面 SQL 指令時,請務必確認自己正在 it_think_sql
底下,否則資料表極有可能建立在別的地方 or 無法建立唷!
當執行成功後就可以看到 it_think_sql
裡面多了一張資料表 ↓
資料表也有與資料庫查詢清單類似的語法,最主要是用於查詢特定資料表欄位的資訊,讓我們來試著查詢剛剛新增的 hw_table
資料表欄位資訊看看:
DESCRIBE hw_table;
※ 指令說明: DESCRIBE [資料表名稱];
有建立資料表以及查詢資料表欄位,那麼就一定會有更新資料欄位的方式,假設我們要將資料欄位中的 weight
欄位改成 float
的資料型態,那麼語法就會像下面這樣撰寫:
ALTER TABLE hw_table CHANGE COLUMN weight weight float;
※ 指令說明: ALTER TABLE [資料表名稱] CHANGE COLUMN [要修改的欄位名稱] [新的欄位名稱] [新的欄位型態];
接下來我們可以試著使用剛剛所學到的 DESCRIBE [資料表名稱];
語法來看看資料欄位有沒有成功被修改 ↓
同理,如果我們要更改名稱 weight
→ itweight
並且資料型態變成 int
,那麼只需要依照上面的語法來做變化即可達到需求:
ALTER TABLE hw_table CHANGE COLUMN weight itweight int;
當然結果就會像我們預期的一樣 ↓
最後就是刪除資料欄位,假設我們要把剛剛修改的 itweight
資料欄位刪除,那就會使用到刪除資料欄位語法,但是你會發現刪除語法與更新語法非常的相似,所以在使用時,請務必小心輸入(打錯字就 GG 了):
ALTER TABLE hw_table DROP COLUMN itweight;
※ 指令說明: ALTER TABLE [資料表名稱] DROP COLUMN [欄位名稱];
那我就直接使用 DESCRIBE hw_table;
來看執行後的結果,一般來講在 phpMyAdmin 執行該語法時,是會跳出提示訊息的唷 ↓
原因我在前面有講過,刪除語法本身是一個非常危險的動作,所以它才會跟你確認 「你真的要刪除這個欄位嗎?」 ↓
你會發現我將新增資料欄位語法放在後面,主要是為了展示建立資料表後,可以很順利地更新資料欄位 → 查詢欄位以及刪除資料欄位,那麼接下來就是介紹新增資料欄位的語法,你會發現新增資料欄位的語法與更新資料欄位語法也是非常相像,所以我這邊就不多說廢話直接上程式碼!讓我們把剛剛刪除的 weight
給復原吧~
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 [資料表名稱]; |
本文同時發表於:https://hsiangfeng.github.io/php/20190904/1799668484/