Day3-從基礎學習 ThinkPHP-基礎 MySQL 學習-資料表篇
前言
前一篇我們已經學習了基礎的資料庫操作,但是資料庫底下還有一個東西叫做資料表,而資料表就是存放資料的地方,你可以把它想像成表格或是筆記本概念,所以這一篇就要來學習資料表的基礎 SQL 指令操作。
資料型態
學習資料表相關語法之前,我們必須先來認識一下常見的資料表的資料欄位型態有哪些,一般來講我個人常用的資料欄位型態有以下(以下僅列我常用的資料型態):
VARCHAR
- 另一個常見的是
CHAR
,但CHAR
是屬於固定長度的字串,如果字串長度會變動的話建議使用VARCHAR
。
- 另一個常見的是
TEXT
- 最常見用於留言板上,但是除了
TEXT
還有另外兩個資料型態MEDIUMTEXT
、LOGNTEXT
,而我個人常用TEXT
。
- 最常見用於留言板上,但是除了
INT
- 正整數,就是沒有小數點的意思
- 另一個是
SMALLINT
,比較適合用於小數值的欄位,但是基本上我比較常用INT
(偷懶)。
FLOAT
- 浮點數,例如:3.14759….
- 還有另一個是
DOUBLE
與FLOAT
類同,但DOUBLE
所消耗的空間是FLOAT
兩倍,因為精密度較高,但是一般來講使用FLOAT
就夠了。
CHAR
- 上面已經介紹過哩。
TIMESTAMP
- 時間戳,以
YYYY-MM-DD HH:MM:SS
格式作為時間戳記。 - 如果你沒特別去指定時間,它會自動依照目前的時間做紀錄。
- 時間戳,以
以上只是僅列我使用過 & 常用的資料型態,如果你想更了解的資料型態的各種說明,我會建議可以看這一位前輩寫的文章會有更詳細的說明 → 常用的資料型態。
建立資料表
首先我們在前一篇已經建立一個資料庫叫做 it_think_sql
,前面情景我們是使用銀行來做比喻,那這邊也是一樣。
一般來講銀行裡面都會有一個一個的小型保險櫃,如果你沒有做規劃的話,那就只是一個鐵盒而已,所以為了替將來要儲存進來的資料做好規劃,那麼我們就要新增一張資料表來保存資料,所以假設我們今天要建立一個班上同學的身高體重紀錄表,那就會使用以下的語法來建立資料表:
1 | CREATE TABLE hw_table ( |
看到一些陌生的東西時,莫帕莫驚慌,因為我會介紹,首先讓我們認識一下上面幾個英文單字 ↓
NOT NULL
- 意旨此欄位不得為空。auto_increment
- 自動填入。default
- 預設值,後面就是預設的資料 or 值。PRIMARY KEY
- 設置索引值,也就是Key
。AUTO_INCREMENT
- 自動遞增,並於數字1
開始,所以id
欄位將會自己從1
開始計算。
※ 指令說明:
1 | CREATE TABLE '資料表名稱' ( |
但是這邊要注意一件事情,在你執行上面 SQL 指令時,請務必確認自己正在 it_think_sql
底下,否則資料表極有可能建立在別的地方 or 無法建立唷!
當執行成功後就可以看到 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 [資料表名稱];
語法來看看資料欄位有沒有成功被修改 ↓
同理,如果我們要更改名稱 weight
→ itweight
並且資料型態變成 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 [資料表名稱]; |