Oracle杂记

1.group by 和 having:
解释:group by子句用于对查询结果进行分组统计,而having子句用于限制分组

显示结果。
例子:select deptno,avg(sal),max(sal) from emp group by deptno having

avg(sal) <2000;

多列分组是指在group by子句中使用两个或两个以上的列生成分组统计结果。当

进行多列分组时,会基于多个列的不同值生成数据统计结果。
例子:select deptno,job,avg(sal),max(sal) from emp group by deptno,job;

2.grouping sets:
为了显示多个分组的统计结果,可以使用grouping sets操作符并分组统计结果。
例子:select deptno,jib,avg(sal) from emp group by grouping sets

(deptno,job);

3.完全外连接,内连接,左连接和右连接
完全外连接是通过指定full[outer] join选项来实现。当使用完全外连接时,不

仅会返回连接条件的所有行,而且还会返回不满足连接条件的所有其他行
例子:select a.dname,b.ename from dept a full join emp b on

a.deptno=b.deptno and a.deptno=10;

使用(+)操作符:
注意事项:
(+)操作符只能出现在where子句中,不能与or和in操作符一起使用
(+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接
例子:select a.dname,b.ename from dept a, emp b where

a.deptno=b.deptno(+) and b.deptno(+)=10;(+操作符执行左外连接)

4.子查询:
子查询是指嵌入在其他SQL语句的SELECT语句,也成为嵌套查询。注意,当在DDL

语句中引用子查询时,可以带有order by 子句;但是当在where子句,set子句中

引用子查询时,不能带有order by 子句。分为:单行子查询,多行子查询

(in;any;all)和多列子查询
例子:select ename,job,sal,deptno from emp where job in (select

distinct job from emp where deptno=10);

5.循环语句:
(1)LOOP语句:
语法:
loop
statement1;
...
exit [when condition];
end loop;
当使用基本循环时,无论是否满足条件,语句至少会被执行一次。当condition为

true时,会退出循环,并执行end loop后的相应操作。

(2)while循环:
对于whlie循环来说,只有条件为true时,才会执行循环体内的语句。
语法为:
while condition loop
statement1;
statement2;
...
end loop;
当condition为true时,PL/SQL执行器会执行循环体内的语句;而当condition为

false或null时,会退出循环,并执行end loop后的语句。

(3)for循环:
语法:
for counter in [reverse]
lower_bound .. upper_bound loop
statement1;
statement2;
...
end loop;

counter是循环控制变量,并且该变量由oracle隐含定义,不需要显示定义;
lower_bound和upper_bound分别为对应于循环控制变量的下界值和上界值。默认

情况下,当使用for循环时,每次循环时循环控制变量会自动增一;如果指定

reverse选项,那么每次循环时循环控制变量会自动减一。

6.select into
select into语句用于检索单行数据。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值