“默認值(Default)”的完整稱呼是“默認值約束(Default Constraint)”。MySQL 默認值約束用來指定某列的默認值。
例如女性同學較多,性別就可以默認為“女”。如果插入一條新的記錄時沒有為這個字段賦值,那么系統會自動為這個字段賦值為“女”。
在創建表時設置默認值約束
創建表時可以使用 DEFAULT 關鍵字設置默認值約束,具體的語法規則如下:
<字段名> <數據類型> DEFAULT <默認值>;
【實例 1】創建數據表 tb_dept3,指定部門位置默認為 Beijing,輸入的 SQL 語句和運行結果如下所示。
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)
以上語句執行成功之后,表 tb_dept3 上的字段 location 擁有了一個默認值 Beijing,新插入的記錄如果沒有指定部門位置,則默認都為 Beijing。
在修改表時添加默認值約束
修改表時添加默認值約束的語法規則如下:
ALTER TABLE <數據表名> CHANGE COLUMN <字段名> <數據類型> DEFAULT <默認值>;
【實例 2】修改數據表 tb_dept3,將部門位置的默認值修改為 Shanghai,輸入的 SQL 語句和運行結果如下所示。
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)
刪除默認值約束
修改表時刪除默認值約束的語法規則如下:
ALTER TABLE <數據表名> CHANGE COLUMN <字段名> <字段名> <數據類型> DEFAULT NULL;
【實例 3】修改數據表 tb_dept3,將部門位置的默認值約束刪除,輸入的 SQL 語句和運行結果如下所示。
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)