转换函数
to_char()字符串转换日期函数
--查询大于某个日期的员工信息
select * from emp
where hiredate>to_date('1980-02-12','yyyy-mm-dd');
oracle自动转换
char===>number
number===>char
date=====>char
char=====>date
--查询员工的薪水:两位小数,本地货币代码,千位符
SQL> select ename,to_char(sal,'L9,999.99') from emp;
WARD ¥,250.00
JONES ¥,975.00
MARTIN ¥,250.00
BLAKE ¥,850.00
CLARK ¥,450.00 下面是在to_char函数经常使用的几种格式
数字

$ 美元符
L 本地货币符号
. 小数点
, 千位符 --将字符串'¥1,250.00'转成数字
SQL> select to_number('¥2,975.00','L9,999.99') from dual;
TO_NUMBER('¥2,975.00','L9,999.99')
-----------------------------------
通用函数
这些函数适用于任何数据类型,同时也适用于空值
NVL(expr1,expr2)
NVL2(expr1,expr2,expr3)
nvl2(a,b,c)当a=null返回c否则返回b
NULLIF(expr1,expr2)
nullif(a,b) 当a=b时,否则返回a
COALESCE(expr1,expr2,expr3....)
coalesce(a,b,c,...)从左到右,返回第一个不为空的表达式
case表达式(一般用于报表)
在SQL语句中使用IF-THEN-ELSE逻辑
使用两种方法
.case表达式:SQL99的语法,类似Basic,比较繁琐
.DECODE函数:oracle自己的语法,类似java,比较简单
decode(列名|表达式,search1,result1,search2,result2,...,default)
--注意:默认值写在最后,可扩展参数列表
--给员工涨工资:总裁  经理: 其他涨500 前后工资给列出来
--方法一
select ename,sal 涨前工资,
(case job when 'PRESIDENT' then sal+
when 'MANAGER' then sal+
else sal+
end) 涨后工资 from emp; ENAME 涨前工资 涨后工资
---------- ---------- ---------- ton_abc
SMITH
ALLEN
WARD
JONES
--方法二
select ename,job,sal 涨前工资,
(decode(job,'PRESIDENT',sal+,'MANAGER',sal+,sal+)) 涨后工资
from emp;
分组函数
分组函数作用于一组数据,并对一组数据返回一个值。
group by子句必须在where之后
组函数类型
AVG
COUNT
MAX
MIN
SUM
--求员工的平均工资
SQL> select avg(sal) 平均工资1,sum(sal)/count(*) from emp;
平均工资1 SUM(SAL)/COUNT(*)
---------- -----------------
2073.21429 2073.21429
--如果列中有空值,组函数能够自动过滤空值
--可以使用nvl()函数修正空值,使得组函数不过滤空值
分组数据
知识点1:可以使用group by子句将表中的数据分成若干组 --查询各部门的平均工资
SQL> select avg(sal) from emp group by deptno; select a,b,c
from emp
group by a,b,c,d
--group by先对数据进行分组,然后在组上进行数据查询
--在使用分组函数时,在select中出现的a,b,c列,必须是group by 后面集合的子集。
--如果是组函数作为列,不需要在group by 后面集合的子集中
--在group by中没有出现的项,不能在select进行检索(group by是分组select查询的是分组之后各组的结果)
--查询各个部门中不同职位的平均工资
SQL> select avg(sal) from emp group by deptno,job;--先按部门进行分组,再按职位分组 SQL> select deptno,job,avg(sal) from emp group by deptno,job
order by ;(按select的第一个查询结果排序)
DEPTNO JOB AVG(SAL)
------ --------- ----------
CLERK
MANAGER
PRESIDENT
ANALYST
CLERK
MANAGER
CLERK
知识点2:分组过滤(对数据分组之后,再增加检索条件)
having
--查询平均工资大于2000的部门
SQL> select deptno from emp group by deptno having avg(sal)>;
having和where子句
--查询10号部门的平均工资
方案一:先where查询10号部门,再计算平均工资
SQL> select avg(sal) from emp where deptno=; 方案二:先分组查询每组的平均工资,再通过having过滤
SQL> select avg(sal) from emp group by deptno having deptno=; 总结:sql优化②,这里先where过滤比较好
--注意:where子句中不可以使用分组函数,但是having可以
分组函数小结:只要使用了组函数或者having过滤关键字,那么在select查询的列名必须在group by集合中出现,having中的列名也必须在group by集合中出现(组函数列名),
having子句中不可以使用别名

数据库 数据库SQL语句三的更多相关文章

  1. Oracle数据库 基础SQL语句练习

    一.说明 第一次使用Oracle,想做一些练习,熟悉一些oracle. 表:使用的是scott用户,默认的表 具体表讲解,可以参考该文档:https://www.cnblogs.com/xjcheng ...

  2. Oracle,SQL Server 数据库较MySql数据库,Sql语句差异

    原文:Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 1.关系型数据库 百度百科 关系数据库 ...

  3. 《大话数据库》-SQL语句执行时,底层究竟做了什么小动作?

    <大话数据库>-SQL语句执行时,底层究竟做了什么小动作? 前言 大家好,我是Taoye,试图用玩世不恭过的态度对待生活的Coder. 现如今我们已然进入了大数据时代,无论是业内还是业外的 ...

  4. 总结一些关于操作数据库是sql语句还是存储过程问题

    总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...

  5. SQL Server 【附】创建"商品管理数据库"、"学生选课数据库"的SQL语句

    附:(创建“商品管理数据库”的SQL语句) --建立"商品管理数据库"数据库-- create database 商品管理数据库 on(name='商品管理数据库_m', file ...

  6. 在线数据库表(sql语句)生成java实体类工具

    相信每个做java开发的读者,都接触过SQL建表语句,尤其是在项目开发初期,因为数据库是项目的基石. 在现代项目开发中,出现了许多ORM框架,通过简单的实体映射,即可实现与数据库的交互,然而我们最初设 ...

  7. GP数据库 常用SQL语句

    GP数据库 常用SQL语句 --1,查看列名以及类型 select upper(column_name) ,data_type from information_schema.columns wher ...

  8. mysql(数据库,sql语句,普通查询)

    第1章 数据库 1.1 数据库概述 l 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. l 什 ...

  9. [数据库]简单SQL语句总结

    1.在查询结果中显示列名:a.用as关键字:select name as '姓名'   from students order by ageb.直接表示:select name '姓名'   from ...

  10. 数据库常用SQL语句(三):子查询

    一.为什么会使用子查询 虽然可以通过连接查询来实现多表查询数据记录,但不建议使用,因为连接查询的性能很差,为什么呢?我们来进行分析,例如 我们要查询部门表t_dept 和雇员表t_employee中的 ...

随机推荐

  1. spring源码分析之<context:component-scan/>vs<annotation-config/>

    1.<context:annotation-config/> xsd中说明: <xsd:element name="annotation-config"> ...

  2. 【NLP】基于统计学习方法角度谈谈CRF(四)

    基于统计学习方法角度谈谈CRF 作者:白宁超 2016年8月2日13:59:46 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务 ...

  3. Python笔记之不可不练

    如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...

  4. 如果你也会C#,那不妨了解下F#(4):了解函数及常用函数

    函数式编程其实就是按照数学上的函数运算思想来实现计算机上的运算.虽然我们不需要深入了解数学函数的知识,但应该清楚函数式编程的基础是来自于数学. 例如数学函数\(f(x) = x^2+x\),并没有指定 ...

  5. Java迭代器

    迭代器在其实就是指针,读取集合或者数组中的一个值,读完以后又指向下一条数据. iterator() 迭代器只读,不能改效率要比for循环高 迭代器的一些方法: HasNext() 如果仍有元素可以迭代 ...

  6. python之最强王者(11)——异常(exception)

    1.Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. ...

  7. Salesforce的sharing Rule 不支持Lookup型字段解决方案

    Salesforce 中 sharing rule 并不支持Look up 字段 和 formula 字段.但在实际项目中,有时会需要在sharing rule中直接取Look up型字段的值,解决方 ...

  8. mysql awr 1.0.5 GA正式版发布

    1.0.5变更内容 1.修复centos 7下swap值不正确:2.中文乱码:3.begin/end snap下拉显示Mysql启动时间:4.两次快照间不能重启过:5.新增tab页面查看mysql存储 ...

  9. js判断窗体或容器滚动条到底部

    NO1---jquery判断窗体滚动条到底部 $(window).scroll(function () {if ($(window).scrollTop() >= $(document).hei ...

  10. jQuery选择什么版本 1.x? 2.x? 3.x?

    类似标题:jQuery选择什么版本?jquery一般用什么版本?jquery ie8兼容版本.jquery什么版本稳定? 目前jQuery有三个大版本:1.x:兼容ie678,使用最为广泛的,官方只做 ...