为了保证数据有效、合理的保存,往往把数据分散在不同表中,通过建立表与表的关系保证数据间的关联性。所谓多表查询就是一次查询从多张表中同时取数据,加上有效过滤条件获取所需数据。
语法
迪卡尔积效应
所谓迪卡尔积是指参与查询的各张表中记录无条件相互组合,例如从二张表查询(EMP表12条记录,DEPT表4条记录)数据,最终会产生12*4条记录。在生产中要使用合理的条件消除此效应,N张表参与查询至少要N-1个过滤条件。
消除迪卡尔积效应
在建表应该设计好表与表之间的关系并指定好关联的字段,以便后续的查询。EMP表中deptno列与DEPT表的deptno相对应,在同时查询这二张表时,就好使用它们消除迪卡尔积效应。
例:查询员工信息和他所在的部门名称
我们只增加了一个过滤条件就迪卡尔积效应,准确查询出了员工所在的部门信息,查询出来的记录也不再是12*4行了。
再看个三张表的多表查询
例:查询员工的基本信息、部门名称、工资等级
综合练习
查询除20部门以外、且工资等级大于2级的员工信息和部门名称
思考
查询员工的基本信息和他的直接上级领导姓名。(提示:MGR列是员工上级领导的编号)
今天就聊到这里,有问题给小傅老师留言吧:-)