实验18:表的连接查询该实验的目的是掌握基本的联合查询.表的连接我们要从多张表中要得到信息,就得以一定的条件将表连接在一起查询。
相关阅读:Oracle 10g数据库基础之基本查询语句-上 http://www.linuxidc.com/Linux/2012-05/60423.htm
Oracle 10g数据库基础之基本查询语句-中-函数 http://www.linuxidc.com/Linux/2012-05/60734.htm
Oracle 10g数据库基础之基本查询语句-下-连接&子查询 http://www.linuxidc.com/Linux/2012-05/60735.htmCartesian(笛卡儿)连接当多张表在一起查询时,没有给定正确的连接条件,结果是第一张表的所有行和第二张表的所有行进行矩阵相乘,得到n*m行的结果集。一般来说笛卡儿连接不是我们需要的结果。但表如果有一行的情况下,结果有可能正确。SQL> select ename,dname from emp,dept;ENAME DNAME---------- --------------SMITH ACCOUNTINGALLEN ACCOUNTING……..SMITH RESEARCHALLEN RESEARCH……..SMITH SALESALLEN SALES……..SMITH OPERATIONSALLEN OPERATIONS……..56 rows selectedSQL>结果为每个员工在每个部门上了一次班,4*14=56,这并不是我们想得到的结果。要避免笛卡儿连接一定要给定一个正确的连接条件。等值连接在连接中给定一个相等的连接条件。SQL> select ename,dname from emp,dept where emp.deptno=dept.deptno;当列的名称在两张表内重复的时候,要加表的前缀来区分,避免不明确的定义。表的别名1。便于书写2。将同名的表区分3。一旦定义了别名,表的本名就无效4。只在该语句内有效5。定义方式为表名后紧跟别名,用空各间隔。SQL> select ename,dname from emp e,dept d where e.deptno=d.deptno;SQL99的书写方式select ename,dname from emp e join dept d on (e.deptno=d.deptno);效率是相同的,SQL99是国标列的别名,为了区分相同的列的名称,这是别名的本质。SQL> select ename,dname,e.deptno,d.deptnofrom emp e,dept dwhere e.deptno=d.deptno;上述显示有两个列名称都叫deptno,我们无法区分。SQL> select ename,dname,e.deptno "员工表",d.deptno "部门表"from emp e,dept dwhere e.deptno=d.deptno;
Oracle 10g数据库基础之基本查询语句-中-函数Oracle delete数据后恢复办法示例相关资讯 oracle数据库教程
- Oracle raw数据类型介绍 (01/29/2013 10:05:53)
- 监听器注册与ORA-12514 错误分析 (11/13/2012 14:30:08)
- Oracle SQL的cursor理解 (11/13/2012 14:16:17)
| - Oracle 如何强制刷新Buffer Cache (01/29/2013 10:02:46)
- dblink致Oracle库的SCN变成两库的 (11/13/2012 14:24:41)
- Linux操作系统下完全删除Oracle数 (11/13/2012 08:25:52)
|
本文评论 查看全部评论 (0)