连接 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;