12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
ADADADADAD
mysql数据库 时间:2024-12-24 19:12:38
作者:文/会员上传
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
什么是外键:外键就是表中存在一个字段指向另外一个表的主键,那么这个字段就可以称为外键。一张表可以有多个外键。外键用于约束表与表之间的关系,可以说外键是表之间的映射关系
以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。
什么是外键:
外键就是表中存在一个字段指向另外一个表的主键,那么这个字段就可以称为外键。一张表可以有多个外键。外键用于约束表与表之间的关系,可以说外键是表之间的映射关系,这个关系可以帮助我们处理表之间关系的紧密性和存在性(比如学生表的cid班级号与班级表的id建立关联,cid应该不能为不存在的,如果不增加外键cid,没有建立上关系,我们就不知道班级号不存在。)。或者说,外键是告诉数据库系统,我们所认为的关系,单纯的数据,系统是不知道实际意义的,外键就是告诉系统应该如何处理他们的关系。所以,外键的核心是约束。create table student(id int primary key auto_increment,name varchar(15) not null,gender varchar(10) not null,cid int,foreign key(cid) references class(id));
create table class(id int primary key auto_increment,cname varchar(15));补充:在Mysql中,如果存储引擎不是innodb,那么无法使外键的约束作用生效,即使是能成功增加外键。外键名不能重复,所以不建议使用constraint 外键名字
foreign key(外键字段) references 父表 (主键) on delete set null on update cascade;
-- 实验表结构create table class(id int primary key auto_increment,cname varchar(15));create table student2(id int primary key auto_increment,name varchar(15) not null,gender varchar(10) not null,cid int,foreign key(cid) references class(id) on delete set null on update cascade);-- 实验表数据:insert into class(cname) values("python"),("linux"),("java"),("html5");insert into student2(name,gender,cid) values("Alice","female",1);insert into student2(name,gender,cid) values("John","female",2);insert into student2(name,gender,cid) values("Jack","female",3);insert into student2(name,gender,cid) values("Amy","female",4);select * from student2;select * from class;-- 尝试更新级联update class set id = 6 where cname="python";select * from student2; -- 结果原来的python的cid=6-- 尝试删除置空delete from class where cname="java";select * from student2; -- 结果原来的java的cid=null补充:需要设置好约束模式,不要在多个子表中使用不同的约束模式,不然会冲突。
11-20
11-19
11-20
11-20
11-20
11-19
11-20
11-20
11-19
11-20
11-19
11-19
11-19
11-19
11-19
11-19