集合操作、系统自带函数


--四、集合操作(交、并、差)(自动去重,自动排序)    
--1、交:intersect    
--例如:查询部门10和部门20都有的工作类型    
select job from emp    
where deptno=10     
intersect    
select job from emp    
where deptno=20 ;    
    
--2、并:union    
--例如:查询部门10的办事员和部门20的经理    
select * from emp    
where deptno=10 and job='CLERK' or deptno=20 and job='MANAGER';    
select * from emp    
where deptno=10 and job='CLERK'    
union    
select * from emp    
where deptno=20 and job='MANAGER';   
   
--3、差:minus    
-- 例如:查询部门30中有,而部门10中没有的工作类型    
select job from emp    
where deptno=30    
minus    
select job from emp    
where deptno=10;    
    
--伪列:rowid  rownum    
select rowid,rownum,deptno,dname,loc    
from dept    
where loc='NEW YORK';   
   
--显示员工表前6条记录信息    
select * from emp    
where rownum<7;    
  
--显示员工表7-12条记录信息    
select * from emp    
where  rownum<7 and empno not in(    
select empno from emp    
where rownum<7    
);    
    
    
--系统自带函数(日期、数字、字符串、类型转换):    
--1、日期函数    
--1)sysdate:显示系统日期时间函数    
select sysdate from dual;    

--2)months_between(日期1,日期2):显示两个日期之间月份的差值    
--显示35年前入职的员工信息    
select * from emp    
where months_between(sysdate,hiredate)/12>35;  
  
--3)add_months(日期,月份数):在指定的日期上加上月份数    
select add_months(sysdate,3) from dual;  
  
--4)next_day(日期,):显示下周几指定的日期    
select next_day(sysdate,7) from dual;    

--5)last_day(日期):显示日期所在月份的最后一天的日期    
select last_day(sysdate) from dual;    
--显示员工表中在当月倒第3天入职的员工信息    
select * from emp    
where last_day(hiredate)-2=hiredate;    
  
--2、数学函数    
--1)round():四舍五入    
--2)trunc():截断数值    
select round(56.78) from dual;    
select trunc(56.78) from dual;    
    
--显示每个员工的工龄    
select ename,trunc(months_between(sysdate, hiredate)/12)    
from emp;    
    
select ceil(-56.78) from dual;    
    
--power(m,n):m的n次方    
select power(5,3) from dual;    
    
--mod(m,n):求余数    
    
--3、字符串函数    
--lower(字符串):转小写    
--upper(字符串):转大写    
select lower('Hello') from dual;    
select upper('Hello') from dual;    
    
--trim():去掉左右空格    
--ltrim():去掉左边空格    
--rtrim():去掉右边空格    
    
alter table emp    
add email varchar2(30);    
    
update emp set email=trim(ename)||trim('   @163.com');    
    
select * from emp;    
    
--lenght(字符串):求字符串长度    
select length('good morning') from dual;    
    
--4、类型转换函数    
--1)to_char():    
--  转换成字符串类型    
  select 123+5 from dual;    
  select to_char(123)||5 from dual;    
  select to_char(sysdate,'yyyy/mm/dd') from dual;    
  
--2)to_date():    
--转换成日期类型    
--显示1987.5-今天入职的员工信息    
select * from emp    
where hiredate>=to_date('05-01-1987','mm-dd-yyyy');    
    
select * from emp    
where hiredate>='01-5月-87';    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值