1.左外联接
注:左联接的结果集包括 LEFT JOIN 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
求:所有部门和员工信息(没有员工的部门显示,员工部门为空不显示)
select d.deptno, dname, e.empno, e.job from dept d left join emp e on d.deptno = e.deptno;
2.右外联接
注:右外联接是左外联接的反向联接,将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
求:所有部门和员工信息(没有员工的部门不显示,员工部门为空显示)
select d.deptno, dname, e.empno, e.job from dept d right join emp e on d.deptno = e.deptno;
3.内联接
注:内联接要求左表和右表都有匹配行
求:所有部门和员工信息(没有员工的部门不显示,员工部门为空不显示)
select d.deptno, dname, e.empno, e.job from dept d inner join emp e on d.deptno = e.deptno;
4.全联接
注:全联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
求:所有部门和员工信息(没有员工的部门显示,员工部门为空显示)
select d.deptno, dname, e.empno, e.job from dept d full join emp e on d.deptno = e.deptno;
5.笛卡尔积
求:所有学生每门课程成绩
select stu.name,sco.name from student stu,score sco;