`
zpx138332
  • 浏览: 46155 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类

oracle基础总结(三)

阅读更多

接着我们昨天总结的SQL查询介绍往下写了,昨天SQL查询介绍写到了条件查询,那

么我开始介绍排序查询

     4.排序查询:

          select语句中,可以使用ORDER BY子句实现对象查询的结果集进行排序,使用ORDER BY子句的语法形式如下:

        SELECT     *|{[DISTINCT] column|expression [alias],...}

FROM       table

[WHERE     condition(s)]

[ORDER BY  {column, expr, alias} [ASC|DESC]];

使用 ORDER BY 子句排序

ASCascend: 升序

DESCdescend: 降序

ORDER BY 子句在SELECT语句的结尾。

//查询员工信息按照部门的编号进行升序排列   默认的是 asc

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp order by deptno;

//查询员工信息按照部门的编号进行降序排列   使用desc

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp order by deptno desc;

//查询部门为20的员工信息并按照员工的编号进行升序排列

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp  where deptno=20 order by empno asc;

备注:可以与条件语句结合使用但order by子句放在最后

//查询员工信息并按照员工的部门编号升序并且编号进行降序排列

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp  order by deptno asc,empno desc;

备注:理解思路:首先查询员工信息按照部门的编号进行升序,然后每个部门中的员工按照员工的编号进行降序排列

     SELECT语句中使用ORDER BY子句时,受影响的只是查询结果集中的数据,它并没有影响到数据的实际储存位置。

通过学习可以完成 使用where子句、betweenlikeinnullnot orand等来过滤数据,也可以使用order by子句进行对查询结果排序数据。

5:分组查询:

        分组查询其实就是分组函数也可以叫做统计函数.分组函数作用于一组数据,并对一组数据返回一个值.

常见的分组函数有:

函数名称

函数描述

Count

返回找到的记录数

Min

返回一个数字列或计算列的最小值

Max

返回一个数字列或计算列的最大值

Sum

返回一个数字列或计算列总和

avg

返回一个数字列或计算列的平均值

分组函数的语法:

SELECT              [column,] group_function(column), ...

FROM                             table

[WHERE         condition]

[GROUP BY   column]

[ORDER BY    column];

//返回总记录数   //* 代表的是:一条记录

SQL> select count(*) from emp;

//返回comm不为空的总记录数

SQL> select count(comm) from emp;

//COUNT(DISTINCT expr) 返回 expr非空且不重复的记录总数

SQL> select count(distinct(sal)) from emp;

注意:组函数忽略空值

//返回所有员工的平均工资  

SQL> select avg(nvl(sal,0)) from emp;

注意:NVL函数使分组函数无法忽略空值

//返回员工编号最小值  

SQL> select min(empno) from emp;

//返回员工工资最大值

SQL> select max(sal) from emp;

//求该月本公司发出的工资总额

SQL> select sum(comm)+sum(sal) from emp;

SQL> select sum(nvl(sal,0)+nvl(comm,0)) from emp;

 

Group by子句

Group By语句从英文的字面意义上理解就是根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。 如果在查询的过程中需要按某一列的值进行分组,以统计该组内数据的信息时,就要使用group by子句。不管select是否使用了where子句都可以使用group by子句。

 

注意:group by子句一定要与分组函数结合使用,否则没有意义。

//求出每个部门的员工人数

SQL> select deptno,count(*) as "人数" from emp group by deptno;

//求出每个部门的员工的平均工资

SQL> select deptno,avg(nvl(sal,0)) from emp group by deptno;

//注意:group by 子句中的列不必包含在SELECT 列表中

SQL> select avg(nvl(sal,0)) from emp group by deptno;

 

//求出某个部门中相同职位的员工人数   group by 后可以跟多个分组的字段

SQL> select deptno,job,count(*) from emp group by deptno,job order by deptno;

 

非法使用组函数

所用包含于SELECT 列表中,而未包含于组函数中的列都必须包含于 GROUP BY 子句中。

举例:

SQL> select empno,count(job) from emp;

正确写法如下:

SQL> select empno,count(job) from emp group by empno;

1、              不能在 WHERE 子句中使用组函数(注意)。

SQL> select deptno from emp where count(job)>0 group by deptno;

备注:ORA-00934: 此处不允许使用分组函数

 

 

Having 子句

    HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 子句和 SELECT 语句交互的方式类似。WHERE 子句搜索条件在进行分组操作之前应用;而 HAVING 搜索条件在进行分组操作之后应用。HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。HAVING 子句可以引用选择列表中出现的任意项。

备注:having子句通常与group by子句结合使用

 

语法:

SELECT         column, group_function

FROM                           table

[WHERE       condition]

[GROUP BY group_by_expression]

[HAVING      group_condition]

[ORDER BY column];

//查询部门的员工人数大于五部门编号

SQL> select deptno,count(*) from emp group by deptno having count(*)>5;

 

备注:分组函数可以嵌套

 

总结:整个查询语句的语法格式如下:

SELECT         column, group_function(column)

FROM                           table

[WHERE       condition]

[GROUP BY group_by_expression]

 

      

 

 

SQL*Plus中使用函数

   下面我们开始介绍在SQL*Plus中使用函数,无论什么样的计算机语言,都提供了大大量的函数,使用这些函数可以大大提高计算机语言的运算、判断功能。在PL/SQL语言中,通过使用函数,可以大大增强SELECT语言操作数据库数据的功能。在oracle系统中,提供了字符串函数、数字函数、时间函数和转换函数。

一、字符串函数:

      字符串函数是Oracle系统中广泛使用的函数。在使用字符串函数时,其输入值一定是字符数据,其输出结果可以是字符类型的数据,也可以是数字类型的数据。下面试一些常用的字符串处理函数:

         LOWER:将字符串string的全部字母转换成小写

UPPER:将字符串string的全部字母转换成大写

INITCAP:将字符串string的首字母转换成大写

CONCAT:将俩个字符串连接成一个

SUBSTR:截取  (参数,开始,数目)

LENGTH:返回字符串的长度

INSTR:(参数,字母) 返回字母出现的位置

LPAD:(参数,长度,在前补齐参数字母)

 RPAD:(参数,长度,在后补齐参数字母)

TRIM

REPLACE:(参数,参数[,参数]:第一个参数操作数,第二是要查找的字符,第三个是替换的字符,如果没有第三个就删除查找的字符。

案例:

//查询名称为scott的员工信息 (不区分大小写)

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp  where lower(ename)='scott';

SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp  where upper(ename)='SCOTT';

//查询员工信息 把员工名称与工作连接在一起

SQL> select empno,concat(ename,job),mgr,hiredate,sal,comm,deptno from emp;

//查询员工信息 把员工名称与工作连接在一起

         SQL> select empno,concat(ename||'is work:',job),mgr,hiredate,sal,comm,deptno from emp;

//查询员工名称中含有O字符的位置

SQL> select empno,instr(ename,'O'),job,mgr,hiredate,sal,comm,deptno from emp;

//查询员工名称中含有O字符的位置并且求出了员工名称字符长度

SQL> select empno,instr(ename,'O'),length(ename),job,mgr,hiredate,sal,comm,deptno from emp;

//在查询上面结果中过滤出员工工作从第三字母开始为ERK员工信息

SQL> select empno,instr(ename,'O'),length(ename),job,mgr,hiredate,sal,comm,deptno from emp where substr(job,3)='ERK';

备注:当含有两个参数的时候,从开始位置直接到参数结束的结束为止

//在效果同上的同时指明了截取个数为3

         SQL> select empno,instr(ename,'O'),length(ename),job,mgr,hiredate,sal,comm,deptno from emp where substr(job,3,3)='ERK';

//查询员工信息  薪资是10位位数不够在左部分补*填充

SQL> select empno,ename,job,mgr,hiredate,LPAD(sal,10,'*'),comm,deptno from emp;

//查询员工信息  薪资是10位位数不够在右部分补*填充

SQL> select empno,ename,job,mgr,hiredate,RPAD(sal,10,'*'),comm,deptno from emp;

//查询员工信息  把员工名称中含有S字符去除掉

SQL> select empno,TRIM('S' from ename),job,mgr,hiredate,10,comm,deptno from emp;

等效于:

SQL> select empno,TRIM( both 'S' from ename),job,mgr,hiredate,10,comm,deptno from emp;

//查询员工信息  把员工名称中前面有S字符去除掉

SQL> select empno,TRIM( Leading 'S' from ename),job,mgr,hiredate,10,comm,deptno from emp;

//等效于

SQL> select empno,LTRIM( ename,'S'),job,mgr,hiredate,10,comm,deptno from emp;

//查询员工信息  把员工名称中后面有S字符去除掉

SQL> select empno,TRIM( trailing 'S' from ename),job,mgr,hiredate,10,comm,deptno from emp;

等效于:

SQL> select empno,RTRIM( ename,'S'),job,mgr,hiredate,10,comm,deptno from emp;

二、数字函数:

     当所检索的数据为数字数据类型是,可以使用数字函数进行数学计算。在Oracle系统中,PL/SQL语言支持一下数字函数:

      ROUND: 四舍五入

            ROUND(45.926, 2)               45.93

TRUNC:     截断

            TRUNC(45.926, 2)               45.92

MOD: 求余

            MOD(1600, 300)                 100

ABS:绝对值

CEIL:返回大于或等于value的最小整数

FLOOR:返回小于或等于value的最大整数

SQRT :返回value的平方根 负数无意义。

案例:

//四舍五入 结果为46

SQL> select round(45.56) from dual;

//绝对值 结果为45.56

SQL> select abs(-45.56) from dual;

//大于等于最小整数 结果为-45

SQL> select ceil(-45.56) from dual;

//小于等于最大整数 结果为-46

SQL> select floor(-45.56) from dual;

//求余数 结果为300

SQL> select mod(1800,500) from dual

//截取的数的操作数是正数的情况下:只操作小数位  结果为1800.11

SQL> select trunc(1800.11111,2) from dual;

//截取的数的操作数是负数的情况下:操作的是小数点之前的位,把操作位小数点之前的位数全部改写成0. 结果就是1000

SQL> select trunc(1899.11111,-3) from dual;

 

三、日期时间函数:

     日期也是数据库中使用比较频繁的一种数据。在oracle系统中,按照数字格式来储存日期数据。Oracle系统的日期格式默认为 DD-MON-YY。日期时间函数用来返回当前系统的当前日期和时间,以及对日期和时间类型的数据进行处理运算。在Oracle系统中常用的日期时间函数如下:

         add_months(date,count);在指定的日期上增加count个月

last_day(date);返回日期date所在月的最后一天<span la

  • 大小: 41.4 KB
分享到:
评论

相关推荐

    oracle的总结 很详细的 基础也有

    本文将基于标题和描述中的内容,对Oracle的基础知识、安装步骤以及SQL查询语句进行详尽的阐述。 首先,新安装的Oracle数据库的配置步骤至关重要。在安装完成后,需要通过Database Configuration Assistant(DBCA)...

    oracle 基础知识总结初学者必备

    ### Oracle基础知识总结初学者必备 Oracle数据库作为一款广泛使用的数据库管理系统,在企业和开发领域扮演着重要的角色。对于初学者而言,掌握其基础知识是非常必要的。本文将根据提供的内容进行深入解析,并结合...

    Oracle核心基础总结

    "Oracle核心基础总结"涵盖了Oracle数据库系统的基础知识,对于初学者和需要巩固基础的IT从业者来说,是非常宝贵的资源。以下是Oracle核心基础的一些关键知识点: 1. 数据库概念:了解数据库的基本构成,如表、索引...

    oracle基础总结

    系统的总结了oracle的基础知识,对oracle基础想补充的朋友应该很有帮助,语言简练,都是开发时常用到的知识

    Oracle 基础知识总结

    以下是对Oracle基础知识的详细总结: 第一章:Oracle概述 Oracle数据库是Oracle公司的产品,提供了一整套数据管理解决方案。它支持多种操作系统平台,如Windows、Linux、Unix等。Oracle采用SQL作为查询语言,并提供...

    oracle基础命令总结.docx

    以下是对文档中提到的Oracle基础命令的详细解释: 1. **数据泵语句**:Oracle数据泵(Data Pump)是一种高速数据传输机制,用于在数据库之间导入和导出数据。创建目录对象是为了指定数据泵操作的数据文件存放位置。...

    oracle 学习心得与总结

    以下是我对Oracle学习的一些心得和总结,主要聚焦于数据库对象,尤其是表及其约束。 1. **数据库对象**: 数据库对象是Oracle中的基本组成部分,包括表、视图、索引、存储过程、函数、触发器等。这些对象共同构成...

    oracle学习总结(适合刚学习oracle的人)

    本文将根据"oracle学习总结(适合刚学习oracle的人)"这一主题,深入探讨Oracle数据库的基础知识,帮助初学者建立起对Oracle的基本理解。 1. **Oracle简介**:Oracle数据库是由美国甲骨文公司开发的一款产品,它...

    oracle总结oracle总结面试必备

    掌握SQL的基础语法,如SELECT、INSERT、UPDATE、DELETE语句,以及联接(JOIN)、子查询、聚合函数(COUNT、SUM、AVG等)和分组(GROUP BY)等,是每个Oracle开发者的基本功。 二、创建表 创建表是数据库设计的第一...

    oracle学习心得总结

    本文将根据提供的文档内容,总结和扩展Oracle数据库的基础知识点,帮助初级程序员更好地理解和掌握Oracle。 #### 一、Oracle 用户管理 1. **创建用户** - 命令格式:`CREATE USER 用户名 IDENTIFIED BY 密码;` ...

    oracle 笔记总结

    一、Oracle数据库基础 Oracle数据库采用SQL(结构化查询语言)作为其主要的数据交互方式,支持ACID(原子性、一致性、隔离性和持久性)事务特性,确保数据的完整性和一致性。Oracle数据库系统由多个组件构成,包括...

    oracle个人总结的基础知识

    本总结将深入探讨Oracle基础知识,包括过程、游标、包、视图以及导入导出等关键概念。 首先,让我们关注“过程”。在Oracle中,过程是一系列SQL语句和PL/SQL代码的集合,它们可以执行特定任务。过程可以接受参数,...

    oracle数据库基础命令总结(纯手工打造)

    本文将深入讲解Oracle数据库的基础命令,涵盖数据库的基本概念、关系数据库模型、数据操作语言(DDL、DML、DCL)以及数据库设计方法。 首先,理解数据库基础至关重要。数据库是一个组织和存储数据的系统,它允许...

    oracle精品实例,练习总结

    1. **SQL语言**:Oracle数据库的基础是SQL(结构化查询语言),用于数据查询、更新、插入和删除。在实例中,我们可能看到如何使用SELECT语句进行复杂查询,JOIN操作连接多个表,以及如何使用WHERE子句进行条件筛选。...

    Oracle基础知识总结_oracle_

    Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性...

    oracle 基础知识整理

    总结,Oracle基础知识涵盖了数据库架构、数据类型、SQL操作、表空间管理以及备份恢复策略等多个方面。掌握这些基础知识对于理解和使用Oracle数据库至关重要,有助于构建高效稳定的企业级数据环境。

    oraclePPT总结及笔记

    - 数据模型:介绍三种主要的数据模型——层次模型、网状模型和关系模型,其中Oracle数据库基于关系模型。 - SQL语言:SQL(结构化查询语言)是与Oracle交互的主要工具,用于查询、插入、更新和删除数据。 2. **...

    oracle个人总结

    Oracle数据库是世界上最广泛使用的数据库管理系统之一,主要用于存储和管理...这些是Oracle数据库的基础知识,对于理解和操作Oracle数据库至关重要。通过深入学习和实践,可以更好地掌握Oracle的各种特性和高级功能。

Global site tag (gtag.js) - Google Analytics