内连接查询(inner join)
内连接查询:列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。
语法:
select 列名1,.. from 表1 [inner] join 表2on 条件where 条件;
内连接分2种:
(1)等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
查询出每一位雇员所有信息及所在部门信息
select * fromemp e join dept d on e.deptno=d.deptno
(2)不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
select * from emp e inner join dept d one.deptno>d.deptno;
自然连接查询(natural join)
自然连接是在笛卡尔积R×S中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系。
语法:
select 列名1,.. from 表1 natural join 表2 where 条件;
示例:
查询出每一位雇员所有信息及所在部门信息
select *from emp natural join dept;
自连接查询
如果在一个连接查询中,涉及到的两个表都是同一个表,这种查询称为自连接查询。
示例:
查询所有员工名字及其上级的名字。
select e1.ename,e2.ename manager from emp e1,emp e2 wheree1.mgr=e2.empno;
查询'FORD'的上级信息
select e2.* from emp e1,emp e2 where e1.mgr=e2.empno ande1.ename=’FORD’;
外连接查询(outer join)
外连接指返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接或左连接))、右表(右外连接或右连接)或两个边接表(全外连接)中的所有数据行。
外连接分为三种:左外连接、右外连接和完全外连接。
下面示例以该表为基础:
左外连接(leftjoin)
概念:返回包括左表中的所有记录和右表中联结字段相等的记录。
语法:
select 列名1,列名2,.. from 表1 left[outer] join 表2 on 条件;
或者
select列名1,列名2,.. from 表1,表2 where 条件1=条件2(+);
示例:
查询所有人的成绩,如果没有成绩,也要显示该人的姓名和id号,成绩显示为空
select stu.id,name,grade from stu left join examon stu.id=exam.id;
select stu.id,name,grade from stu,exam wherestu.id=exam.id(+);
右外连接(rightjoin)
概念:返回包括右表中的所有记录和左表中联结字段相等的记录;
语法:
select 列名1,列名2,.. from 表1 right [outer]join 表2 on 条件;
或者
select列名1,列名2,.. from 表1,表2 where 条件1(+)=条件2;
示例:
查询所有成绩,如果没有名字匹配,显示空。
select stu.id,name,grade from stu right join examon stu.id=exam.id;
select stu.id,name,grade from stu,exam wherestu.id(+)=exam.id;
完全外连接(fulljoin)
概念:返回查询结果等于左外连接和右外连接的和。
语法:
select 列名1,列名2,.. from 表1 full [outer]join 表2 on 条件;
示例:
查询所有成绩,如果没有名字匹配,显示空。
select stu.id,name,grade from stu full join examon stu.id=exam.id;