iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
0
AI & Data

作者超囉嗦,但一天只要十分鐘的MYSQL真.新手教學系列 第 14

第十四日-資料表建錯怎麼辦? 欄位更改:MODIFY、CHANGE、RENAME

  • 分享至 

  • xImage
  •  

昨天提到ALTER TABLE更改資料的方式有很多,
基本上主要是MODIFY、CHANGE、RENAME三種語法,
三種的使用時機不太一樣。

在開始介紹之前,
我們先新增一個欄位做欄位更改練習,
試著用昨天的新增欄位語法,
建立一個叫做temp,型別是INT的欄位。

ALTER TABLE student ADD temp INT ;

只想更改欄位名稱:RENAME

三種語法中,最容易理解的是RENAME,
翻成中文就是大家都很熟悉的「重新命名」
語法是:

  1. 改變(ALTER)
  2. student資料表
  3. 重新命名欄位(RENAME)
  4. 舊欄位名稱
  5. 變成(TO)
  6. 新欄位名稱

例如:
將剛剛新增的temp,改名成TEMP2。

ALTER TABLE student RENAME COLUMN temp TO TEMP2;

只想更改欄位型態和資料限制:MODIFY

如果想保留名字,只更改欄位型態或是資料限制的話,
會使用MODIFY語法,也就是調整欄位。

語法是:

  1. 改變(ALTER)
  2. student資料表
  3. 調整欄位(MODIFY)
  4. 欄位名稱
  5. 欄位型態
  6. 欄位限制(不一定要寫)

例如:
student表裡面的gender,本來創立的時候是VARCHAR(50),
但因為我們只打算輸入F或是M,代表男性或女性,
所以可以改成VARCHAR(1),只留一個英文字母的長度,
再加上NOT NULL的資料限制讓欄位變成必填。

ALTER TABLE student MODIFY COLUMN gender VARCHAR(1) NOT NULL; ;

我全都要-MODIFY加強版:CHANGE

CHANGE是MODIFY加強版,
CHANGE也可以更改欄位型態和欄位限制,
但他同時還能夠加上RENAME的功能,
能力越強的人,責任越重(?)
所以CHANGE是三個裡面寫起來最長的語法(??)。

語法是:

  1. 改變(ALTER)
  2. student資料表
  3. 調整欄位(CHANGE)
  4. 舊欄位名稱
  5. 新欄位名稱(如果不想改名,這裡就填寫舊欄位名稱)
  6. 欄位型態
  7. 欄位限制(不一定要寫)

例如:
將temp2欄位改成資料型態INT,資料限制NOT NULL,欄位名稱不變。

ALTER TABLE student CHANGE COLUMN temp2 temp2 INT NOT NULL;

執行會報錯!
因為我們的temp2裡面本來都沒有資料,
這時候忽然跟資料庫說:「欸欸我要規定資料NOT NULL」,
資料庫會覺得WTF,那之前沒填的怎麼辦????

因此如果要在資料欄位加上NOT NULL,
要記得先把欄位填滿,符合資料限制喔!

以上面這個例子來看,我們需要先將temp2欄位填滿INT,
才能成功執行上面的語法,
也就是要「更新」欄位內容,
「更新」就是明天要介紹的內容囉!


上一篇
第十三日-資料表建錯怎麼辦?別急,先學怎麼新增和刪除欄位
下一篇
第十五日-批次把資料補齊:更新(UPDATE)資料值
系列文
作者超囉嗦,但一天只要十分鐘的MYSQL真.新手教學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
kouhei
iT邦新手 5 級 ‧ 2023-10-27 10:10:16

在MariaDB中,RENAME COLUMN語法是在10.5.2版本及以上才被支援的。之前的版本只能使用CHANGE

我要留言

立即登入留言