日期:2014-05-16  浏览次数:20577 次

4、Oracle表查询
1、Set timing on;设置显示查询所用时间
2、查看表结构:desc 表名;
3、取消重复行:select distinct 字段 from 表名;
4、如何处理null值:使用nvl函数处理。nvl(a,b)——若a为空,则值为b;若a不为空,则取值为a
5、连接字符串:||
   Select ename || 'is a ' || job from emp;
6、使用where语句:
7、在where中使用in:
8、使用逻辑操作符号
9、使用order by字句,默认从低到高排序;desc——从高到低;asc——从低到高(默认)
10、使用列的别名排序,别名需要使用“”
11、数据分组:max,min, avg, sum, count。
12、Group by---用于对查询的结果分组统计,having子句用于限制分组显示结果。
注意:
分组函数只能出现在选择列表、having、order by子句中;
如果在select语句中同时包含group by,having,order by,则三者顺序必须是:group by,having,order by。
在选择列中如果有列、表达式、分组函数,那么这些列和表达式必须有一个出现在group by子句中,否则会出错。
13、多表查询:笛卡儿积
规定:多表查询的条件是——至少不能少于表的个数-1

14、子查询(嵌套查询):
单行子查询:只返回一行查询结果
多列子查询:select * from 表1,表2 where (列1,列2)=(select 列1,列2 form ……)
*在from子句中使用子查询时,该子查询会被作为一个视图来对待,因此叫做内嵌视图,当在from字句中使用子查询时,必须给子查询指定别名。(不加as)

15、数据库在执行sql的顺序:oracle的解析器按照从右到左的顺序处理from子句中的表名,即:from子句中写在最后的表(基础表)被最先处理。所以一般要把选择记录条数最少的表作为基础表放在最右边。如果是3个以上表连接查询,那就需要选择交叉表(即:被其他表所引用的表)作为基础表。
16、分页查询:
Oracle分页一共有三种方式:
根据rowid来分——效率最高
按分析函数分row_number()——执行时间最长
rownum——oracle分配的行号(可变化,不固定),每次查询只能用一次,所以要用子查询来限制

&指定查询列,或排序时,只需修改最里层的子查询;
17、用查询结果创建新表:快捷的建表方法。
Create table 表名 (?,?,?,?) as select ?,?,?,? Form 表名;
18、合并查询:——集合操作更高效
Union:用于取得两个结果集的并集,当使用该操作符时,会自动去掉结果集中重复行;
Uinon all:与union相似,不会取消重复行,并且不会排序;
Intersect:取交集
Minus:取差集