您的位置:首页 > 数据库 > Oracle

oracle操作语言细节

2012-04-14 20:55 190 查看
1.ORDER BY可以与Group by同时用,遵循先分组,在组里面进行排序。

2.有表复制:INSERT INTO [表1] SELECT * FROM [表2]; 将[表2]的数据复制进[表1],但表1的每一列数据类型都必须和表2一致。

3.无表复制:CREATE TABLE [表1] AS SELECT * FROM [表2];将表2复制到表1,要求:[表1]不存在就可以了。

4.只复制表结构:使用无表复制,只需查询的条件不成立(比如 WHERE 1=2),就不会查询出任何数据,从而复制一个表结构。

5.TRUNCATE删除命令慎用,语法:TRUNCATE TABLE [表名] TRUNCATE删除比DELETE快,但删除的数据无法恢复,DELETE命令删除后用日志恢复数据。

6.工作中运算符OR会被IN取代,理由,被OR修饰的列不能使用索引,降低查询效率,所以用In替代。

7.运算符NOT会被条件不成立的AND取代(比如:AND 1=2 ),理由同OR一样。

8.oracle中求余运算使用函数MOD(x,y).

9.escape关键字:例如:'0\%%'escape '\',解析,escape声明了字符[\]位转义字符,所以在'0\%%'中'\%'就代表着字符%,而不是oracle的占位符。escape只对有多重意义的字符进行转义。

10.集合运算:是查询效率最高的,包括:

(1).INTERSECT(交集):返回两个查询共有的记录。

     ey:SELECT deptno FROM dept INTERSECT SELECT deptno FROM emp;

(2).UNION ALL(并集):返回各个查询的多有记录,包括重复记录。

     ey:SELECT deptno FROM dept UNION ALL SELECT deptno FROM emp;

(3.)UNION(并集):发挥各个查询的所有记录,不包括重复记录。

     ey:SELECT deptno FROM dept UNION SELECT deptno FROM emp;

(4).MINUS(补集):返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录。

ey:SELECT deptno FROM dept MINUS SELECT deptno FROM emp;

11.在查询条件中NULL值用 IS NULL做条件,非NULL用NOT IS NULL条件。

12.DISTINCT消除重复行,用Group by 取代,DISTINCT不支持索引,降低了查询效率。

13.BWTEEN...AND...操作所指定的范围也包括边界。

14.查询时,左联、右联在oracle中可以使用(+)来进行联合查询(oracle特有)。

   ey:SELECT e.ename from emp e,dept d where e.deptno(+)=d.deptno;就是右联,列后面带有(+)意味着此列是补充列。

15.使用INSERT INTO ...SELECT......UNION多行插入时,是无序插入的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息