约束
概念
约束是作用于表中字段上的规则,用于限制存储在表中的数据
目的
保证数据库中数据的正确性、有效性、完整性
分类
约束 | 描述 | 关键字 |
---|
理解:唯一约束,比如 用户注册的身份证号、绑定的手机号等等
注意:约束作用于表中字段,可以在创建表/修改表的时候添加约束
演示
根据约束条件,完成表的构建
![](https://gitee.com/xiaobainewnew/typora-blog/raw/master/img/202208311950226.jpg)
CREATE TABLE USER(
id int PRIMARY KEY AUTO_INCREMENT,
name varchar(10) NOT NULL UNIQUE ,
age tinyint unsigned CHECK (age > 0 && age <= 120) ,
status char(1) DEFAULT '1' ,
gender char(1)
) comment '用户表';
INSERT INTO user(name,age,status,gender) VALUES('Tom',19,'1','男'),('Jrey1',25,'0','男'),('Jrey2',25,'0','男');
SELECT * FROM user;
易错点: 存在一个DEFAULT函数,想设置约束,如果选择了函数就会报错。
因为id是自动增长,所以在插入数据时不用填id这个字段,(自增主键约束:AUTO_INCREMENT)
外键约束
概念
外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性
注意:上述两张表,在数据库层面,并未建立外键关联,无法保证数据的一致性和完整性。
这种方式是无法建立关联的,倘若一张表删除某些数据,那么另一张表并不会随之改变
语法
foreign key(外键字段) references 被参照表(被参照表主键)
eg: 添加外键 student和user表
alter table student add FOREIGN key(uname) REFERENCES user(uid);
添加外键
表1(主表)填写:
表名
外键名称:FK_表名 _ 字段名
外键字段名:字段名
表2(副表)填写:
主表(主表列名)
删除外键
删除/更新行为
两表建立关联,父表改变,子表随之改变
行为 | 说明 |
---|
语法:
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES 主表名(主表字段名) ON UPDATE 行为 ON DELETE 行为