当前位置:Gxlcms > 数据库问题 > ( 10 )MySQL中的外键

( 10 )MySQL中的外键

时间:2021-07-01 10:21:17 帮助过:20人阅读


外键 外键: foreign key ,外面的键(键不在自己表中) , 如果一张表中有一字段(非主键)指向另外一张表的主键 , 那么该字段称之为外键. 一张表可以有多个外键. 新增外键 创建外键的两种方式: 1 创建表的时候创建外键 2 创建表之后增加创建外键 外键要求字段本身必须先是一个索引(普通索引),如果字段本身没有索引,外键先创建一个索引然后才会创建外键本身 在新增表之后增加外键: 修改表结构 基本语法: alter table 表名 add [constraint 外键名字] foreign key (外键字段) references 父表(主键字段); 修改外键 外键不可修改 : 只能先删除后新增 删除外键 删除外键基本语法: alter table 表名 drop foreign key 外键名; --说明表中有多个字段但名字不能相同 外键删除不能通过查看表结构查看是否被删除 ,可以通过表创建语句查询 外键作用 外键默认的作用有两点,一个对父表,一个对子表(外键字段所在的表) 对子表约束: 子表数据进行写操作(增和改)的时候,如果对应的外键字段在父表中找不到对应的匹配,那么会操作失败(约束子表数据操作) 例: 把子表中的一个同学 放到 父表中的班级中 , 但是父表中不含有这个班级 -- 失败 对父表约束: 父表数据进行写操作(删和改:都必须涉及到主键本身) 例 : 人走茶凉 如果对应的主键在子表中已经被数据所引用 那么就不允许操作. 外键条件 1.外键要存在必须保证搜索引擎是innodb(默认的),否则外键可以创建成功,但是没有效果 2.外键字段的字段类型必须与父表的主键类型完全一致. 3.一张表中外键名字不能重复 4. 增加外键的字段(数据已经存在),必须保证数据与父表主键对应 数据已存在,不能建立外键,因为不能改变对应关系. 外键约束 所谓的外键约束就是指外键的作用,通过对外键的需求进行定制操作. 约束模式有三种: 都是对父表的操作 Distinct : 严格模式(默认的) 父表不能删除或更新一个已经被子表数据引用的记录 Cascade : 级联模式 父表的操作,对应子表关联的数据也跟着操作 Set Null : 置空模式 父表操作之后,子表对应的数据(外键字段)被置空 通常的一个合理的做法(约束模式):删除的时候子表被置空,更新的时候子表级联操作 基本语法: foreign key (外键字段) references 父表(主键字段) on delete 约束模式 on update 约束模式   foreign key (外键字段) references 父表(主键字段) on delete set null on update cascade 外键使用的时候降低了程序的控制力 , 外键好用 ,但是不敢用.  
     

( 10 )MySQL中的外键

标签:cad   结构   更新   一个   索引   基本   控制力   多个   失败   

人气教程排行