数据库—复合查询(交叉连接和内连接)

雇员表在这里插入图片描述
部门表
在这里插入图片描述

多表连接查询

1.交叉连接

交叉连接是不带谓词的连接,即两个表的笛卡尔积是量表中元组的交叉乘积。这种连接会产生一些没有意义的元组,因此在实际应用中较少使用。
例: SQL>SELECT * FROM emp, dept;

2.内连接

内连接是根据指定的连接条件进行连接查询,只有满足连接条件的数据才会出现在结果集中。内连接实际上就是结果集中只包含从交叉连接的全集中筛选出来的满足连接条件的记录,可分为相等内连接、非等内连接和自连接。

1)相等内连接

使用等号(=)指定连接条件的连接查询,用于比较的不同表中列的类型必须是匹配的,如果连接的表中有相同的列,则需要在列名前加表名。
①使用WHERE关键字的连接查询
由于交叉连接得到的查询结果集中包含大量的冗余信息,为此,可以通过WHERE子句过滤掉无意义的信息。
例:显示工资大于3000的雇员的名称、工资和所在的部门名称。
SELECT ename,sal,dname FROM emp,deptWHERE emp.deptno=dept.deptno AND sal>3000;
在这里插入图片描述

②使用JOIN关键字的连接查询
一般使用INNER JOIN关键字来指导内连接,INNER可以省略。使用JOIN关键字的内连接与使用WHERE子句的连接查询等价,即查询结果中只包含两个表中相匹配的行。在ON后面给出的连接条件使用等号(=)运算符比较被连接的两张表的公共字段,其查询结果中只包含两表的公共字段值相等的行,列可以是两表中任意列。
例:显示雇员的名称和所在的部门的编号和名称。
SELECT ename,emp.deptno,dname FROM emp JOIN dept ON emp.deptno=dept.deptno;

在这里插入图片描述

2)非等内连接

非等内连接是在连接条件中使用除“=”运算符以外的其它运算符比较被连接的公共字段。
例:显示雇员名称,工资和所属工资等级
SELECT e.ename,e.sal,s.grade FROM emp e,salgrade s WHERE e.sal BETWEEN s.losal AND s.hisal;
在这里插入图片描述

3)自连接

自连接就是一个表,同本身进行连接。对于自连接可以想象存在两个相同的表(表和表的副本),可以通过不同的别名区别两个相同的表。
例:显示雇员名称和雇员的经理名称。
SELECT worker.ename||’的经理是’||manager.ename AS 雇员经理FROM emp worker,emp manager WHERE worker.mgr=manager.empno;
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值