Oracle数据库学习5之查询进阶:连接查询
来源:互联网 发布:office软件安装失败 编辑:程序博客网 时间:2024/05/16 14:32
连接查询:内连接(inner)、外连接(outer join)
连接(Join)的基本结构: select ... from table1 t1 join table2 t2 on ti.id = t2.id;
join前后是两个需要连接的表,on表示的是连接的条件。
传统的写法是不使用join关键字,使用where表示条件:
select ... from table1 t1, table2 t2 where ti.id = t2.id;
一般是两个表进行连接,三个表的连接语法稍有不同:
普通写法:select ... from a join b on a.id = b.id join c on b.id = c.id;
传统写法:select ... from a, b, c where a.id = b.id and b.id = c.id;
连接的分类:
1. 对等连接
上面的就是一种对等连接,即默认的join方式。
特点是只显示连接的表中存在而且相等的记录。其它的记录均不显示。
传统的写法也是一种对等连接,只显示匹配条件的记录。
2. 左/右连接
有时需要将进行连接的其中一个表作为基准显示全部的数据,根据连接条件在其它表中可能会出现无法匹配的数据,此时就用空值来代替。
比如:显示员工信息时,有的员工可能还没有分配到某个具体的部门(新进员工),其所属部门一项就没有数据,但是员工仍然需要显示,即员工表数据需要全部显示。
具体语法:
select ... from table1 t1 left join table2 t2 on ti.id = t2.id; --左连接
或
select ... from table1 t1 right join table2 t2 on ti.id = t2.id; --右连接
左和右的区别:
简单地说左(右)连接就是指join的左(右)边是基准表,全部数据都要显示,根据连接条件无法进行连接的记录就用空值代替。
比如:select e.empno, e.ename, d.dname from emp e left join dept d on e.deptno = d.deptno;
还没有分配到某个具体的部门的员工的e.deptno肯定是没有值的,无法满足“e.deptno = d.deptno”的条件,
但由于是左连接,左边的员工表的数据必然会显示,这时该员工的部门名称就是空值。
若是right join ... on,就表示部门表的数据全部显示,员工表中无法连接的数据就是空值代替,
意思就是说这个部门还没有员工,因为在员工表中没有一条记录的deptno与该部门的deptno相匹配(可能是 刚刚成立的新部门)
3. 全连接:简单说就是左右连接的全部表示,根据连接条件在任意一方表中出现无法匹配的情况,不满足条件的部分均用空值代替。
具体语法:
select ... from table1 t1 full join table2 t2 on ti.id = t2.id;
4.联合查询:union可将两个或两个以上的select语句的查询结果集合并成一个结果集显示,即执行联合查询
具体语法:
select语句 union [all] select语句
0 0
- Oracle数据库学习5之查询进阶:连接查询
- Oracle数据库之SQL连接查询
- 【Oracle学习】之 表的连接查询
- Oracle数据库学习4之查询语句
- Oracle数据库学习——数据操纵语言(DML)之连接查询
- ORACLE复杂查询之连接查询
- 数据库查询之(Ⅲ)连接查询
- 数据库之联合查询和连接查询
- Oracle数据库笔记之各种连接及合并查询
- 数据库学习6-连接查询
- oracle之关连接查询
- java连接oracle之查询
- orcale数据库之连接查询
- Oracle数据库学习---查询语句
- Oracle数据库学习---子查询
- Oracle数据库之分页查询
- oracle数据库初步之查询
- Oracle数据库之基本查询
- .net mvc利用NPOI导入导出excel
- objc.io 2.2 Common Background Practices(转)
- URI 、URL、URN 简单理解
- Xcode之修改模板
- AF_UNSPEC
- Oracle数据库学习5之查询进阶:连接查询
- 机器学习-CrossValidation交叉验证Python实现
- 继承
- 【BZOJ 1013】 [JSOI2008]球形空间产生器sphere 高斯消元
- HTML5 canvas绘图基本使用方法
- (QT4.8.6)QtWebKit笔记---The script on this page appears to have a problem
- struct、字节序和枚举
- 如何在android studio直接用git 命令
- SQL Server 发展简史