SQL连接查询(重点)

1.什么是连接查询?

从一张表中单独查询称为单独查询,从多张表中联合起来跨表查询数据被称为连接查询

2.连接查询的分类?

根据语法的年代分类:SQL99(重点)、SQL92

根据表的连接方式分类:

内连接:等值连接、非等值连接、自连接

外连接:左外连接(左连接)、右外连接(右连接)

全连接

3.当两张表进行连接查询的时候,没有任何条件的限制会发生什么状况?

最终查询结果的条数,是两张表条数的乘积,这种现象被称为:笛卡尔积现象

4.怎么避免笛卡尔积现象?

连接时附加条件,满足这个条件的记录被筛选出来

案例:查询每个员工所在部门名称,显示部门名和员工名?

select emp.ename,dept.dname from emp,dept where emp.deptno = dept.deptno;

//表起别名(重要,效率问题)

select e.ename,d.dname from emp e,dept d where e.deptno = d.deptno;//SQL92语法

SQL92的缺点:结构不清晰,表的连接条件和后期进一步进行筛选的条件都放在了where的后面

select e.ename,d.dname from emp e join dept d on e.deptno = d.deptno;//SQL99语法

SQL99的优点:表连接的条件是相互独立的,连接之后如需要进一步筛选,再往后继续添加where

思考:最终查询结果的条数是14条,但是匹配的次数并没有减少,只不过进行了4选1

5.内连接(两张表没有主次关系,是平等的)

(1).内连接等值连接:

select e.ename,d.dname from emp e inner join dept d on e.deptno = d.deptno;//inner可以省略

(2).内连接非等值连接:

案例·:找出每个员工的薪资等级,要求显示员工名、薪资、薪资等级?

select e.ename,e.sal,s.grade from emp e inner join salgrade s on e.sal between s.losal and s.hisal order by grade desc;

(3).内连接自连接:

案例:查询员工的上级领导,要求显示对应的员工名和领导名?

 select  a.ename as'员工名',b.ename as '领导名' from emp a join emp b on b.empno = a.mgr;

技巧:两张表看称一张表

6.外连接(外连接中,两张表产生了主次关系)

select e.ename,d.dname from dept d left outer join emp e on e.deptno = d.deptno;//左外连接

select e.ename,d.dname from emp e right outer join dept d on e.deptno = d.deptno;//右外连接

right代表将关键字右边的数据看成主表,主要是为了将这张表的数据全部查询出来,捎带关联查询左边的表,outer表示外连接,可以省略

注意:外连接的查询结果条数一定>=外连接的查询结果条数

7.多张表怎么连接?

select ...from a join b on a和b的连接条件 join c on a和c的连接条件 join d on a和d连接条件;

案例:找出每个部门员工的工资等级和部门名称,要求显示部门名、薪资、员工名

 select a.ename,b.dname,a.sal,leader.ename,c.grade from emp a join dept b on a.deptno = b.deptno join salgrade c on a.sal between c.losal and c.hisal left join emp leader on a.mgr = leader.empno;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值