MySQL之多表查询
之前我们建立表与表之间的关系是用的foreign key,外键所连接的两个表之间是强制连接关系,而且建表还得先建立被指向的表,之后才能建立有外键的表,其实我们还有其他方法,不使用外键就可以实现关联,多表查询有以下三种方法。
现在有两个表,分别为department表和employee表,他们之间是没有外键关系的。
两个表分别有以下数据。
一、笛卡尔积
我们可以通过笛卡尔积得到一个新的虚拟的表。
我们得到这个表之后,就可以用这表取我们想要的数据。比如拿到技术部门的员工名字
二、链表查询
其实链表查询和笛卡尔积差不多,只是笛卡尔积的链表和查询放在了一起,逻辑不是很好,但链表就把链表和查询分开的。主要分为四种。
1,inner join on
2,left join on
3,right join on
4,union
上面的四种方法可以帮我们创建一个虚拟的表,得到这表之后我们就可以进行查询。
三、子查询
子查询就是先对一个表查询得到一个值,然后我们把这个值作为下一个表查询的约束条件用。
对于第一个得到的结果可以是几个值,所以我还可以使用in,!=,<,>,not ,exists
exists的用法:select * from employee where exists ..............此处的省略可以跟任意,只要省略的内容不为零就会执行前面的代码,不然前面的代码就不会执行。