MySQL外键fk是不是随便输入_mysql 外键操作

标签:

/*主键唯一的不能为空null,一个表的主键只能由一个,可以有一个主键一个唯一uk间*/

/*primary key(sname,sid) 复合主键可以同时控制sname,sid用的比较少*/

/*外键fk一般都是2个表,只支持innodb引擎*/

drop table teacher;

create table teacher(

tid smallint unsigned not null auto_increment primary key,

tname varchar(10)

)engine=innodb charset utf8;

create table student(

sid int unsigned not null auto_increment primary key,

sname varchar(10),

stid smallint unsigned,

constraint fk foreign key (stid) references teacher(tid)

)engine=innodb charset utf8;

create table student(

sid int unsigned not null auto_increment primary key,

sname varchar(10),

stid smallint unsigned,

constraint fk foreign key (stid) references teacher(tid) on delete set null on update set null/*此种删除,只会删除老师,让学生的代课老师为空*/

)engine=innodb charset utf8;

create table student(

sid int unsigned not null auto_increment primary key,

sname varchar(10),

stid smallint unsigned,

constraint fk foreign key (stid) references teacher(tid) on delete set null/*此种删除,只会删除老师,让学生的代课老师为空*/

)engine=innodb charset utf8;

drop table student;

create table student(

sid int unsigned not null auto_increment primary key,

sname varchar(10),

stid smallint unsigned,

constraint fk foreign key (stid) references teacher(tid) on delete cascade/*级联删除,删除老师的同时,把学生也删除了*/

)engine=innodb charset utf8;

insert into teacher values(null,‘李老师‘);

insert into teacher values(null,‘王老师‘);

insert into teacher values(null,‘陈老师‘);

insert into teacher values(null,‘名老师‘);

select * from teacher;

select database();

use xx;

insert into student values(null,‘李四‘,4);

insert into student values(null,‘小明‘,8);

insert into student values(null,‘李‘,7);

insert into student values(null,‘小‘,6);

select * from student;

/*删除老师1,1老师有代课下面的学生表所以不能删除,没带课的可以删除*/

delete from teacher where tid=2;

delete from teacher where tid=7;

/*因为是学生表里面有外键控制所以删除的时候先删除学生表再删除老师表*/

drop table student;

标签:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值