ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 读书笔记之---精通oracle10g.plsql

读书笔记之---精通oracle10g.plsql

原创 Linux操作系统 作者:hy_heying1229 时间:2008-08-13 15:02:12 0 删除 编辑

1、SQL语言分类

  【1】数据查询语言(select)

  【2】数据操作语言(data manipulation language DML)用于改变数据库数据。INSERT 、UPDATE、 DELETE

  【3】事物控制语言(transaction control language TCL)用于维护数据一致性。COMMIT、ROLLBACK、SAVEPOINT

  【4】数据定义语言(data definition language DDL)用于建立、修改、删除数据库对象CREATE、DROP、ALTER、TRUNCATE

  【5】数据控制语言(data control language DCL)用于执行权限得授予和回收 GRANT、REVOKE

当使用dbms_output包时必须将环境变量serveroutput设置为ON。

 set serveroutput on

调用存储过程 execute 或 call 命令

        insert  /*+APPEND+*/     into a select * from b;

               /*+APPEND+*/     表示直接装载方式,当装载大批数据时速度较快

执行ALL /FIRST 实现多表插入,与ALL的区别,FIRST在先前数据满足条件被插入表后,不再插入其他表

insert  all/first

where a=1 then into aa

where a=2 then into bb

where b=3 then into cc

else into dd

select * from a;

--GROUP BY 中使用ROLLUP,可以生成统计数据及横向小计

select t.telno,t.callno,AVG(t.suessno) from aa t
GROUP BY ROLLUP (t.telno,t.callno);

TELNO CALLNO AVG(T.SUESSNO)        
1     123      1000                 
1     342      1250                 
1     1443    2000                 
1                  1416.66666666667     
2     424      3000                 
2     4345    1470                 
2     5254    2500                 
2                 2323.33333333333     
3     12357    450                 
3     123213  12450                
3                     6450                 
                      3015    

--GROUP BY 中使用CUBE,可以生成数据统计、横向小计、纵向小计

select t.telno,t.callno,AVG(t.suessno) from aa t
GROUP BY CUBE (t.telno,t.callno);

TELNO CALLNO AVG(T.SUESSNO)
                     3015
      123        1000
      342        1250
      424        3000
      1443        2000
      4345        1470
      5254        2500
      12357      450
      123213      12450
1                   1416.66666666667
1      123       1000
1      342       1250
1      1443       2000
2                 2323.33333333333
2      424       3000
2      4345       1470
2      5254       2500
3                   6450
3      12357     450
3      123213     12450

--GROUP BY 中使用GROUPING SETS,即显示telno平均工资,也能显示callno平均工资

select t.telno,t.callno,AVG(t.suessno) from aa t
GROUP BY GROUPING SETS (t.telno,t.callno);

TELNO CALLNO AVG(T.SUESSNO)
1                 1416.66666666667
2                 2323.33333333333
3                6450
     123      1000
     123213 12450
     12357   450
     1443   2000
     342     1250
     424     3000
     4345   1470
     5254   2500

在使用(+)操作符执行外连接时,应注意以下事项:

1、(+)操作符只能出现在WHERE子句中,不能与OUTER JOIN 语法同时使用

2、当使用(+)操作符执行外连接时,如在WHERE子句包含多个条件,则必须在所有条件中都包含(+)

3、(+)操作符只适用于列,不能用在表达式上

4、(+)操作符不能与OR和IN操作符一起使用

5、(+)操作符只能用于实现左外连接和右外连接,不能实现完全外连接

 

WITH 的用法

  对于多少使用相同子查询的复杂查询语句,通过WITH子句可以给予子查询指定一个名称,并且在一条语句中可以完成所有任务,避免使用临时表

WITH SUMMARY AS(

 SELECT DNAME,SUM(SAL) AS DEPT_TOTAL FROM DMPT

 GROUP BY DNAME)

SELECT DNAME,DEPT_TOTAL  FROM SUMMARY WHERE DEPT_TOTAL>

(SELECT SUM(DEPT_TOTAL)*1/3 FROM SUMMARY);

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7711639/viewspace-426825/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2007-11-28

  • 博文量
    4
  • 访问量
    4206