orcal sql基础3 联接

连接 9i 之后的用法

 

1.   cross join 笛卡尔积形式的连接   相当于 select empno,ename,dname from emp , dept;

  没有太大的意义

2.   natural join 自然连接   

   <1>  从两张表中选出同名的列的值对应相等的所有行。

   <2>  如果两个表同名列的数据类型不同,则出错。

   <3>  不允许参照列上使用表名或者别名作为前缀。

3.using 子句  select empo,ename,deptno,dname from emp,join  dept using (deptno);

可以指明按照哪几个字段连接。  不用加上别名

4. on   select empo,ename,a.deptno,dname from emp a,join  b dept on (a.deptno=b.deptno);

必须加上别名

5. 内连接  inner join  只返回满足连接条件的数据

    外连接  outer join <1> left outer join     左外连接  除了返回满足条件的行以外,还返回左表

                                                                 中不满足条件的行        

                               <2> right outer join   右外联接。。。。。还返回返回右表中不满足的行

                               <3> full outer join      满外联接。。。。。还返回两表中不满足条件的所有行。

这几种都配合 using 或  on  使用

 

 

==================子查询注意事项===============

1  在查询是基于未知值时应考虑使用子查询

2  子查询必须包含在括号内

3  建议将子查询放在比较运算符的右侧,以增强可读性。

4 除非进行Top-N (取前几名?)分析,否则不要在子查询中使用order by 子句。

5对单行子查询使用单行运算符

6对多行子查询使用多行运算符

 

 

===============多行子查询==============

 

运算符                含义

in                      等于列表中的任何一个   只要等于in中的都查出来

any                   和子查询返回的任意一个值比较   大于结果集中最小的

all                     和子查询返回的所有值比较   大于结果集中最大的

 

 

=============Top-N分析=================

 

select  * from  emp   order by sal  desc  rownum <5;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(sql)