方法:1、創(chuàng)建表時(shí)用“CREATE TABLE 表名(字段名 數(shù)據(jù)類型 DEFAULT 默認(rèn)值;)”語句設(shè)置;2、修改表時(shí)用“ALTER TABLE 表名 CHANGE COLUMN 字段名 數(shù)據(jù)類型 DEFAULT 默認(rèn)值;”語句設(shè)置。
(推薦教程:mysql視頻教程)
默認(rèn)值(Default)的完整稱呼是“默認(rèn)值約束(Default Constraint)”,用來指定某字段的默認(rèn)值。在表中插入一條新記錄時(shí),如果沒有為某個(gè)字段賦值,系統(tǒng)就會(huì)自動(dòng)為這個(gè)字段插入默認(rèn)值。
在創(chuàng)建表時(shí)設(shè)置默認(rèn)值約束
創(chuàng)建表時(shí),在CREATE?TABLE語句中使用 DEFAULT 關(guān)鍵字來設(shè)置默認(rèn)值約束,具體的語法格式如下:
??DEFAULT?;
其中,“默認(rèn)值”為該字段設(shè)置的默認(rèn)值,如果是字符類型的,要用單引號(hào)括起來。
例 1
創(chuàng)建數(shù)據(jù)表 tb_dept3,指定部門位置默認(rèn)為 Beijing,SQL 語句和運(yùn)行結(jié)果如下所示。
mysql>?CREATE?TABLE?tb_dept3 ????->?( ????->?id?INT(11)?PRIMARY?KEY, ????->?name?VARCHAR(22), ????->?location?VARCHAR(50)?DEFAULT?'Beijing' ????->?); Query?OK,?0?rows?affected?(0.37?sec) mysql>?DESC?tb_dept3; +----------+-------------+------+-----+---------+-------+ |?Field????|?Type????????|?Null?|?Key?|?Default?|?Extra?| +----------+-------------+------+-----+---------+-------+ |?id???????|?int(11)?????|?NO???|?PRI?|?NULL????|???????| |?name?????|?varchar(22)?|?YES??|?????|?NULL????|???????| |?location?|?varchar(50)?|?YES??|?????|?Beijing?|???????| +----------+-------------+------+-----+---------+-------+ 3?rows?in?set?(0.06?sec)
以上語句執(zhí)行成功之后,表 tb_dept3 上的字段 location 擁有了一個(gè)默認(rèn)值 Beijing,新插入的記錄如果沒有指定部門位置,則默認(rèn)都為 Beijing。
注意:在創(chuàng)建表時(shí)為列添加默認(rèn)值,可以一次為多個(gè)列添加默認(rèn)值,需要注意不同列的數(shù)據(jù)類型。
在修改表時(shí)添加默認(rèn)值約束
修改表時(shí)添加默認(rèn)值約束的語法格式如下:
ALTER?TABLE? CHANGE?COLUMN???DEFAULT?;
例 2
修改數(shù)據(jù)表 tb_dept3,將部門位置的默認(rèn)值修改為 Shanghai,SQL 語句和運(yùn)行結(jié)果如下所示。
mysql>?ALTER?TABLE?tb_dept3 ????->?CHANGE?COLUMN?location ????->?location?VARCHAR(50)?DEFAULT?'Shanghai'; Query?OK,?0?rows?affected?(0.15?sec) Records:?0??Duplicates:?0??Warnings:?0 mysql>?DESC?tb_dept3; +----------+-------------+------+-----+----------+-------+ |?Field????|?Type????????|?Null?|?Key?|?Default??|?Extra?| +----------+-------------+------+-----+----------+-------+ |?id???????|?int(11)?????|?NO???|?PRI?|?NULL?????|???????| |?name?????|?varchar(22)?|?YES??|?????|?NULL?????|???????| |?location?|?varchar(50)?|?YES??|?????|?Shanghai?|???????| +----------+-------------+------+-----+----------+-------+ 3?rows?in?set?(0.00?sec)
刪除默認(rèn)值約束
當(dāng)一個(gè)表中的列不需要設(shè)置默認(rèn)值時(shí),就需要從表中將其刪除。
修改表時(shí)刪除默認(rèn)值約束的語法格式如下:
ALTER?TABLE? CHANGE?COLUMN????DEFAULT?NULL;
例 3
修改數(shù)據(jù)表 tb_dept3,將部門位置的默認(rèn)值約束刪除,SQL 語句和運(yùn)行結(jié)果如下所示。
mysql>?ALTER?TABLE?tb_dept3 ????->?CHANGE?COLUMN?location ????->?location?VARCHAR(50)?DEFAULT?NULL; Query?OK,?0?rows?affected?(0.15?sec) Records:?0??Duplicates:?0??Warnings:?0 mysql>?DESC?tb_dept3; +----------+-------------+------+-----+----------+-------+ |?Field????|?Type????????|?Null?|?Key?|?Default??|?Extra?| +----------+-------------+------+-----+----------+-------+ |?id???????|?int(11)?????|?NO???|?PRI?|?NULL?????|???????| |?name?????|?varchar(22)?|?YES??|?????|?NULL?????|???????| |?location?|?varchar(50)?|?YES??|?????|?NULL?????|???????| +----------+-------------+------+-----+----------+-------+ 3?rows?in?set?(0.00?sec)