MYSQL基础知识之约束
1、概念
约束是作用于表中字段上的规则,用于限制存储在表中的数据,其目的是保证数据库中数据的正确、有效性和完整性。
常用的约束如下表:
注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束
2、案例
需求:
代码:
CREATE TABLE students2(
id int PRIMARY KEY AUTO_INCREMENT COMMENT '用户id',
name varchar(10) NOT NULL UNIQUE COMMENT '姓名',
password varchar(10) DEFAULT '123456' COMMENT '密码',
gender char(1) COMMENT '性别'
)COMMENT '学生表';
3、外键约束
外键是用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性
语法:
#在创表时添加外键
CREATE TABLE 表名(
字段名 数据类型,
...
[CONSTRAINT] [外键名] FOREIGN KEY (外键字段名) REFERENCES 主表(主表列名)
);
#创表后添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (外键字段名) REFERENCES 主表(主表列名);
代码1:
# 字表
CREATE TABLE classinfo(
id int PRIMARY KEY AUTO_INCREMENT COMMENT '班级id',
name varchar(50) NOT NULL COMMENT '班级名'
)COMMENT '班级表';
# 主表
CREATE TABLE students3(
id int PRIMARY KEY AUTO_INCREMENT COMMENT 'id',
name varchar(50) NOT NULL COMMENT '学生名',
password varchar(10) DEFAULT '123456' COMMENT '密码',
gender char(1) COMMENT '性别',
classid int NOT NULL COMMENT '班级id',
CONSTRAINT fk_students_classinfo_id FOREIGN KEY (classid) REFERENCES classinfo(id)
)COMMENT '班级表';
代码2:
ALTER TABLE students3 ADD CONSTRAINT fk_student_classinfo FOREIGN KEY (classid) REFERENCES classinfo(id);
4、删除外键
语法:ALTER TABLE 表名 DROP FOREIGN KEY 外键名;
ALTER TABLE students3 DROP FOREIGN KEY fk_students_classinfo_id;
5、行为
在设置外键之后,就无法轻易地删除数据表中的数据,这是因为存在外键约束行为——删除/更新行为
外键的删除/更新行为有:
为外键设置删除/更新行为语法格式如下:
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (外键字段) REFERENCES 主表名(主表字段) ON UPDATE 行为 ON DELETE 行为;
ALTER TABLE students3 ADD CONSTRAINT fk_student_classinfo FOREIGN KEY (classid) REFERENCES classinfo(id) ON UPDATE CASCADE ON DELETE CASCADE;