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 ..............此处的省略可以跟任意,只要省略的内容不为零就会执行前面的代码,不然前面的代码就不会执行。

        

原文地址:https://www.cnblogs.com/12345huangchun/p/10098722.html