Oarcle 之连接查询
连接查询:连接查询是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等。通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。 在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,然后通过连接进行查询。(来自360百科)
如何进行表的连接查询
两种方式:1. sql 1992 和 2. sql 1999
1.1992语法
select table .column,table2.column
from table1 .table2
where table 1.column1=table2.column2;
*where 后跟表的连接条件
连接类型:
1.笛卡尔积(表X表)
select * from emp,dept;
2.等值连接(列=列)
查询员工的薪水等级
select e.name,d.dname from emp e ,dept d where e.deptno=d.deptno
3.非等级连接(列!=列)
查询员工的薪水等级
select e.ename ,s.grade from emp e, salgrade s where e.sal between s.losal and s.hisal;
4.自连接(表自己连接自己)
查询员工上司的姓名:以“XXX的上司是xxx”方式显示
select e1.ename ||'的上司是'||e2.ename from emp e1,emp e2 where e1.mgr =e2.empno;
5.外连接(在满足一张表的内容都显示的基础上,连接另外以张表,如果连接匹配则正常显示,连接不匹配,另外一张表补null)
select e.eneam,d.dname from emp e, dept d where e.deptno = d.deptno;
“(+)” 在右边,我们称这次查询为“左外连接查询”
“(+)” 在左边,我们成这次查询为“右外连接查询”
“(+)” 在等号哪一边,哪张表就补null
注*:因为会补null,所以不同的左右外连接会出现两个表的行数不相等,多的行数会用null来填充不匹配的数据