Oracle中的函数
在SQL语句中有两种函数,一种是内置函数,另一种是自定义函数
函数有单行函数和多行函数之分
集合函数:
使用集合函数:
- Union,并集(去重) 对两个结果集进行并集操作,不包括重复行同时进行默认规则的排序;
- Union All,全集(不去重) 对两个结果集进行并集操作,包括重复行,不重复行,不进行排序;
- Intersect, 交集(找出重复) 对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;
- Minus, 差集(减去重复) 对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序;
举例: 查询30 部门的员工或者薪资>2000的部门编号
select * from emp where deptno = 30 -- 不能有 ; 号 , ; 号代码这条命令结束
Union
select * from emp where sal > 2000;
上面的代码就是并集,查询所有部门的编号和薪资大于2000的,然后并集就可以得到结果,
注意: 在SQL语句中 ; 是一条命令的结束语句,在使用集合函数时要注意
下面的代码就是全集,所有结果去全部保留
select * from emp where deptno = 30
Union All
select * from emp where sal > 2000;
下面的代码就是显示差集,减去重复
-查询不存在员工的部门的部门编号
select deptno from dept
Minus
select distinct deptno from emp;
在查询数据中我们会用到模糊匹配 其中 like 后面跟上数据,就是模糊匹配 like后面加上精确数据,相当于精确匹配
% 任意个字符 _ 一个任意字符
转义字符需要 escape(’ ') 括号中添加符号
- 单行函数: 一条记录返回一个结果
日期函数
- sysdate/current_date 以date类型返回当前的日期
- add_months(d,x) 返回加上x月后的日期d的值
- LAST_DAY(d) 返回的所在月份的最后一天
- months_between(date1,date2) 返回date1 和 date2 之间月的数目
- next_day(sysdate,‘星期一’) 下周星期一
1.当前时间
select current_date from dual where 1 = 1;
select sysdate from dual where 1 = 1;
2.修改日期(天数+ -)
--三天后的时刻
--加减日期
select sysdate+3 from dual;
3.修改月份
--add_months(日期对象,月份数)
--查询所有员工的试用期期到期(转正的日期) 3个月试用期
select ename,hiredate,add_months(hiredate,3) from emp;