oracle 创建视图及CASE WHEN嵌套层级使用

oracle 创建视图及CASE WHEN层级使用

一、创建视图语句及赋予权限

/*
CREATE [OR REPLACE] VIEW view
[(alias[, alias]…)]
AS subquery
[WITH READ ONLY];

*/
–如果普通用户第一次创建视图,提示没有权限,要使用管理员去修改权限
grant create view to scott;

–创建视图
create view v_emp as select * from emp where deptno = 30;
–视图的使用
select * from v_emp;
–向视图中添加数据,执行成功之后,需要提交事务,绿色表示提交事务,让数据生效,红色表示回滚事务,让数据恢复原状态
insert into v_emp(empno,ename) values(1111,‘zhangsan’);
select * from emp;
–如果定义的视图是非只读视图的话,可以通过视图向表中插入数据,如果是只读视图,则不可以插入数据
create view v_emp2 as select * from emp with read only;
select * from v_emp2;
–只读视图只提供查询的需求,无法进行增删改操作
insert into v_emp2(empno,ename) values(1234,‘lisi’);
–删除视图
drop view v_emp2;

二、Case When使用
1、简单Case函数 :

格式

case 列名
when 条件值1 then 选项1
when 条件值2 then 选项2…
else 默认值 end

使用

select
case level
when ‘1’ then ‘1111’
when ‘2’ then ‘2222’
when ‘3’ then ‘333’
else ‘9999’
end
from 等级表

Case搜索函数

复杂:
case
when 列名=条件值1 then 选项1
when 列名=条件值2 then 选项2…
else 默认值 end

使用

update 等级表
set wage =
case
when level = ‘1’ then wage1.1
when level = ‘2’ then wage
1.2
when level = ‘3’ then wage1.3
else wage
1.05
end
where
user=1

嵌套使用

select
case level
when ‘1’ then
case
when wage=1 then ‘1111.1’
when wage=2 then ‘1111.2’
when wage=3 then ‘1111.3’
else ‘1111’
end
when ‘2’ then ‘2222’
when ‘3’ then ‘3333’
else ‘9999’
end
from 等级表

工作中使用CASE WHEN 进行了语句转换:

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值