![MySQL入门很轻松(微课超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/406/32858406/b_32858406.jpg)
5.4 默认约束
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P105_24012.jpg?sign=1740115280-Zvs2m9ahn6EXkrCB25j1wkJOXYZqlUCG-0-8caa4034f57380069bfe795fa27ac266)
默认约束(Default Constraint)用于指定某列的默认值,这就需要为数据表中的某个字段添加一个默认约束。注意,一个字段只有在不可为空的时候才能设置默认约束。
5.4.1 创建表时添加默认约束
数据表的默认约束可以在创建表时创建,一般添加默认约束的字段有两种情况:一种是该字段不能为空;一种是该字段添加的值总是某一个固定值。创建表时添加默认约束的语法格式如下:
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P105_24015.jpg?sign=1740115280-qV3jEU8JCKq9ZUKmwQdVzDRnMsIFPtKU-0-0379d9a996609a521ced09e466a78681)
主要参数介绍如下。
- DEFAULT:默认值约束的关键字,它通常放在字段的数据类型之后。
- constant_expression:常量表达式,该表达式可以直接是一个具体的值,也可以是通过表达式得到一个值,但是这个值必须与该字段的数据类型相匹配。
提示:除了可以为表中的一个字段设置默认约束,还可以为表中的多个字段同时设置默认约束,不过,每一个字段只能设置一个默认约束。
【实例9】在数据库test中,创建一个数据表person,为city字段添加一个默认值“北京”,输入以下SQL语句:
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P105_24014.jpg?sign=1740115280-vfqkU7ER0BjgLzpef4WY6P5g0q7Pyjdf-0-1b919292e9b820e7e91dfd13b49e63c2)
单击“执行”按钮,即可完成添加默认约束的操作,如图5-19所示。执行完成后,使用“DESC person;”语句即可看到该数据表的结构,如图5-20所示。可以看到数据表的默认值为“北京”。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P106_4929.jpg?sign=1740115280-5oI9DAi4jucGdWLxwggpXOfOtZjZ8Yjf-0-6e6e7c72975cb16af00053617902a259)
图5-19 添加默认约束
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P106_4930.jpg?sign=1740115280-4koRJDIljmvdieRfjxddf2kdOKHy3L5t-0-34620d0cd66189a5960e81b0070f636a)
图5-20 查看表结构
5.4.2 修改表时添加默认约束
如果创建数据表时没有添加默认约束,可以使用ALTER语句对现有表添加默认值约束。使用ALTER语句添加默认约束的语法格式如下:
ALTER TABLE table_name ALTER col_name SET DEFAULT constant_expression;
主要参数介绍如下。
- table_name:表名,它是要添加默认约束列所在的表名。
- DEFAULT:默认约束的关键字。
- constant_expression:常量表达式,该表达式可以直接是一个具体的值,也可以是通过表达式得到的一个值,但是这个值必须与该字段的数据类型相匹配。
- col_name:设置默认约束的列名。
【实例10】person表创建完成后,如果没有为city字段添加默认约束值“北京”,则可以输入以下SQL语句来添加默认约束。
ALTER TABLE person ALTER city SET DEFAULT "北京";
单击“执行”按钮,即可完成在DEFAULT约束的添加操作,如图5-21所示。执行完成后,使用“DESC person;”语句即可看到该数据表的结构,如图5-22所示。可以看到数据表的默认值为“北京”,这与创建表时添加默认约束是一样的。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P106_4962.jpg?sign=1740115280-PggQaSaRYnYMbIfVN54LXsqM7WjTpaMC-0-5d421f9a7c86ceff1ff4dd5ef1f412f3)
图5-21 修改表时添加默认约束
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P106_4963.jpg?sign=1740115280-OnPijjUxPt20U61LfyhUD0Ps6xuIf6ib-0-06e6edab2a32f5674625f9c8c311f587)
图5-22 查看表person的结构
5.4.3 删除表中的默认约束
当表中的某个字段不再需要默认值时,可以将默认值约束删除,这个操作非常简单。使用DROP语句删除默认值约束的语法格式如下:
ALTER TABLE table_name ALTER col_name DROP DEFAULT;
主要参数介绍如下。
- table_name:表名,它是要删除的默认值约束列所在的表名。
- col_name:设置默认约束的列名。
【实例11】将person表中添加的默认值约束删除,输入如下SQL语句:
ALTER TABLE person ALTER city DROP DEFAULT;
单击“执行”按钮,即可完成对默认值约束的删除操作,如图5-23所示。执行完成后,使用“DESC person;”语句即可看到该数据表的结构,可以看到数据表的默认值被删除,如图5-24所示。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P107_4998.jpg?sign=1740115280-gcJpqPcRGZUnPloPS52DRauTu9NE5J9o-0-572fdb96e02d3b20f7168ce57e989083)
图5-23 删除默认值约束
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P107_4999.jpg?sign=1740115280-7Vcj8dILM5QeJg4I6vOn6Gj7zXMNNEYP-0-2fb125181b91780840a0fa092e05b30a)
图5-24 删除默认约束后的表结构