一:数据库除了增删改查以外的操作 :外键约束
打开数据库 test—>选择对象中的一张表 点击设计表:
然后会出现一个设置外键的界面,一共有七列。简单介绍一下这几列的意思:
“名”: 可以不填,你一会保存成功系统会自动生成。
“栏位”:就是你要把哪个键设置为外键。
“参考数据库”: 外键关联的数据库。
“参考表”: 关联的表
“参考栏位”:关联的的字段
“删除时":就是删除的时候选择的动作。
“ 更新时”:就是更新的时候选择的动作
理解外键约束的作用:
1)
这里会提到一个关键词==“索引”== 先介绍一下
当我们每次查询数据库的时候都要访问完整的表,这就照成了资源的浪费,为了提高检索数据的能力 数据库引入了 索引机制.
你可以将索引理解为一本书的目录,我们先看"目录" 找到 页码(指针) 然后去找我们想要的内容 就很方便了.
索引按存储结构分类1 | ClusteredIndex | Nonclustered Index |
---|---|---|
1 | 对数据完全排序 | 与表完全分离 |
2 | 需要空间大 | 关键字的值+定位器 |
3 | 一个表 一个 |
2)外键约束 是什么呢?
为了保证数据的完整性和一致性 时数据关联
例子:
1.一个餐桌 可以上 多个菜色
这里有
1.餐桌表[ A1,A2,A3]
2.菜谱[土豆丝,红烧茄子,烤鱼]
桌子和菜的关系是一对多的,一个桌子没了人(订单取消) 他点的菜也就全部删除.
这里就体现了数据一致性.
他的on delete 规则:
1、CASCADE:级联
(1)所谓的级联删除,就是删除主键表的同时,外键表同时删除。
(2)以上面的例子将就是,你的桌子(主键)被删 订单内容也就没了,如歌菜谱有内容被删 那么 餐桌 不受影响
2、NO ACTION(非活动,默认)、RESTRICT:约束/限制
当取值为No Action或者Restrict时,则当在主键表中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。(即外键表约束主键表)
3、SET NULL
当取值为Set Null时,则当在主键表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(,一样是外键表约束主键表,不过这就要求该外键允许取null)。
NO ACTION和RESTRICT的区别:只有在及个别的情况下会导致区别,前者是在其他约束的动作之后执行,后者具有最高的优先权执行。