携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第7天,点击查看活动详情
前言
上篇我们学习了MySQL学习-FOREIGN KEY约束。有兴趣的小伙伴可以阅读(# MySQL学习-FOREIGN KEY约束)。
下面学习MySQL中的CHECK与DEFAULT约束。
CHECK约束
作用
检查某个字段的值是否符合XX要求,一般指的是值的范围。
关键字
CHECK
MySQL5.7不支持
MySQL5.7可以使用CHECK约束,但CHECK约束对数据验证没有任何作用。添加数据时,没有任何错误或警告。但是MySQL8.0中可以使用CHECK约束了。
增加CHECK约束
CREATE TABLE emp(
id INT PRIMARY KEY,
name VARCHAR(30),
gender CHAR CHECK('男' OR '女')
);
这里虽然增加了CHECK约束,但是在MySQL5.7中,是可以插入其他值的。
DEFAULT约束
作用
给某个字段指定默认值,一旦设置默认值,在插入数据时,如果此字段没有显示赋值,则赋值为默认值。
关键字
DEFAULT
增加默认值
增加默认值,可以在创建表时,也可以在创建表后。
创建表时
CREATE TABLE 表名(
字段名 数据类型 PRIMARY KEY,
字段名 数据类型 NOT NULL DEFAULT 默认值,
字段名 数据类型 NOT NULL DEFAULT 默认值
);
说明:默认值一般不在唯一键和主键列上面加。
创建表,并插入数据。
CREATE TABLE emp(
emp_id INT PRIMARY KEY,
name VARCHAR(20),
gender CHAR DEFAULT `男`
);
INSERT INTO emp
VALUES(1, `xiaoming`);
插入数据后,查询数据库,可以看到xiaoming的性别有默认值是男。
创建表后
ALTER TABLE 表名 MODIFY 字段名 数据类型 DEFAULT 默认值;
说明:
- 如果这个字段原来有非空约束,还需要保留非空约束,那么在加默认值约束时,还需保留非空约束,否则非空约束会被删除。
- 同理,在给某个字段加非空约束时也一样,如果这个字段原来有默认值约束,需要保留时,也需要在MODIFY语句中保留默认值约束,否则会被删除。
修改上表中的字段name,增加默认值``。
ALTER TABLE emp MODIFY name VARCHAR(20) DEFAULT ``;
删除约束
ALTER TABLE 表名 MODIFY 字段名 数据类型;
不增加任何约束,即可删除默认值约束。
今天先学习到这里,明天继续。