昨天提到ALTER TABLE更改資料的方式有很多,
基本上主要是MODIFY、CHANGE、RENAME三種語法,
三種的使用時機不太一樣。
在開始介紹之前,
我們先新增一個欄位做欄位更改練習,
試著用昨天的新增欄位語法,
建立一個叫做temp,型別是INT的欄位。
ALTER TABLE student ADD temp INT ;
三種語法中,最容易理解的是RENAME,
翻成中文就是大家都很熟悉的「重新命名」
語法是:
例如:
將剛剛新增的temp,改名成TEMP2。
ALTER TABLE student RENAME COLUMN temp TO TEMP2;
如果想保留名字,只更改欄位型態或是資料限制的話,
會使用MODIFY語法,也就是調整欄位。
語法是:
例如:
student表裡面的gender,本來創立的時候是VARCHAR(50),
但因為我們只打算輸入F或是M,代表男性或女性,
所以可以改成VARCHAR(1),只留一個英文字母的長度,
再加上NOT NULL的資料限制讓欄位變成必填。
ALTER TABLE student MODIFY COLUMN gender VARCHAR(1) NOT NULL; ;
CHANGE是MODIFY加強版,
CHANGE也可以更改欄位型態和欄位限制,
但他同時還能夠加上RENAME的功能,
能力越強的人,責任越重(?)
所以CHANGE是三個裡面寫起來最長的語法(??)。
語法是:
例如:
將temp2欄位改成資料型態INT,資料限制NOT NULL,欄位名稱不變。
ALTER TABLE student CHANGE COLUMN temp2 temp2 INT NOT NULL;
執行會報錯!
因為我們的temp2裡面本來都沒有資料,
這時候忽然跟資料庫說:「欸欸我要規定資料NOT NULL」,
資料庫會覺得WTF,那之前沒填的怎麼辦????
因此如果要在資料欄位加上NOT NULL,
要記得先把欄位填滿,符合資料限制喔!
以上面這個例子來看,我們需要先將temp2欄位填滿INT,
才能成功執行上面的語法,
也就是要「更新」欄位內容,
「更新」就是明天要介紹的內容囉!
在MariaDB中,RENAME COLUMN語法是在10.5.2版本及以上才被支援的。之前的版本只能使用CHANGE