Oracle查询语句(二)

原创 2016年08月28日 16:33:52

–排序
–查询员工信息,按照月薪排序
order by 后面 可以跟 列名,表达式,别名,序号。

 select *
 from emp
 order by sal;

–a 命令 appand 在上一句sql上追加语句。

a desc;
类似于
 select *
 from emp
 order by sal desc;(降序排列)

单行函数
–字符函数

select lower('hellO WORld') 转小写,upper('hellO WORld') 转大写,initcap('hello world') 首字母大写
  from dual;

–substr(a,b) 从a中,第b位开始取,取右边所有的字符

 select substr('Hello World',4)  from dual;

–length 字符数 lengthb 字节数

select length('上海') 字符数, lengthb('上海') 字节数
from dual
    字符数     字节数                                       
---------- ----------                                  
         2          4      

–instr 在母串中查找子串,找到返回下标(从1开始),否则返回0

select instr('Hello World','ll')  from dual;

INSTR('HELLOWORLD','LL')                                  
------------------------                                  
                       3       

–lpad 左填充 rpad 右填充

select lpad('abcd',10,'*') 左,rpad('abcd',10,'*') 右
 from dual;
左             右
---------- ----------                                     
******abcd abcd******         

–trim 去掉前后指定的字符

select trim('H' from 'Hello WorldH') from dual;

–数字函数

select ROUND(45.926, 2) 一,ROUND(45.926, 1) 二, ROUND(45.926, 0) 三,
ROUND(45.926, -1) 四, ROUND(45.926, -2) 五
from dual

–日期函数

select sysdate from dual;
SYSDATE                                                    
--------------                                            
22-8月-16  

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual
TO_CHAR(SYSDATE,'YY                                    
-------------------                                       
2016-8-22 15:39:21   

select systimestamp from dual;
SYSTIMESTAMP                                              
---------------------------------------------------------- 
22-8月-16 03.40.05.406000 下午 +08:00       

–systimestamp时间戳
–昨天 今天 明天

select (sysdate-1) 昨天, sysdate 今天, (sysdate+1) 明天 from dual;

select hiredate+sysdate from emp;

select hiredate+sysdate from emp
               *
第 1 行出现错误: 
ORA-00975: 不允许日期 + 日期 

–计算工龄

select (sysdate-hiredate)/30 ,MONTHS_BETWEEN(sysdate,hiredate)
 from emp

–月份相加,ADD_MONTHS

select ADD_MONTHS(sysdate,114) from dual;
ADD_MONTHS(SYS                                            
--------------                                            
21-2月 -26    

–从今天开始算(2016.8.21星期日),下一个星期一

 select next_day(sysdate,'星期一')from dual;

–从今天开始算(2016.8.21星期日),下一个星期二

 select next_day(sysdate,'星期二')from dual;

–对日期进行四舍五入

 select round(sysdate,'month')一,round(sysdate,'year')二
 from dual;

–隐式转换的前提是:被转换对象必须是可以转换的。
–2016-08-21 10:27:23 今天是星期日

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss "今天是"day')from dual;
TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI:SS"今天是"DAY')         
-----------------------------------------------------------
2016-08-21 10:28:37 今天是星期日     

–查询员工的薪水:货币符号,两位小数,千位符

select sal,to_char(sal,'L9,999.99') from emp

–通用函数
–nvl2(a,b,c)当a为空时,返回c,否则返回b

select sal*12 薪水,nvl2(comm,comm,0)奖金 from emp;

–平均工资

select sum(sal)/count(*)一,avg(sal)二 from emp;

–平均奖金

select sum(comm)/count(*) 一,sum(comm)/count(comm)二,avg(comm)三 from emp;

–空值4.组函数会自动过滤空值

 select count(*),count(comm) from emp;
   COUNT(*) COUNT(COMM)                                   
---------------------                                      
        12           4      

多行函数
–求各个部门的平均工资

select deptno,avg(sal)
    from emp
    group by depnto;

–group by多列:先按照第一列分;如果第一列相同,再按照第二列分
–查询平均工资大于2000的部门

    select deptno,avg(sal)
    from emp
    group by deptno
   having avg(sal)>2000

having和where的区别
如果条件中含有组函数,那么只能使用having
如果where和having语句都可以,那么尽量使用where语句。
–求10号部门的平均工资

select deptno,avg(sal)
from emp
group by deptno
having deptno=10;

–group by的增强

 group by rollup(a,b)
 =
 group by a,b
 +
 group by a
 +
 group by null
select deptno,job,sum(sal)
    from emp
    group by rollup(deptno,job);

–SQLPLUS支持报表功能

 break on deptno skip 2
select deptno,job,sum(sal)
  from emp
  group by rollup(deptno,job);
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

ORACLE EBS常用表及查询语句(二)

1. OU、库存组织 SELECT hou.organization_id ou_org_id, --org_id hou.name ou_name, --ou 名称 ood.organizatio...
  • somnl
  • somnl
  • 2015-04-09 09:11
  • 841

oracle入门之 Select查询语句(二)

4、单行函数和组函数 (1)单行函数  表中每一行都受到影响,并且每一行都返回一个结果 a、处理字符串的单行函数    upper(字符串),将该字符串的所有字母大写    如,upper ('hel...

Oracle分页查询语句(二)

这篇文章用几个例子来说明分页查询的效率。首先构造一个比较大的表作为测试表: SQL> CREATE TABLE T AS SELECT * FROM DBA_OBJECTS, DBA_SEQUENC...

Oracle查询语句简单回顾(二)

最近项目赶着提交测试,赶着上线。问题不断作为一个新人也着实为项目组长捏了一把汗。忙了一天,都是在修改之前的模块,一天下来感觉好像没做什么,看着其他人忙的抓狂,自己总有一丝愧疚感。下班回家了,写点sql...

oracle基础详解(二)oracle查询语句和数据排序

本文所以练习都是基于oracle自带提供的一个数据库进行的。数据库中包含员工表emp。部门信息表dept。员工工资工总表 下面是三个表的表结构: ...

Oracle分页查询语句

  • 2013-12-31 11:20
  • 150KB
  • 下载

oracle查询语句精典30题

  • 2012-10-20 14:52
  • 26KB
  • 下载

Oracle学习(一):基本操作和基本查询语句

文中以"--"开头的语句为注释,包含在"/* */"内的内容也为注释 1.知识点:可以对照下面的录屏进行阅读 SQL> --录屏工具spool,开始录制,并指定保存路径为c:\基本查询.txt ...

Oracle查询语句

  • 2013-04-26 11:36
  • 42KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)