对于两张数据表进行数据查询时,对于消除笛卡尔积主要是依靠连接模式处理的,而对于数据库的定义有两种:内连接和外连接
内连接:使用WHERE子句消除笛卡尔积,这就属于内连接,只有满足条件的数据才会显示
外连接:分为三种,左外连接,右外连接,全外连接
为了更好的观察到连接的区别,现在已经在部门表中提供了
内连接实现效果
对于数据表的连接操作,从实际使用来讲,各个数据库都是有所支持的,所以对于所有的数据库,进行表连接最好的做法是利用以下的语法完成:
使用左连接,希望所有的雇员信息都显示出来,即便他没有对应的部门
观察三:使用右外连接,将所有的部门信息都显示出来
内连接就是所有满足关联条件的数据出现,不满足的不出现,外连接就是指定一张数据表中的全部内容都显示,但是没有对应关系的其他表则不显示
第二步:加入领导信息,需要引入自身关联,而后消除笛卡尔积
第三步:发现EMP表(数据不完整),因为数据不满足于等值关联判断,所以想让信息显示完整,则必须使用外连接控制,
范例:实现自然连接(内连接)
3、使用自然连接是要求两张表的字段名称相同,但如果某一天两张表不相同了,或者两张表中有两组字段都是重名的,所以这种利用on子句指定关联条件,而利用USING子句设置关联字段,
范例:使用USING子句设置关联字段实现自然连接
4、外连接,语法:
范例:观察左外连接
范例:观察右外连接
观察全外连接
数据集合操作
数据集合:交集,差集,并集,补集。
每一次查询实际上都会返回数据集合,所以返回的结果上可以使用UNION UNION ALL MINUS INTSECT实现集合操作。
此时的语法为以下形式:
验证UNION
此时的查询结果已经连接在一起了,但是UNION的处理过程是取消重复元素
UNION ALL 操作(将所有结果合并)
例:验证INTERSECT操作(交集)
例:MINUS返回差集
需要注意的是,由于集合的操作最终是需要将若干个查询合并成一个查询,所以要求这若干个查询结果所返回的数据结构必须相同
例:INTERSECT求交集失败实例