MySQL跨表查询

  • 笛卡儿积现象:若两张表进行连接查询的时候没有任何条件限制,最终的查询结果总数是两张表记录的乘积,该现象称为笛卡儿积现象.

  • 跨表查询 : 

  1.  年代分类:  SQL92  SQL99   

  2. 连接方式分类:  内连接:等值连接   非等值连接   自连接

  • 外连接   左外连接/左连接    右外连接/右连接

  • 全连接

  • 接下来我们就一个一个来说:

SQL92 :select ename,dname from emp as e,dept as d where e.deptno=d.deptno; 

这是SQL92多表查询的一个语法

SQL99(掌握): select  e.ename,d.dname from emp e join dept d on e.deptno=d.deptno

where  数据过滤条件;  这是SQL99多表查询的一个语法(表取别名可以省略as,字段一般取别名不省略as,on后跟表的连接条件).

等值连接: select  e.ename,d.dname from emp e inner join dept d on e.deptno=d.deptno(inner往往会省略掉,加上可增强程序的可读性)

非等值连接:select e.ename,e.sal,s.grade from emp e inner join salgrade s on e.sal between s.losal and s.hisal 

自连接:把一张表看成两张表使用  select a.ename,b.ename as leadername from emp a join emp b  on a.mgr=b.empno

外连接查询结果条数>=内连接的查询结果条数

右连接/右外连接:让右边这个表无条件的显示出来,左边这个表没有相匹配的,自动补上NULL.

省略了一个关键字:outer

select e.ename,d.dname from emp e right  outer join dept d on e.deptno=d.deptno;

同理,左连接/左外连接:

select a.ename,b.ename as leadername from emp a left outer join emp b  on a.mgr=b.empno

区分内外连接的关键字:left或right

 

 

 

 

 

 

                        

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值