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 函数的更多相关文章

  1. oracle add_months函数

    oracle add_months函数 add_months 函数主要是对日期函数进行操作,举例子进行说明 add_months 有两个参数,第一个参数是日期,第二个参数是对日期进行加减的数字(以月为 ...

  2. Oracle to_date()函数的用法

    Oracle to_date()函数的用法 to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明,供您参考学习. 在Orac ...

  3. Oracle over函数

    Oracle over函数   SQL code: sql over的作用及用法RANK ( ) OVER ( [query_partition_clause] order_by_clause )DE ...

  4. Oracle常用函数

    前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使 ...

  5. Oracle SQL函数

    Oracle将函数大致分为单行函数,聚合函数和分析函数. 单行函数分为字符函数,日期函数,转换函数,数字函数,通用函数,decode函数 一.字符函数 1)大小写控制函数 01.Lower() 全部小 ...

  6. Oracle trunc()函数的用法

    Oracle trunc()函数的用法 /**************日期********************/1.select trunc(sysdate) from dual --2013-0 ...

  7. oracle中函数和存储过程的区别和联系【转载竹沥半夏】

    oracle中函数和存储过程的区别和联系[转载竹沥半夏] 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己 ...

  8. 转,Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数

    关于处理小数点位数的几个oracle函数() 1. 取四舍五入的几位小数 select round(1.2345, 3) from dual; 结果:1.235 2. 保留两位小数,只舍 select ...

  9. oracle日期函数转换真麻烦。。。

    --Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysdate) from dual  --2011 ...

随机推荐

  1. spring的配置和使用

    spring的配置和使用 1. 创建基于java的配置. 配置极少量的XML来启用java配置:   <?xml version="1.0" encoding="U ...

  2. linux 使用sh@d0ws0cks client

    Linux Centos7下安装使用Shadowsocks客户端,实现*** 准备 SS: 搭建一个可以连接外网的服务器 教程可见 自己动手搭梯子 服务器:本人用的腾讯云服务器,系统为Centos7 ...

  3. java内存分页计算

    介绍三个最常用的分页算法 First(感觉这个最简单实用) //总记录数int rows=21; //每页显示的记录数int pageSize=5; //页数int pageSum=(rows-1)/ ...

  4. php.ini中文翻译版--转载

    ;;;;;;;; ; 警告 ; ;;;;;;;;;;; ; 此配置文件是对于新安装的PHP的默认设置. ; 默认情况下,PHP使用此配置文件安装 ; 此配置针对开发目的,并且*不是*针对生产环境 ; ...

  5. 【安富莱专题教程第7期】终极调试组件Event Recorder,各种Link通吃,支持时间和功耗测量,printf打印,RTX5及中间件调试

    说明:1.继前面的专题教程推出SEGGER的RTT,JScope,Micrium的uC/Probe之后,再出一期终极调试方案Event Recoder,之所以叫终极解决方案,是因为所有Link通吃.  ...

  6. RabbitMQ进程结构分析与性能调优

    RabbitMQ是一个流行的开源消息队列系统,是AMQP(高级消息队列协议)标准的实现,由以高性能.健壮.可伸缩性出名的Erlang语言开发,并继承了这些优点.业界有较多项目使用RabbitMQ,包括 ...

  7. [Swift]LeetCode971.翻转二叉树以匹配先序遍历 | Flip Binary Tree To Match Preorder Traversal

    Given a binary tree with N nodes, each node has a different value from {1, ..., N}. A node in this b ...

  8. MySQL 规范及优化

    一.建库建表优化 1.核心规范(推荐) 表字符集选择UTF8 (“表情”字段单独设置为其他字符集) 存储引擎使用INNODB 不在库中存储图片.文件等 使用可变长字符串(varchar) 每张表数据量 ...

  9. 《关于长沙.NET技术社区未来发展规划》问卷调查结果公布

    那些开发者们对于社区的美好期待 2月,长沙.net 技术社区自从把群拉起来开始,做了一次比较正式.题目为<关于长沙.NET技术社区未来发展规划>的问卷调查,在问卷调查中,溪源写道: 随着互 ...

  10. HBase之CF持久化系列(续2)

    正如上篇博文所说,在本节我将为大家带来StoreFlusher.finalizeWriter..如果大家没有看过我的上篇博文<HBase之CF持久化系列(续1)>,那我希望大家还是回去看一 ...