--组函数
max/min/avg/sum/count max()用于字符型时按照字母表排序
decode(表达式,if1,then1,if2,then2,....,默认值) 多值判断
nvl()
rownum 只从1开始,有特殊需求请用子查询
cast(原数据 as 新类型数据)
between xx and xx
in()
like % _ escape '转义字符'指定转义字符
exists 存在性判断
all() 效果类似 max()
some() any() 效果类似min()
--分析函数
select 列1,列2,rank() over(order by 列x)position from 表名
over(order by 列x)提供一个以列x为标准的排序窗口
dense_rank() 返回的排名不像rank()那样有并列
row_number()和rownum类似,但不像rownum那样可以使用索引
聚合函数(列...) over(partition by 列XX) 或者 over(partition by 列XX order by 列XX) --给结果集分组
和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,没有多行对单行的问题
over(order by 列名 rows between 位移量 preceding and 位移量 following)
over(order by 列名 range between 列的差值 preceding and 列的差值 following)
preceding向前追溯,following向后追溯
与partition by 一起常用的分析函数
first_value() 已排序集合中中第一条记录相关的信息
last_value() 最后一条
lead(列名或列的表达式,向上的位移,如没有返回的默认值)
lag(列名或列的表达式,向下的位移,如没有返回的默认值)
--条件语句
if 条件 then xxx;
elseif 条件 then xxx;
else xxx;
end if;
case 变量/表达式
when 值1 then xxx;
when 值2 then xxx;
else xxx;
end case;
--循环语句
loop
XXXXX
[exit when 跳出条件;]
end loop;
while 条件判断 loop
XXXXX;
end loop;
for xxin 起始值..结束值 loop
xxx
end loop;
--视图
1、封装查询
2、灵活的控制安全性
create or replace view 视图名 as 查询语句 [with read only 只读视图]
也可通过update/insert/delete视图来修改数据,要注意列非空等约束
--创建基于不存在的数据表的视图
create or replace force view 视图名 as 查询语句
where 后面加with check option 创建视图约束,仅对insert和update有效
--创建基于不存在的数据表的视图
create or replace force view 视图名 as 查询语句
where 后面加with check option 创建视图约束,仅对insert和update有效
--对象
create or replace type 对象名 as object (
属性名 类型,
。。。。
member function 函数名,
menber procedure 过程名,
。。。。
);
create table 表名 of 对象名 利用对象类型来定义表结构
--插入数据
declare e 对象名
begin
e := 对象名(字段值...);
insert into 表名 values(e);
end;
注意,普通数据表是不能直接插入对象的,只有利用对象类型创建的数据表才可以插入对象
使用value()把id=1的一条数据实例化为一个对象,该对象的id+1后插入数据表
declare e 对象名
begin
select value(t) into e from 表名 t where e.id = 1;
e.id := e.id + 1;
insert into 表名 va
insert into 表名 values(e);
end;
--对象视图
create or replace view 视图名 of 对象名
with object oid(列名) 为对象视图指定对象标识符
as
select ..... from 表名
select view_name, view_type from user_views
where view_name = '视图名'
--关系视图插入数据
insert into 视图名 values(属性值);
--对象视图插入数据
insert into 视图名 values( 对象名(属性值...) );
--物化视图
提高数据库性能,根据查询定义将获得的结果集合存储到附属的数据表中,查询物化视图中的数据是oracel直接在附属表中获取数据
create materialized view 视图名 as 查询语句
create materialized view 视图名 build deffered as 查询语句 创建物化视图时延迟加载查询结果数据
alter materialized viev 视图名 enable/disable query rewrite; 启用/关闭查询重写,数据查询时数据源自动指向匹配的物化视图
oracle pl/sql学习笔记(二) 数据处理函数与对象
猜你喜欢
转载自cj2047.iteye.com/blog/1915503
今日推荐
周排行