今天给你们来一波福利,按号找对象,话不多说,开始造。
-
以下是两张学生信息表,boy 表中有两位绅士,而 girl 表中有三位仙女,接下来上演 CSDN 之非诚勿扰。
-
有请主持人孟老师输入:
select * from boy natural join girl;
,可以看到 Mike 牵手了 一号女嘉宾 Lucy ,Jone 牵手了二号女嘉宾 Alice。 -
where is 三号女嘉宾 Yana ?请输入:
select * from boy natural right join girl;
,可以看到 Yana 没有牵手成功,值为 Null -
那为什么是这样的结果嘞?请移步总结。
总结
- boy表 和 girl表 中有相同的字段 id ,boy表中 id=1 的要对应 girl 表中 id=1 的,boy表中 id=2 的要对应 girl 表中 id=2的,所以并非是他们找到了爱情,而是 id 导致,要是把 Yana 的 id 改为 1,可以看到现在轮到 Lucy 牵手失败了。
- 而
select * from boy natural right join girl;
中多加了一个 right ,意味着以右表 girl 为主,girl 表中的 girlname 必须全部出现。若换成 left ,则以左表 boy 为主,boy 表中的 boyname 必须全部出现。若不加,则没有相同 id 的则不出现,无论 boy 在 natural join 的左还是右 - 插一句嘴,natural join 与 cross join 不一样,后者更加随便,使用后者如下图,妥妥的n角恋:
- 如果 natural join 使用不对,比如,两张表的 id 名不一样,一个是 boyid,一个是 girlid,结果也会是 n角恋,所以切记字段名要一样。