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

约束的建立方法如下:

create table t(-- char型不能自增-- 自增一旦申请就会加1TNO 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型不能自增-- 自增一旦申请就会加1TNO 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;

mysql外键的建立和删除更新相关推荐

  1. DBeaver mysql 外键设置了级联删除,子表无法添加数据

    DBeaver mysql 外键设置了级联删除,子表无法添加数据 报错:Cannot add or update a child row: a foreign key constraint fails ...

  2. mysql外键约束创建及删除_MySQL中的外键的创建,约束和删除

    一.外键的创建 语法一:后续添加方法 alter table 表名 add constraint 约束名 foreign key(当前表中约束的字段) references 主表表名(要约束的字段名) ...

  3. mysql外键更新规则_sql server 外键 更新(删除)规则

    以前用数据库,一般都建表关系,但是这些关系建好了往往没有用到. 这次写一个项目,涉及到多表的外键约束和级联删除的问题,才研究了一下. 用的vs2005里面自带的SqlExpress,在VS里面作数据库 ...

  4. mysql建立参照完整性,MySQL外键和参照完整性的实现步骤

    我们大家都知道MySQL参照完整性一般是通过MySQL外键(foreign key)的具体使用而随之应用.总的来说,流行工具开源 RDBMS MySQL(与PHP搭配之最佳组合)并不支持外键,原因是这 ...

  5. mysql外键设置不成功_MySQL数据库建立外键失败的原因总结

    在MySQL数据库创建外键时,经常会发生一些错误,这是一件很令人头疼的事.一个典型的错误就是:Can't create table... 的错误.在很多实例中,这种错误的发生都是因为mysql一直以来 ...

  6. Mysql外键约束的创建与删除

    在Mysql中使用外键,可以有效地将多个表格的数据"联动"起来,打破独立状态,互相影响. 文章目录 创建表时创建外键 给存在的表添加外键 删除外键约束 创建表时创建外键 创建两个表 ...

  7. MySQL外键约束On Delete、On Update各取值的含义

    主键.外键和索引的区别?   主键 外键 索引 定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键, 外键可以有重复的, 可以是空值 主索引(由关键字PRIMARY定义的索引) ...

  8. mysql 外键引擎_对于mysql的外键和mysql的存储引擎

    存储引擎说白了就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法.因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型). ...

  9. mysql外键约束脚本_如何在MySQL中设置外键约束

    (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库 ...

最新文章

  1. 【BZOJ-2342】双倍回文 Manacher + 并查集
  2. window.open打开一个新空白页面,不会自动刷新【解决方案】
  3. ppt flash倒计时器_PPT三大神器之iSlide插件
  4. LeetCode 433. 最小基因变化(广度优先搜索)
  5. 王道8套有变化吗_求求你别再套花艺设计公式了
  6. ===,!==,==,!=的使用
  7. 《计算机网络》学习笔记 ·007【无线网络】
  8. 万条留言!这本Python凭啥火爆程序员的朋友圈?
  9. java中布尔类型的常量有哪两种,【填空题】Java中布尔型的常量有两种,它们是___和___。...
  10. 一行命令搞定node.js 版本升级
  11. 华为手机连接电脑,无法使用USB调试或者无USB连接弹窗的问题
  12. JESD204B SUBCLASS1确定性延时参数的计算
  13. ubuntu 14.04 分辨率调整 -- xrandr命令
  14. mysql 重做日志 镜像_mysql重做日志 - osc_vr7hvjd2的个人空间 - OSCHINA - 中文开源技术交流社区...
  15. java树结构stream工具类
  16. Win10内存占用率过高问题解决
  17. TMS320F28377S 学习笔记2 BGA封装的焊接
  18. 行政科购入计算机一台,行政单位会计分录练习题.doc
  19. 购买《哈利波特》书方案
  20. 基于Bmob云平台的android写日记带提醒功能

热门文章

  1. 银行资源下的金融科技机遇,建信金科的发展之路
  2. WEB页面验证码自动识别并填充
  3. 联想突围困难多:移动业务开拓迟缓 高层震荡频繁
  4. MPS——首款 消费类 PD 协议芯片:MP5031
  5. js常用四舍五入方法
  6. Windows远程桌面出现“发生身份验证错误,要求的函数不受支持”的解决办法
  7. freemarker截取字符串subString()
  8. 微信小程序开发的作用_分享微信小程序开发可以实现什么
  9. Python3 Linux相关命令大全
  10. 电信RG100E-AA路由猫刷TT固件及一号多拨带ITV设置笔记