![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=1739525306-beMSYMxlx54UTJz3yN3vugXRVhvmxBGd-0-2dce3f5ba4a8513aca7e2ba35e3ce4c7)
默认约束(Default Constraint)用于指定某列的默认值,这就需要为数据表中的某个字段添加一个默认约束。注意,一个字段只有在不可为空的时候才能设置默认约束。
5.4.1 创建表时添加默认约束
数据表的默认约束可以在创建表时创建,一般添加默认约束的字段有两种情况:一种是该字段不能为空;一种是该字段添加的值总是某一个固定值。创建表时添加默认约束的语法格式如下:
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P105_24015.jpg?sign=1739525306-wyrf2yqf92HIkKrwInri2V3IH39FudTQ-0-4f48078355cf3679ba7ac372297b3f9a)
主要参数介绍如下。
- DEFAULT:默认值约束的关键字,它通常放在字段的数据类型之后。
- constant_expression:常量表达式,该表达式可以直接是一个具体的值,也可以是通过表达式得到一个值,但是这个值必须与该字段的数据类型相匹配。
提示:除了可以为表中的一个字段设置默认约束,还可以为表中的多个字段同时设置默认约束,不过,每一个字段只能设置一个默认约束。
【实例9】在数据库test中,创建一个数据表person,为city字段添加一个默认值“北京”,输入以下SQL语句:
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P105_24014.jpg?sign=1739525306-b1MQawSK0PbxFggrl9qIl1lEVkpNzpQv-0-d4e036fe12fdeb7e0af2906bcd2a73ff)
单击“执行”按钮,即可完成添加默认约束的操作,如图5-19所示。执行完成后,使用“DESC person;”语句即可看到该数据表的结构,如图5-20所示。可以看到数据表的默认值为“北京”。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P106_4929.jpg?sign=1739525306-i5bpUhg3T6foFwOCWG0MNUjyBChnNrbE-0-74b3a9ac2fe5f31789be447b0d085bb1)
图5-19 添加默认约束
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P106_4930.jpg?sign=1739525306-cnzI8EPsU1Ca190s1AkYOZ46Q2PULF4T-0-817cf2c9c80b10e42b19e19a7099ad23)
图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=1739525306-29pwkrnxQWH7ditFXPmUocMYv8ZyUhO6-0-a7bef70c5f01ae72af156a32e3f9408e)
图5-21 修改表时添加默认约束
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P106_4963.jpg?sign=1739525306-e6TOtvaH1fSM5U5FEW0bvddNgyMF0Q0X-0-fe8ee6b8b537af05b4e2c9679f328e41)
图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=1739525306-nLJTi84oneLKnEvRv81nf0Tz1MGWorQG-0-983e3686d0d1c43624eb56817fea568e)
图5-23 删除默认值约束
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P107_4999.jpg?sign=1739525306-rVfDFOgwAniglm43dgHEdkuzd39bncl4-0-238d9920cc9f91dda2df41aeca2df4bb)
图5-24 删除默认约束后的表结构