Oracle入门操作三(简易函数)

本文详细介绍了SQL中清空和删除表格的区别,如drop、delete和truncate,并展示了单行函数的用法,包括数字、字符串和日期类型的处理。此外,还讲解了分组查询groupby和数据排序orderby的操作,以及聚合函数的使用。
摘要由CSDN通过智能技术生成

1、清空和删除表格

(1)delete 清空
delete from 表名;
(2)使用truncate清空
truncate table 表名;

drop、delete、truncate三者的区别
a、drop是删除整个表的结构,包括了其中的数据
b、delete是一个DML语句,可以回滚和提交,truncate是一个DDL语句,不需要回滚和提交的
c、delete删除数据可以添加where进行数据的筛选,truncate不能添加筛选条件
d、delete是以行为单位进行数据的删除,truncate是以表为单位进行清空

2、单行函数

单行函数的应用:以行为单位,对每一行的数据单独的进行处理。
函数名(需要计算和处理的数据),使用select 查询结果
函数:是一个固定的计算过程,只能完成一个功能单一的事情,可以被反复利用

(1)数字类型:
abs(x)计算绝对值
round(x,小数精度)四舍五入

select round(1.234567,4) from dual;--输出:1.2346 dual是一个临时表,可以不用创建直接使用

trunc(x,小数精度)截取数字

select trunc(1.23456,4) from dual; --输出1.2345

ceil(x)向上取整

select ceil(1.00001) from dual;--输出2

floor(x)向下取整

select floor(1.9999) from dual;--输出1

power(x,次方)幂运算

select power(3,4) from dual; --输出81

mod(被除数,除数)取余数运算

select mod(10,3) from dual;--余数为1

(2)字符串类型:
substr(字符串,开始位置,连续取值长度)字符串的取值

select substr('abcdefg',2,4) from dual;--输出:‘bcde’

开始位置为负值时,那么久倒着取值

select substr('abcdefg',-2,2) from dual; --输出:‘fg’

如果连续取值长度不填的话,那么就直接取值到最后

select substr('abcdefg',2) from dual;--输出:‘bcdefg’

字符串的拼接:
concat(字符串1,字符串2)字符串的拼接,只能拼接两个字符串

select concat('a','b') from dual;--输出为‘ab’

拼接方法二:使用 ‘||’ 进行拼接

select ('a'||','||'b'||':') from dual;--输出‘a,b:’

length(X)计算字符串的长度

select length('abcdefg') from dual; --输出为7

replace(x,‘旧内容’,‘新内容’)替换字符串的内容

select replace('abade','a','1') from dual;--输出‘1b1de’

去除字符串两边的空格trim()
去除字符串左边的空格ltrim()
去除字符串右边的空格rtrim()

select trim('  gfh    ') from dual;--输出‘gfh’

lpad(字符串,总长度,填充符号) 左边不足长度的地方填充字符串
rpad(字符串,总长度,填充符号)右边不足长度的地方填充字符串

select lpad('ab',4,'$') from dual;--输出:‘$$ab’
select rpad('ab',4,'#') from dual;--输出:‘ab##’

(3)日期类型
sysdate 获取当前系统的时间日期

select sysdate from dual;--输出2020/11/14 22:00:53

add_months(日期,月的数量) 月份的偏移

select add_months(date'2020-11-14',-3) from dual;--输出日期为:2020/08/14

months_between(日期1,日期2)日期的间隔 ,主要以月份来进行计算

select months_between(date'2019-10-14',date'2020-11-14') from dual;--输出为:-13

last_day()获取月份最后一天

select last_day(date'2020-11-29') from dual;--输出:2020/11/30

trunc(时间,‘mm’)获取时间所在月的第一天,trunc其实就是截取的意思
trunc(时间,‘yyyy’)获取时间所在年的第一天

select trunc(date'2020-11-14','mm') from dual; --输出2020/11/1
select trunc(date'2020-11-14','yyyy') from dual; --输出2020/1/1

时间类型的类型转换
使用to_char()提取日期里面的年月日时分秒周

select to_char(sysdate,'yyyy') from dual;--输出年份:2020
select to_char(sysdate,'mm') from dual;--输出:11
select to_char(sysdate,'dd') from dual;--输出:14
select to_char(sysdate,'hh') from dual;--输出:22
select to_char(sysdate,'mi') from dual;--输出:19
select to_char(sysdate,'ss') from dual;--输出:40
select to_char(sysdate,'day') from dual;--输出:星期六

将字符串类型转成时间类型
to_date(字符串,时间格式)
to_date(‘08-31-2020’,‘mm-dd–yyyy’)

select to_date('08-31-2020','mm-dd-yyyy') from dual;--输出日期:2020/08/31

将字符串类型转成数字类型

select to_number('123') from dual; --输出:123

(4)分组查询:group by
将相同的类型的数据放在一起计算,对哪个字段分组,就只能查询哪个字段

select deptno from scott.emp group by deptno;

输出如下:emp表格是oracle中默认存在的表格
在这里插入图片描述
分组之后的数据计算
聚合函数的计算:
一个组的数据放在一起计算
sum() 求和
avg() 平均值
max() 最大值
min() 最小值
count() 统计数量

分组之后的结果数据筛选,使用having关键字
例:查看平均工资大于2300的部门

select deptno,avg(sal) from scott.emp group by deptno having avg(sal)>2300;

where 和having筛选的区别?
1、where是在分组之前,having是在分组之后。
2、where不能对聚合函数进行筛选,having可以筛选普通数据和聚合函数

(5)order by 数据排序
order by需要排序的列 asc/desc
asc 从小到大 升序排列
desc 从大到小 降序排列
例:emp表中按工资降序排列

select * from emp order by sal desc;

工资降序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值