mysql外键的建立和删除更新

– 约束
– not null非空,unique唯一 primary key 非空且唯一【主键】
– default默认 check保证满足条件 foreign key外键

约束的建立方法如下:

create table t(
    -- char型不能自增
    -- 自增一旦申请就会加1
    TNO int primary key auto_increment comment'主键',-- char订场
    TN varchar(5) not null comment'姓名',-- varchar不定长
    Sex char(1) comment'性别',
    Age int check(Age>25 and Age<60 )comment'年龄',
    prof varchar(10) unique comment'职称',
    Sal int default 800 comment'工资',
    Comm int default 1200 comment'岗位津贴',
    -- 建表时添加外键方法(此处没有执行,下方将展示已经建表如何添加外键)
    Dept varchar(10) comment'专业'
)comment'教职工信息表';

外键

– 添加外键(注意加括号的两处)【蓝色小钥匙外键,黄色小钥匙主键】【注意格式】
【此种关联,不允许删除外键相关字段】
– 此代码会报错

delete from depta where dep='计算机';-- 建立外键关联后存在关系就不能删除
alter table t add constraint zhegeshiziyoudingyide foreign key (dept) references depta(dep);

删除外键:

alter table t drop foreign key zhegeshiziyoudingyide;

外键的删除和更新

– NO ACTION <-> RESTRICT [父表删除数据若有对应的外键则不允许删除]
– 操作方法【在添加外键的基础上后面再加on update on delete】
CASCADE[删除或更改时如果有外键则字表也随之删除或更改]

-- CASCADE[删除或更改时如果有外键则字表也随之删除或更改]
alter table t add constraint zhegeshiziyoudingyide foreign key (dept) references depta(dep) on update CASCADE on delete CASCADE;
update depta SET dep='软件工程' where DEP='计算机';
delete from depta where dep='软件工程';

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
– SET NULL[也是可以先进行更新数据的]

-- SET NULL[也是可以先进行更新数据的]
alter table t add constraint zhegeshiziyoudingyide foreign key (dept) references depta(dep) on update set null on delete set null;
update depta SET dep='软件工程' where DEP='计算机';
delete from depta where dep='软件工程';
select *from t;

在这里插入图片描述
代码:

-- 约束
-- not null非空,unique唯一 primary key 非空且唯一【主键】
-- default默认 check保证满足条件 foreign key外键
select database();
show tables;
create database newinf;
drop database t;
use newinf;
create table t(
    -- char型不能自增
    -- 自增一旦申请就会加1
    TNO int primary key auto_increment comment'主键',-- char订场
    TN varchar(5) not null comment'姓名',-- varchar不定长
    Sex char(1) comment'性别',
    Age int check(Age>25 and Age<60 )comment'年龄',
    prof varchar(10) unique comment'职称',
    Sal int default 800 comment'工资',
    Comm int default 1200 comment'岗位津贴',
    -- 建表时添加外键方法(此处没有执行,下方将展示已经建表如何添加外键)
    Dept varchar(10) comment'专业'
)comment'教职工信息表';
desc t;
drop table DEPTA;
truncate table t;
select *from t;
insert into t(TN,Sex,Age,Prof,Sal,Comm,Dept)
values ('李力','男','47','教授1','1500','3000','计算机'),
('李力q','男','47','教授2','1500','3000','自动化'),
 ('李力w','男','47','教授3','1500','3000','信息');
insert into t(TN,Sex,Age,Prof,Dept)
values('王平','女','28','讲师1','信息');
insert into t(TN,Sex,Age,Prof,Dept)
values('王平1','女','28','讲师2','计算机');
insert into t(TN,Sex,Age,Prof,Dept)
values('王平2','女','28','讲师3','自动化');
desc s;
-- 外键约束(用来连接两张表的)
-- 如果不建立外键无法保证数据完整性
-- 理解为当一个表具有另一个表的主键且其不为主键时,时另一个表的外键
create table depta(
dep varchar(10) primary key,
dengji varchar(2)
);
insert into depta values('计算机','A'),('信息','B+');
insert into depta values('自动化','B+');
select *from depta;
-- 添加外键(注意加括号的两处)【蓝色小钥匙外键,黄色小钥匙主键】
alter table t add constraint zhegeshiziyoudingyide foreign key (dept) references depta(dep);
delete from depta where dep='计算机';-- 建立外键关联后存在关系就不能删除
-- 删除外键
alter table t drop foreign key zhegeshiziyoudingyide;
#外键的删除和更新
-- NO ACTION <-> RESTRICT [父表删除数据若有对应的外键则不允许删除]
-- 操作方法【在添加外键的基础上后面再加on update on delete】
-- CASCADE[删除或更改时如果有外键则字表也随之删除或更改]
alter table t add constraint zhegeshiziyoudingyide foreign key (Dept) references depta(dep) on update CASCADE on delete CASCADE;
update depta SET dep='软件工程' where DEP='计算机';
delete from depta where dep='软件工程';
-- SET NULL[也是可以先进行更新数据的]
alter table t add constraint zhegeshiziyoudingyide foreign key (dept) references depta(dep) on update set null on delete set null;
update depta SET dep='软件工程' where DEP='计算机';
delete from depta where dep='软件工程';
select *from t;
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值