SQL语句之多表连接查询


1.内连接

select 字段名 from 表1 inner join 表2 on 连接条件   --其中inner可以省略,可拓展到3张表以上

示例:

要求:查询员工表和部门表中员工的姓名

select sname from employee join department on employee.id = department.id

可以为表提供别名,如

select sname from employee e join department d on e.id = d.id

 

2.自连接

自连接是一种特殊的内连接,它是指相互连接的表在物理上是同一张表,但在逻辑上将其看成两张表。要让物理上的一张表在逻辑上成为两张表,必须通过为表取别名的方式实现。

示例:

要求:查询与张三在同一个系学习的学生的姓名和所在系,结果中不包括张三。

select s2.name,s2.dept from student s1 join student s2

on s1.dept = s2.dept           --是同一系的学生

where s1.name = '张三'       --s1表作为查询条件表

and s2.name != '张三'          --s2表作为结果表,并从中去掉 '张三'

要求:查询与“操作系统”学分相同的课程名和学分

select c1.name,c1.credit from course c1 join course s2

on c1.credit = c2.credit                  --学分相同

where c2.name = '操作系统'          --c2作为查询条件表

 

3.外连接

在内连接中,只有满足连接条件的元组才能作为结果输出,但有时我们希望输出那些不满足连接条件的元组信息,比如查看全部课程的被选修情况,包括有学生选的课程和没有学生选的课程。如果用内连接实现,则只能找到有学生选的课程,因为内连接的结果首先是要满足连接条件。

外连接是只限制一张表中的数据必须满足连接条件,而另一张表中的数据可以不满足连接条件。

语句:

from 表1 left | right join 表2 on 连接条件

left即为左连接,其含义是限制表2中的数据必须满足连接条件,而不管表1中的数据是否满足连接条件;

right即为右连接,其含义是限制表1中的数据必须满足连接条件,而不管表2中的数据是否满足连接条件;

简记:指向哪一个,哪一个就没有限制。left 左 表1没有限制,right 右 表2没有限制。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM