个人学习历程之菜鸟初体验SQL外键和引用完整性
来源:互联网 发布:java patternlayout 编辑:程序博客网 时间:2024/06/08 08:22
- 利用外键关系,我们可以在一个表里声明与另一个表里的某个索引相关联的索引,外键不仅在行的插入操作中很有用,在删除和更新操作中也很有用处,外键可以帮助我们维护数据的一致性,并且它们用起来也很方便,在MySQL里,InnoDB存储引擎提供了对外键的支持。今天作为菜鸟的我,即将开启学习如何使用外键和引用完整性的历程。
- InnoBD存储引擎会通过这些规则来保证:在外键关系里不会出现不匹配的情况。这就是所谓哦的参照完整性(referential integrity).
- 以上两点只是笼统的介绍了一下,感觉还没有步入正题啊。。继续~~
-外键语法
[CONSTRANINT constraint_name]FOREIGN KEY [fk_name](index_columns) REFERENCES tbl_name (index_columns) [ON DELETE action] [ON UPDATE action] [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
(上面的单词如果不去写成小写,那真是一脸懵,还得去查一查)目前InnoDB存储引擎还不支持MATCH子句,其他的子句慢慢来就懂了。接着看~
- CONSTRAINT(constraint约束):它会为外键约束提供一个名字,如果省略它,那么InnoDB存储引擎会创建一个名字。(感觉意义不大)
- FOREING KEY :它会列出子表里的索引列,这些列必须与父表里的索引值相匹配。(个人觉得这就是一个外键的关键字,说的很高大上)
- PEFERENCES:它会列出父表及其索引列的名字,让子表里的外键可以引用它们。(这个属性就和上面的FOREIGN配合使用,简单的概括可以说成上面的FOREIGN定义子表中的某列外键,PEFERENCES定义父表中的可提供引用的列)
- ON DELETE action
ON UPDATE action 这两个属性说的是父表执行删除或者更新操作是,子表相应的那列也将会受到影响。
(目前就这几个属性了,感觉不是很难,看看例子)SQL代码
CREATE TABLE parent( par_id INT NOT NULL, PRIMARY KEY (pri_id))ENGINE = INNODB;
CREATE TABLE child( par_id INT NOT NULL, child_id INT NOT NULL, PRIMARY KEY (par_id,child_id), FOREIGN KEY (par_id) REFERENCES parent (par_id) ON DELETE CASCADE ON UPDATE CASCADE)ENGINE=INNODB;
INSERT INTO parent (par_id) VALUES (1),(2),(3);INSERT INTO child (par_id,child_id) VALUES(1,1),(1,2);INSERT INTO child (par_id,child_id) VALUES(2,1),(2,2),(2,3);INSERT INTO child (par_id,child_id) VALUES(3,1),(3,2);
- 接下来可以写一些测试的
INSERT INTO child (pri_id,child_id) VALUES (4,1);DELETE FROM parent WHERE pri_id=1;UPDATE parent SET pri_id=100 WHERE pri_id=2;
结果表明删除或者更新父表中的元素,子表也会跟着受影响,在子表中进行更新是必须遵循外键约束。
0 0
- 个人学习历程之菜鸟初体验SQL外键和引用完整性
- 个人学习历程之菜鸟初体验mybatis高级映射一对一查询
- 菜鸟之计算机学习历程
- 53.笔记 MySQL学习——外键和引用完整性
- 小菜鸟学习历程之ToolBar
- mysql外键的使用和引用完整性
- 菜鸟学习历程【13】栈和队列
- JavaScript学习历程和心得体验
- 1.菜鸟的linux学习之路------linux初体验
- 菜鸟初体验之----DataBinding
- 实体完整性,引用完整性,域完整性,事务回滚,外键模糊查询
- 一个立志终身学习的菜鸟之-------学习历程
- T-SQL学习之路之数据库完整性之默认值
- T-SQL 学习之路之数据库完整性之域完整性
- T-SQL 学习之路之数据库完整性之域完整性(一)
- T-SQL 学习之路之数据库完整性之域完整性(二)
- T-SQL 学习之路之数据库完整性之实体完整性
- T-SQL学习之路之数据库完整性之参照完整性
- 我为什么要努力?
- 怎样在Eclipse中使用debug模式调试程序
- 异常#File
- cvx error
- Codeforces Round #410 (Div. 2) B. Mike and strings(字符串匹配)
- 个人学习历程之菜鸟初体验SQL外键和引用完整性
- Spark基本工作流程及YARN cluster模式原理
- Java基础总结大全
- 494. Target Sum
- 计算语言学之语言理解与认知(1)
- IntelliJ Idea 常用快捷键列表
- Spark调度管理(读书笔记)
- Spring Transaction属性 Propagation
- 百度如何能实时检索到15分钟前新生成的网页?