zoukankan      html  css  js  c++  java
  • mysql笔记(12)-外键约束的添加和删除

    本文将简单介绍外键的作用,添加/删除外键的方式,以及on update从句的使用

    一、外键的定义和作用

    1、定义

    若有关系表R和S,对于R中的属性A,A的任何值都来源于S中的属性B的值,且B具有UNIQUE约束,则A被称为R的外键

    2、作用

    (1) 能预防破坏表之间连接的行为
    (2) 能防止非法数据插入外键所在的列,因为它必须是它指向的那个表中的值之一

    二、添加外键约束

    1、在建表时添加
    create table table_name{
    xxx xxx xxx,
    xxx xxx xxx,
    xxx xxx xxx,
    FOREIGN KEY(column_name) references table_name(column_name);
    

    在建表语句的最后一句指明外键所在的列,并指明它指向哪个表的哪个属性

    2、表结构已存在时添加
    alter table table_name
    add FOREIGN KEY(column_name) 
    references table_name(clolumn name);
    

    三、删除外键约束

    需要先通过查看建表语句来获取外键约束的id

    show create table table_name G;
    

    例如 查看student表中外键dept_name的外键id
    12-1.png
    然后再使用 alter+drop 语句来删除外键

    alter table student
    drop FOREIGN KEY student_ibfk_1;
    

    四、on update 从句

    在添加外键约束时,可以在语句末尾添加 on update 从句
    从而指定 当被参照列的数据发生更新时 参照列所进行的动作
    跟在 on update 后的可选动作有4种:
    no action、cascade、set null、set default

    下面用具体的例子来说明:
    假设有关系表R和S,R中有外键A,参照S中的属性B
    (1) no action (不写on update从句时默认采用的动作)
    当B的某个值被更新时,检查表R的A列中是否有对应的值
    如果有,则发出报错,不允许被更新
    (2) cascade
    当B的某个值被更新时,检查表R的A列中是否有对应的值
    如果有,则同时更新A列中的那个值
    (3) set null
    当B的某个值被更新时,检查表R的A列中是否有对应的值
    如果有,则将A列中的对应值设为空
    (4) set default
    当B的某个值被跟新时,检查表R的A列中是否有对应的值
    如果有,则将A列中的对应值改为事先设定的默认值

  • 相关阅读:
    myelipse与idea的javaweb项目创建
    入站规则和出站规则设置
    NAT技术基本原理与应用
    如何将sqlserver数据中的数据导出到服务器
    如何将SqlServer中表结构以及表数据全部导出
    国外服务器--新加坡服务器
    windows server2008 创建新用户 远程桌面连接 和 多用户登录问题
    程序员应该关注的国外IT网站
    IDEA创建普通java和web项目教程
    IIS Express 通过IP访问的方法和坑
  • 原文地址:https://www.cnblogs.com/baebae996/p/12943059.html
Copyright © 2011-2022 走看看