数据库练习1

--空值跟任何数据进行运算结果都是NULL
--NVL(x,y) :如果x为空返回y,否则返回x

如果是比较级运算的话可以不将其转换,因为空值与其比较时本身不成立

emp 员工表(empno 员工编号,ename 员工姓名,job 职位,mgr 上级编号,hiredate 入职日期,sal 工资,comm 奖金,deptno 部门编号)

把SMITH的奖金加上1000

update emp set comm=comm+1000 where ename='smith'

如果使用这个代码,你会发现运行后Smith的奖金并没有增加

涉及到空值的计算时,我们应该使用nvl函数将空值转换为0,再进行计算,否则空值和任何数进行加减乘除得到的结果都为空

update emp set comm=nvl(comm,0)+1000 where ename='SMITH';

此外还需注意一个问题,当我用where寻找SMITH时如果使用得是小写,也发现数据并未更改。

2.把没有奖金的员工的奖金加上1000

update emp set comm=nvl(comm,0)+1000 where nvl(comm,0)=0;
update emp set comm=nvl(comm,0)+1000 where comm is null;

3.把工资小于5000的员工的工资加上500,把工资在5000~8000之间的员工的工资加上300,大于8000的员工的工资不变(要求一条SQL语句)

update emp set sal=(
       case
           when sal<5000 then sal + 500  -- sal = sal + 500
           when sal>=5000 and sal<=8000 then sal + 300  -- sal = sal + 300
           else
             sal
         
       end
);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值