oracle笔记04

–建表
create table students(
       sid number primary key,
       sname varchar2(32),
       age number,
       birthday date
); 

insert into students values(1001,'htf',20,'27-10月-2017');
–显示部门平均工资低于 2000 的部门号和它的平均工资
select deptno,avg(sal) as "平均工资" 
from emp 
group by deptno
having avg(sal)<2000; 
–显示部门雇员工资大于1500的所部门的平均工资;
select deptno,avg(sal) as "平均工资" 
from emp 
where sal>1500
group by deptno
having avg(sal)>2000; 

案例 1: 问题: 某公司印了一批充值卡,卡的密码是随机生成的,现在出现这个问题: 卡里面的 “O 和 0” (哦和零)“i 和 和” 1”, (哎和一),用户反映说看不清楚,公司决定, 把存储在数据库中的密码中所有的 “哦”都改成“零”,把所有的“i” 都改成“1” ;
请编写 SQL 语句实现以上要求;数据库 表名:Card ;密码 字段名:PassWord

分析:
1.用什么语句:update
2.replace(PassWorad,’O’,0);
3.replace(replace(PassWorad,’O’,0),’i’,1)

update card set PassWord=replace(replace(PassWorad,'O',0),'i',1);

案例 2: 问题: 在数据库表中有以下字符数据,如: 13-1 、13-2 、13-3 、13-10 、13-100 、13-108 、13-18 、13-11 、13-15 、14-1 、14-2 现在希望通过SQL语句进行排序,并且首先要按照前半部分的数字进行排序,然后再按照后半部分的数字进行排需,输出要排成这样: 13-1 、13-2 、13-3 、13-10 、13-11 、13-15 、13-18 、13-100 、13-108 、14-1 、14-2 请编写 SQL 语句实现以上要求;数据库 表名:SellRecord ; 字段名:ListNumber

分析:
1.截取‘-’的位置:instr(ListNumber,’-‘,’1’,’1’);
2.截取前半部门字符串:
order by subStr(ListNumber,1,instr(ListNumber,’-‘,’1’,’1’)-1)
3.截取后半部门的位置:
subStr(ListNumber,instr(ListNumber,’-‘,’1’,’1’)+1)
4.通过to_number()转成数字之后再排序

–请查找最近350个月入职的员工
select *  from emp where add_month(hiredate,350)>sysdate; 

–查找已经入职 8 个月多的员工

select * from emp where add_month(hiredate,8)< sysdate;

–问题:找出各月倒数第3天受雇的所有员工。

select * from emp where (last_day(hiredate)-2)=hiredate;

select to_char(sal,'$9999.99') from emp;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值