阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle数据库之操作符及函数

227次阅读
没有评论

共计 2471 个字符,预计需要花费 7 分钟才能阅读完成。

一、操作符:

1、分类:

算术、比较、逻辑、集合、连接;

2、算术操作符:

执行数值计算;

— 工资加 1000
select empno,ename,job,sal+1000 from emp;

3、比较操作符:

— 比较运算符 (between and 包头不包尾)
select * from emp where sal between 1000 and 2000;

(不等于是!=,在 mysql 中是 <>  )

4、逻辑操作符:and  or  not

 

– 查询奖金不为空的员工信息
select * from emp where comm is  not null;

 

5、集合操作符:

  将两个查询的结果组合成一个结果:

select sid  from t_score where score>=70 and cid = ’01’
INTERSECT
select sid from t_score where score>=70 and cid = ’07’;

①、intersect 返回两个查询的公共行;

②、union: 返回两个查询的不重复的所有行;这里面可以是一个表中的数据(在 mysql 中是另外的联合查询 – 不是一个表)

③、minus: 返回从第一个查询的结果中排除第二个查询中出现的行;(在第一个的结果中查找不满足第二个的)

6、连接操作符:

  将多个字符串或数据值合并成一个字符串;

– 连接操作符
select (‘ 员工号为 ’||empno||’, 姓名为 ’||ename||’ 的工资为 ’||sal) from emp

7、优先级:

算术 > 连接 > 比较 >not 逻辑 >and 逻辑 >or 逻辑操作符

二、SQL 函数:

用于执行特殊的操作的函数;

1、分类:

单行、分组、分析;

2、单行函数分类:

从表中查询的每一行只返回一个值;

字符、数字、日期、转换、其他;

3、字符函数:

Oracle 数据库之操作符及函数

— 字符串函数
select lower(ename),job from emp; – 小写

select ltrim(‘xysdezadmas’,’xyz’) from dual;– 截取:从左边开始按后面字段开始截取,有几个截取几个,没有就不截取

 ①、其他字符函数:

chr: 根据 ASCII 码返回对应的字符(0:48    a:97    A:65)

lpad 和 rpad:填充;

trim: 去除左右两边的空格符;

lenth: 字符串长度;

decode: 逐个值置换;

select sname,decode(cid,1,’ 开发部 ’)as 部门 from Java0322;

select ename,decode(job,’CLERK’,’ 职员 ’,’SALESMAN’,’ 导购 ’) as 工作 from emp

4、数字函数;

Oracle 数据库之操作符及函数

5、日期函数:

对日期值进行计算,并生成日期数据类型或数值类型的结果;

add_months 偏移;

months_between: 月数差;

last_day 最后一天;

round: 四舍五入;

trunc: 只舍不入,返回指定日期模式截断后的第一天;

next_day(d,day): 下周周几的日期

extract: 计算年份差:

 

– 日期函数
select add_months(sbirth,-3)  from java0322;– 月份偏移 3 月,可以是负数,也就是向前偏移

select extract(year from sysdate) from dual;– 截取当前时间的年份

select sname,extract(year from sysdate) – extract(year from sbirth) from java0322;– 计算年纪

 

6、转换函数:

to_char: 按照指定的格式转化字符串;

to_date: 将字符串转化为日期;

to_number: 将数字字符串转化为数字;—- 可以实现直接在 sql 语句中进行格式的转换

 

– 转换函数 (字符串,格式)
Select TO_CHAR(0.123,’$0.9999′) FROM DUAL;
– 字符串转日期
select to_date (‘2005-02-28′,’yyyy-mm-dd’) from dual;
– 字符串转数字
select to_number(’20’) from dual;

 

其他函数:

nvl:isnull,不为空时为本身,为空时指定 0;

nvl2: 不为空时指定值 2,为空时指定值 3;

NullIF:相等时为空,否则为前者

 

– 查询员工表的所有人的姓名,工资 + 奖金 (奖金没有的时候,由 null 转为 0)—nvl 转换空值的函数
select ename,sal+nvl(comm,0)as sal from emp;– 当空为 0,不为空为 comm

select ename,sal+nvl2(comm,10000,0)  from emp;— 不为空时 10000,为空时 0;

select nullif(100,200) from dual;– 相等为空,不等为前者

 

7、分组函数:

基于一组行来返回结果;

avg、min、max、sum、count

8、分析函数:

  根据一组行来计算聚合值;用于计算完成聚集的累计排名、移动平均数等;

row_number: 返回连续的排位,不论值是否相等;

rank: 具有相等值的行排位相同,序数随后跳跃;

dense_rank: 具有相等值的行排位相同,序号是连续的

 

— 排位
select empno,ename,job,sal,row_number()over (order by sal desc) as  numm from emp; – 返回连续的排位,不论值是否相等 12345

select empno,ename,job,sal,rank()over (order by sal desc) as  numm from emp; – 相等值的行排位相同,序号随后跳跃;12245

select empno,ename,job,sal,dense_rank()over (order by sal desc) as  numm from emp; – 相等值的行排位相同,序号是连续的;12234

更多 Oracle 相关信息见 Oracle 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=12

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2471字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中