oracle总结之一

1、  当条件中使用聚合函数时,必须使用having而不能使用where

Select avg(sal), max(sal),depno from emp group by depno having avg(sal)>2000;

同时出现group byorder byhaving时的使用顺序为:group by…having…order by…

2、  多列子查询

Select  *  from emp where (depno,job)=

   (Select depno,job from emp where ename=’SMITH’);

3、  视图

视图定义:

create [or replacement] view

    [模式名.] <视图名> [(<列名>{,<列名>})] as <查询说明> [with check option];

 当指明了[with check option]时,更新该视图数据时,必须满足查询说明中的条件;如果不带该选项,则以后更新数据时不做查询说明的检查。

  create view factorycreator as

select * from factory where factory_name=’beijing’ with check option;

删除视图

   Drop view  [模式名.] <视图名> [RESTRICT|CASCADE];

CASCADE:强制删除视图,并在删除试图前删除相关的依赖视图。RESTRICT:存在依赖视图则不删除该视图。

查询视图:虽然是虚表,但操作和基本表的查询雷同有单独查询和联合查询(略)。

视图更新

    对它的更新操作最终转换为基表更新,那些不能转化为基本表的更新操作的视图更新是非法的。

DM系统规定下列情形之一则不允许更新视图:

1.       视图由两个以上基表导出;2.视图列是集函数或者视图的定义的查询说明带有group by having子句;3.视图建立在不允许更新的视图上。

视图优势:多角度观察同一数据;简化用户操作;数据安全;利于数据库重构。

4、  嵌入式SQL

嵌入式sql相对于普通sql就是能使用变量,可以嵌入到宿主语言中执行。变量可以分宿主变量、输入输出变量和指示符变量。

嵌入式SQL语法:exec sql <SQL语句>

输入变量:

exec sql begin declare section;

{

   <宿主变量定义语句>

}

exec sql end declare;

<宿主变量定义语句>::=<宿主变量名><宿主变量数据类型>

eg:

   exec sql begin declare section;

   INT number;

   CHAR stringc[20];

exec sql end declare;

指示变量:为了能够处理NULL,在主语言中引入了指示符变量,是跟在宿主变量后的一个数字。

exec sql begin declare section;

   short str_indicator;

exec sql begin declar section

   str_indicator=-1;

exec sql insert into T1 values(:number,:string: str_indicator);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值