Oracle数据库查询selec 续

exists 存在即保留,存在即合法

select *
  from emp
 where exists (select deptno from dept where dname = 'SALES');

select *
  from emp
 where exists (select deptno
          from dept
         where dname in ('SALES', 'ACCOUNTING')
            and emp.deptno =dept.deptno);

–单行函数:一条数据返回一个结果

当前时间

select sysdate from dual;
select current_date from dual;

加减日期

select sysdate+2 from dual;

add_months() 月份相加

add_months(hiredate,3)

months_between度过几个月

months_between(sysdate,hiredate)

last_day前月的最后一天

select last_day(sysdate) from dual

下一个星期几是几号

select next_day(sysdate,‘星期几’) from dual;

to_date(‘字符串’,‘识别日期字符串模板’)

select to_date(‘2019-07-30 10:11:13’,‘yyyy-mm-dd hh24:mi:ss’)+3 from dual;

设定一个特定的时间(用一个特定的时间字符串转换为日期)

select to_date(‘2019年07月30日 10:11:13’,‘yyyy"年"mm"月"dd"日" hh24:mi:ss’) from dual;

将日期转为特定格式的字符串 to_char()

select to_char(sysdate,‘yyyy"年"mm"月"dd"日" hh24:mi:ss’) from dual;

组函数: count() sum() max() min() avg()

对确定的结果集使用函数得结果
注意: select后 组函数不能和非组函数或分组字段一起使用
注意: where 不能使用组函数

分组

select 数据 from 数据源 where 行过滤条件 group by 分组字段 having 组过滤信息 order by 排序字段;
执行顺序: from --where–group by–having–select–order by
如果有分组,select后只能跟分组字段和组函数

行转列

select name,
       min(decode(course, '语文', score)) "语文",
       max(decode(course, '数学', score)) "数学",
       avg(decode(course, '英语', score)) "英文"
  from tb_student
 group by name;

rowid

去重,没有主键,没有唯一的字段,可以存在多条数据重复,想要达到去重,可以使用rowid
例:

delete from tb_student
 where not rowid in
        (select min(rowid) from tb_student group by name, course, score);

rownum

分页查询.
例:

select empno, ename, sal,n
  from (select empno, ename, sal, rownum n
          from (select empno, ename, sal, rownum from emp order by sal))
 where n >= 5
   and n <= 8;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值