MYSQL的外键约束!搞不懂!

kaysen 发布于 2012/09/27 17:41
阅读 2K+
收藏 0

MYSQL的外键约束,

CREATE TABLE tb_emp5
(
    id INT(11) PRIMARY KEY,
    name VARCHAR(25),
    deptId INT(11),
    salary FLOAT, 
    CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
);

这里的外键约束是指的约束完以后就可以select * from xxx;就直接可以查出来两张表关联数据?

还有百度查资料这个外键约束只支持innodb?

一般php里写的不是都是拿一张表的id去令一张查吗?设置这个并且INNODB以后就不用php这么麻烦循环去查了?

有懂mysql的大师看到请详细解答下!万份感觉!

 

加载中
0
Wentasy
Wentasy

引用来自“nbsp”的答案

引用来自“Wentasy”的答案

外键可以这样理解:比如一辆轿车和一个方向盘,轿车看做主表,方向盘看做从表,轿车中有个是s teering_wheel_id指向 方向盘,方向盘有个主键ID,这样就构成了外键关系。方向盘先要存在,轿车才能使用。你想一辆车肯定有方向盘吧,不然就开不走了。哈哈。也就是说轿车中的s teering_wheel_id要么为空,要么为方向盘中存在的数据。这样做可以 保证数据的一致性和完整性,使得关系更加明了。这是关系型数据可很大的一个特征。
我知道关系啊大哥,我以前是直接用php用循环去查找每个(表B中user_id == 表A id)的结果,如果我在数据库用这种CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept...关联,那是不是php就不用那么循环的麻烦了,直接查询一条结果自动相关联?
需要关联查询的,比如A表的外键等于B表的主键。还达不到自动关联。
1
漫步在云端
漫步在云端
有些数据库的外键支持cascade update或者cascade delete,这样当外键表和主表中的记录就能自动一起更新删除了
0
LucEsape
LucEsape
一般都是用你说的那样 ID 查询 或者条件查询,在实际开发中 一般是不会去用外键的,除了些特殊的数据库。
0
blur
blur
外键的优点主要在于保证数据的一致性和完整性。实际开发当中通常不用外键,保证数据一致性的工作也给放到业务逻辑里去处理了。
0
Wentasy
Wentasy
外键可以这样理解:比如一辆轿车和一个方向盘,轿车看做主表,方向盘看做从表,轿车中有个是s teering_wheel_id指向 方向盘,方向盘有个主键ID,这样就构成了外键关系。方向盘先要存在,轿车才能使用。你想一辆车肯定有方向盘吧,不然就开不走了。哈哈。也就是说轿车中的s teering_wheel_id要么为空,要么为方向盘中存在的数据。这样做可以 保证数据的一致性和完整性,使得关系更加明了。这是关系型数据可很大的一个特征。
0
kaysen
kaysen

引用来自“Wentasy”的答案

外键可以这样理解:比如一辆轿车和一个方向盘,轿车看做主表,方向盘看做从表,轿车中有个是s teering_wheel_id指向 方向盘,方向盘有个主键ID,这样就构成了外键关系。方向盘先要存在,轿车才能使用。你想一辆车肯定有方向盘吧,不然就开不走了。哈哈。也就是说轿车中的s teering_wheel_id要么为空,要么为方向盘中存在的数据。这样做可以 保证数据的一致性和完整性,使得关系更加明了。这是关系型数据可很大的一个特征。
我知道关系啊大哥,我以前是直接用php用循环去查找每个(表B中user_id == 表A id)的结果,如果我在数据库用这种CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept...关联,那是不是php就不用那么循环的麻烦了,直接查询一条结果自动相关联?
0
kaysen
kaysen

引用来自“blur”的答案

外键的优点主要在于保证数据的一致性和完整性。实际开发当中通常不用外键,保证数据一致性的工作也给放到业务逻辑里去处理了。
OK,那就是这东西没有用啊?
返回顶部
顶部