您的位置:首页 > 数据库 > Oracle

Oracle数据库学习——数据操纵语言(DML)之连接查询

2013-09-10 20:56 169 查看

3.数据操纵语言(DML)

3.1 连接查询

—(1)内连接

—(2)外连接
左外连接(LEFT JOIN)  
返回左边表的所有行
右外连接(RIGHT JOIN)
返回右边表的所有行,实现
全外连接(FULL JOIN)  
返回两个表的所有数据

交叉连接(CROSS JOIN)  返回连接表中所有数据行的笛卡尔积

(1)内连接:
SQL> --查询所有员工及其所在的部门信息

SQL> select e.ename,d.dname

     from emp e join dept d

     on e.deptno = d.deptno;

解释:
这条查询语句用到了表的别名,这里给emp表和dept表都起了别名e和d,主要是说要查询出员工的姓名和员工相对应所在的部门名称,这里还用到了表的连接‘join’,即emp表连接dept表,条件是‘e.deptno = d.deptno’。





SQL> --查询所有的管理者

SQL> select e1.ename,e2.ename

     from emp e1,emp e2

     where e1.mgr = e2.empno;

解释:
这里用到了自连接查询,即根据自身表的关系来查询,这里将emp表用了两次别名e1和e2,查找出e1中的与员工的管理者的编号 = e2中的员工编号,即查询出所有员工的对应管理者。





(2)左外连接:
SQL> --查询所有部门及其部门下的员工(没有与员工的部门也要查询出来)

SQL> select d.dname,e.ename

     from dept d left joinemp e

     on d.deptno = e.deptno;

解释:
左外连接可以简单的理解为将左边表的所有信息要显示出来,而右边表的显示与否则根据on后的条件来定。






SQL> --查询所有部门编号大于20及其部门下的员工

SQL> select d.*,e.ename

     from dept d left join emp e

     on d.deptno = e.deptno

     where d.deptno > 20;






(3)全外连接:显示表的所有信息。

——SELECT e.empno,e.ename,d.dname FROM EMP e FULL JOIN dept d
ON e.deptno=d.deptno








内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle 数据 数据库