“默认值(Default)”的完整称呼是“默认值约束(Default Constraint)”。MySQL默认值约束用来指定某列的默认值。
创建表是设置默认值约束
创建表时可以使用 DEFAULT
关键字设置默认值约束,具体的语法规则如下:
<字段名> <数据类型> DEFAULT <默认值>;
【实例1】创建数据表student
,指定性别默认值为"男",输入的 SQL 语句和运行结果如下所示。
mysql> create table student(
-> id int(11) primary key auto_increment,
-> name varchar(100),
-> sex varchar(10) default '男',
-> address varchar(100)
-> )ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Query OK, 0 rows affected
mysql> desc student;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
| sex | varchar(10) | YES | | 男 | |
| address | varchar(100) | YES | | NULL | |
+---------+--------------+------+-----+---------+----------------+
4 rows in set
在修改表时添加默认值约束
修改表时添加默认值约束的语法规则如下:
ALTER TABLE <数据表名>
CHANGE COLUMN <字段名> <数据类型> DEFAULT <默认值>;
【实例2】修改数据表student
,将性别的的默认值修改为 ‘女’,输入的 SQL 语句和运行结果如下所示。
mysql> alter table student
-> change column sex
-> sex varchar(10) default '女';
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc student;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
| sex | varchar(10) | YES | | 女 | |
| address | varchar(100) | YES | | NULL | |
+---------+--------------+------+-----+---------+----------------+
4 rows in set
mysql>
删除默认值约束
修改表时删除默认值约束的语法规则如下:
修改表时删除默认值约束的语法规则如下:
ALTER TABLE <数据表名>
CHANGE COLUMN <字段名> <字段名> <数据类型> DEFAULT NULL;
【实例3】修改数据表 student
,将性别位置的默认值约束删除,输入的 SQL 语句和运行结果如下所示。
mysql> alter table student
-> change column sex
-> sex varchar(10) default null;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc student;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
| sex | varchar(10) | YES | | NULL | |
| address | varchar(100) | YES | | NULL | |
+---------+--------------+------+-----+---------+----------------+
4 rows in set
mysql>