Oracle day02 函数
order by关键字
作用:用于对查询结果进行排序
用法:
1.利用asc 、desc对排序列进行升序或降序
2.order by后可以添加多个列(逗号分隔),当一个列的值相同时,在按第二列进行排序,依次类推
集合操作:
1.union 并集
2.union all 全集
3.intersect 交集
4.minus 差集
注意:
1.保证两个sql查询的列数是个数一致的
2.保证两个sql查询的列的数据类型是一致的
3.保证两个sql查询的列是相同的,否则查询的结果是无意义的
group by关键字
作用:对查询结果进行分组处理
用法:
1.分组之后,不能将除分组字段之外的字段放在select后面
2.group by 后面可以跟多个字段,则这多个字段值都相同时,才分为一组
3.分组之后,可以使用组函数对每个组进行数据处理
having 关键字
作用:用于对分组数据进行过滤
用法:
类似于where的用法
sql顺序分为两类:
1.sql的书写顺序
select from where group by having order by [asc/desc]
2.sql的执行顺序
from where group by having select order by [asc/desc]
--Order by 关键字
--作用:用于对查询结果进行排序
Select* from emp where deptno =20 order by sal asc Select * from emp where deptno =20 order by sal desc
--如何决定升序还是降序?
Select* from emp where deptno =20 order by sal asc Select * from emp where deptno =20 order by sal desc
--如何排序的列值相同时,如何处理?
Select*from emp where deptno =20 order by sal desc ,ename desc
|
|
--创建字段
|
|
- Union 并集
- Union all 全集
- Intersect 交集
- minus 差集
|
|
--计算字段:
不在于表中,通过+,-,*,/操作和列进行计算得到的列
--获取员工的年薪
select ename ||sal* 12 info from emp
select (ename ||'的年薪为'||sal* 12) info from emp
|
|
--集合:每次查询结果可以看做一个集合
Select *from emp where deptno =20; Select* from emp where sal>200;
--union 全集
Select *from emp where deptno =20 union Select* from emp where sal>1100;
--union 和union all的区别在于:union all 会重复显示2个集合相同的部分
--intersect 交集
Select * from emp where deptno =20 Intersect select *from emp where sal >2000;
--minus 差集 (注意2条语句的 顺序)
(集合col1减去 col2 集合中两者都包含的部分)
Select * from emp where deptno =20 Minus select *from emp where sal >2000;
--other
select *from emp where sal >2000 Minus Select * from emp where deptno =20 ;
注意:使用集合语句必须保证查询的列是一致的
--函数
|
|
--分类
--dual 是一个虚表,为了满足sql句式设置的这么一个表
1. 单行函数
1. 字符函数:
|
|
(1) --concat 拼接a,b两个字符串
① select concat (ename ,'的职位是') from emp; ② select concat (concat (ename , '的职位是'),job) from emp;
(2) --initcap (将每个单词首字母大写)
① Select initcap('wan yi kun') from dual;
(3) --Lower --upper
Lower将字符串中的字符小写 ,upper将字符串中的字符大写
① Select lower('LAOWANG') from dual;
② select upper('laowang') from dual;
(4) --length 获取字符串的长度
① Select ename ,length(ename) from emp;
(5) --lpad(a,b,c) --rpad(a,b,c)
lpad(a,b,c)将a字符串左边填充至b长度,用c字符填充,
rpad(a,b,c)将a字符串右边填充至b长度,用c字符填充
① Select lpad (ename,10,'*')from emp; ② Select rpad (ename,10,'*')from emp;
--注意:第二个参数要设定合理的值,否则数据就不完整!
③ Select lpad (ename,4)from emp;
(6) --ltrim(a,b)--rtrim(a,b)
--rtrim(a,b)(去除字符串右边指定字符,如果不设定第二个参数,默认去除空格)
① Select ltrim('a abccba a','a') from dual;
② Select ltrim(' abccba ') from dual;
--ltrim(a,b)(去除字符串左边指定字符,如果不设定第二个参数,默认去除空格)
③ Select rtrim('a abccba a','a') from dual;
④ Select rtrim(' abccba ') from dual;
(7) --replace(a,b,c)
--将a中的b字符串替换为c
① Select replace ('he love you','he','i')test from dual;
(8) --substr (a,b,c)
--将a的字符串,从b位置开始截取,截取c个长度
① Select substr('',3,8)test from dual;
(9) --trim (a from b)
--将b左右两边的a字符去除掉
① Select trim ('a' from 'a b a')from dual;
② Select trim (' ' from ' b ')from dual;
2. 数字函数
|
|
(1) --abs 求取绝对值
select abs(-5) from dual;
(2) --ceil 向上取整
Select ceil (3.1) from dual;
(3) --floor 向下取整
Select floor(3.9)from dual;
(4) --round四舍五人
Select floor(3.9)from dual;
(5) --power(x,y) x的y次幂
Select floor(3.9)from dual;
3. 日期函数
(1) --sysdate
--返回系统日期,没有括号
Select sysdate from dual;
(2) --Add_months(d1 ,d2)
--在d1的基础上,添加d2个月后的日期
Select hiredate,add_months(hiredate,12) from emp; Select add_months(sysdate,6) from dual;
(3) --months_between(d1,d2)
--返回d1,d2日期相隔的月份,返回的不是一个整数
Select months_between(sysdate,hiredate)/12 from emp;
(4) --last_day()
--返回当前日期月份的最后一天
Select hiredate,last_day(hiredate) from emp
(5) --next_day()
--返回下一个星期x的日期
Select hiredate ,next_day(hiredate,’星期一’) from emp;
Select sysdate ,next_day(sysdate ,’星期日’) from dual;
4. 转换函数
|
|
(1) .to_date()
--将字符串转化为日期
Select to_date('1999-12-12 12:12:11', 'YYYY-MM-DD HH24:MI:SS') from dual;
(2) To_char()
--将数值,或日期转化为字符串
Select sal,to_char(sal,'$9,999.00')from emp;
(3) --to_number()
--将字符串转化为数字
Select to_number('' ) from dual;
5. 其他函数
(1) --nvl(x,y)
如果列(x)的值为null,则显示为y,x y 的类型保持一致
Select ename,nvl(comm,0) from emp;
(2) --sys_guid()
生成32位 随机字符串码
Select sys_guid() from dual;
(3) Decode
(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
select ename ,sal,decode(sal,800,'屌丝', 2000,'白领', 3000,'小资', 50000,'高富帅', '一般人') from emp;
(4) case when then else end
类似于java中的if-else if-else
Select ename,sal,case when sal< 1000 then '屌丝'
when sal< 2000 then '白领'
when sal< 3000 then '小资'
when sal< 4000 then '高富帅'
when sal< 2000 then '白领'
Else '王宝强' end from emp;
6. 聚组函数
(可以用在分组中的函数)
(1) --avg
求平均值,只能对数字类型进行处理,不处理空字段
① 求20部门的平均薪水为多少?
Select avg(sal) avgsal from emp where deptno=20
(2) --sum
求和只能对数字类型进行处理,不处理空字段
① 求20 部门的员工的总薪水
Select sum(sal) sumsal from emp where deptno=20
(3) --count
对任何类型生效,不处理空字段,不处理空字段
① 求20部门的员工有几个
Select count(*) from emp where deptno=20; Select count(1) from emp where deptno=20;
(4) --max
求最大值,对任何类型生效,不处理空字段
① 求20部门的员工工资最高的是多少
Select max(sal) from emp where deptno=20;
(5) --min
求最小值,对任何类型生效,不处理空字段
① 求20部门的员工工资最高的是多少
Select min(sal) from emp where deptno=20;
7. 数据分组
|
|
(1) --group by关键字
--作用:用于对查询的数据进行分组,并处理
1)
Select deptno from emp group by deptno
分组之后,不能将除分组字段之外的字段放在select后面
--Group by 后面可以跟多个字段,则这么多个字段都相同,才分为一组
2)
Select deptno,job from emp group by deptno,job
--分组之后,可以使用分组函数对每个组进行数据处理
3) Select deptno,avg(sal) from emp group by deptno 4) Select deptno,count(1) from emp group by deptno
(2) --having 关键字
作用:用于对分组后的数据进行过滤 (类似于where的用法)
例:求平均薪水在2000以上的部门编号
1) Select deptno,avg(sal) from emp group by deptno having avg (sal)>2000 2) Select avg(sal),deptno from emp where sal >1500 group by deptno having avg(sal) >2500
(3) Order by
Select avg(sal),deptno from emp where sal >1500 group by deptno having avg(sal) >2500 order by deptno
8.Sql顺序分为两类
|
|
① Sql的书写顺序
1) slectrmher oyayngdrdeylase / esc
② Sql的书写顺序
1) from ere grou y haigetrde ylas/escl
Oracle day02 函数的更多相关文章
- oracle add_months函数
oracle add_months函数 add_months 函数主要是对日期函数进行操作,举例子进行说明 add_months 有两个参数,第一个参数是日期,第二个参数是对日期进行加减的数字(以月为 ...
- Oracle to_date()函数的用法
Oracle to_date()函数的用法 to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明,供您参考学习. 在Orac ...
- Oracle over函数
Oracle over函数 SQL code: sql over的作用及用法RANK ( ) OVER ( [query_partition_clause] order_by_clause )DE ...
- Oracle常用函数
前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使 ...
- Oracle SQL函数
Oracle将函数大致分为单行函数,聚合函数和分析函数. 单行函数分为字符函数,日期函数,转换函数,数字函数,通用函数,decode函数 一.字符函数 1)大小写控制函数 01.Lower() 全部小 ...
- Oracle trunc()函数的用法
Oracle trunc()函数的用法 /**************日期********************/1.select trunc(sysdate) from dual --2013-0 ...
- oracle中函数和存储过程的区别和联系【转载竹沥半夏】
oracle中函数和存储过程的区别和联系[转载竹沥半夏] 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己 ...
- 转,Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数
关于处理小数点位数的几个oracle函数() 1. 取四舍五入的几位小数 select round(1.2345, 3) from dual; 结果:1.235 2. 保留两位小数,只舍 select ...
- oracle日期函数转换真麻烦。。。
--Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysdate) from dual --2011 ...
随机推荐
- R语言读入数据库的中英名词互译测试并计分脚本(考试用)
1. 分子生物学中英文.csv,输入文件,两列,以tab键分隔的txt文本,没有列名 2. 错误的名解.csv, 如果在测试中拼写错误,会写出到这个文件,可用这个容易犯错的名词进行新的测试 3. 注意 ...
- Java语法细节 - 可见性
目录 JAVA访问和修饰符的关系一览表 JAVA访问和修饰符的关系一览表 Modifier Class Package Subclass World public Y Y Y Y protected ...
- 树莓派3B+上运行.Net Core项目
最近买了个树莓派3B+,准备把自己写的一个.Net Core爬虫挂在上面跑 买之前没有想到树莓派因为是今年新出的,导致驱动以及系统啥的都不是很完善,导致走了很多弯路,早知道买树莓派3就不用那么多折腾了 ...
- csv 数据
csv数据:逗号分隔值,其文件以纯文本的形式存储表格数据(数据和文本).csv模块是python的内置模块,需要引用后再使用 csv.reader(csv_file) #使用with结构 with o ...
- linux操作命令之压缩命令
常用的压缩格式: .zip .gz .bz2 一..zip格式压缩 zip 压缩文件名 源文件 压缩文件 zip -r 压缩文件名 源目录 压缩目录 解压缩 unzip 压缩文件 ...
- windows运维如何批量远程桌面
作用:windows下批量管理远程桌面, http://www.appmazing.com/ 官方站点 http://www.appmazing.com/files/RDO_Setup.exe wi ...
- SQL Server 创建服务器和数据库级别审计
一.概述 在上一篇文章中已经介绍了审计的概念:本篇文章主要介绍如何创建审计,以及该收集哪些审核规范. 二.常用的审核对象 2.1.服务器审核对象 1.FAILED_LOGIN_GROUP( Audit ...
- 一次 HTTP 请求响应过程的完整解析
因特网无疑是人类有史以来最伟大的设计,它互联了全球数亿台计算机.通讯设备,即便位于地球两端的用户也可在顷刻间完成通讯. 可以说『协议』是支撑这么一个庞大而复杂的系统有条不紊运作的核心,而所谓『协议』就 ...
- Python 爬虫利器 Selenium
前面几节,我们学习了用 requests 构造页面请求来爬取静态网页中的信息以及通过 requests 构造 Ajax 请求直接获取返回的 JSON 信息. 还记得前几节,我们在构造请求时会给请求加上 ...
- [Swift]LeetCode73. 矩阵置零 | Set Matrix Zeroes
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in-place. Exampl ...











