`
z_xiaofei168
  • 浏览: 198020 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL中的Order by 子句(三)

阅读更多

SQL中的Order by 子句(三)

Order by 子句:

使用 ORDER BY 子句排序

l        ASCascend: 升序

l        DESCdescend: 降序

l        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     *|{[DISTINCT] column|expression [alias],...}

FROM       table

[WHERE     condition(s)]

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

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

 

 

 

Sql--plus函数:

字符串函数是oracle使用最广泛的一种函数.

LOWER:小写

UPPER:大写

INITCAP:首字母大写

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;

 

 

数字函数:

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 中的日期型数据实际含有两个值: 日期和时间。默认的日期格式是 DD-MON-RR.日期时间函数用来返回当前系统的日期和时间、以及对日期和时间类型的数据进行处理运算。

 

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

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

months_between(date1,dates);返回date1date2之间间隔多少个月

new_time(date,this,other);将时间datethis时区转换成other时区

next_day(day,day);返回指定日期或最后一的第一个星期几的日期,这里day为星期几

sysdate();获取系统的当前日期

current_timestamp();获取当前的时间和日期值

round:日期的四舍五入

trunc 日期的截取

 

日期的数学运算:

l        在日期上加上或减去一个数字结果仍为日期。

l        两个日期相减返回日期之间相差的天数

l        可以用数字除24来向日期中加上或减去小时。

 

//获取系统的当前时间 显示的格式采用默认格式 显示结果:07-4 -11 11.15.38.390000 上午 +08:00

SQL> select current_timestamp from dual;

//获取系统的当前日期值  显示结果:2011-4-7 11

SQL> select sysdate from dual;

//为当前日期加上3个月 显示的结果:2011-7-7 11:18:36

select add_months(sysdate,3) from dual;

//返回当前月的最后一天 显示的结果:2011-4-30 11:19:4

select last_day(sysdate) from dual;

//返回两个日期之间的间隔月是几: 结果为:4

SQL> select months_between(add_months(sysdate,4),sysdate) from dual;

//GMT时区转换成AST时区的日期结果

 SQL> select new_time(sysdate,'GMT','AST') from dual;

//返回下一个星期一的日期值   必须写成星期

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

分享到:
评论

相关推荐

    为什么SQL不许在视图定义ORDER BY子句

    SQL Server之所以不允许在视图定义中使用ORDER BY子句是为了遵守ANSI SQL-92标准。因为对该标准的原理分析需要对结构化查询语言(SQL)的底层结构和它所基于的数学理论进行讨论,我们不能在这里对它进行充分的解释。...

    【SQL基础(二)】【SQL WHERE 子句+引号的使用+SQL AND & OR 运算符+SQL ORDER BY 子句】

    文章目录SQL WHERE 子句引号的使用SQL AND & OR 运算符SQL ORDER BY 子句 SQL WHERE 子句 WHERE 子句用于规定选择的标准。 如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。 语法 SELECT 列名称 ...

    Linux运维-运维课程d2-MySQL基本SQL语句(下)-18-ORDER BY子句.mp4

    Linux运维-运维课程d2-MySQL基本SQL语句(下)-18-ORDER BY子句.mp4

    PHP中ORDER BY子句的详细用法教程

    我们已经看到SQL SELECT命令来获取数据从MySQL表。当选择行,MySQL服务器是自由...这里是通用的SQL的SELECT命令的语法,ORDER BY子句从MySQL表中的数据进行排序: 您可以根据返回的结果的任何字段,提交将被列出。

    Sql 语句详解

    6. SQL ORDER BY 子句 9 7. SQL INSERT INTO 语句 11 8. SQL UPDATE 语句 12 9. SQL DELETE 语句 13 10. SQL TOP 子句 13 11. SQL LIKE 操作符 15 12. SQL 通配符 16 13. SQL IN 操作符 18 14. SQL BETWEEN 操作符 ...

    西南交通大学第四章-数据库作业.docx

    一. 简答题(每小题5分,共60分) 1. SQL包括哪三个子语言?...From子句,where子句,group by子句,having子句,select子句,order by子句; 执行顺序:from->where->group by->having->->select->oeder by。

    mysql中提高Order by语句查询效率的两个思路分析

    因为可能需要对数据库的记录进行重新排序。在这篇文章中,笔者就谈谈提高Order By语句查询效率的两个...在条件允许的情况下,笔者建议最好使用一个索引来满足Order By子句。如此的话,就可以避免额外的排序工作。这里笔

    SQL Server2008 Order by在union子句不可直接使用的原因详解

    主要介绍了SQL Server2008 Order by在union子句不可直接使用的原因详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    LINQ to SQL语句之Join和Order By

    LINQ to SQL语句之Join和Order By部分代码 语句描述:这个例子在From子句中使用外键导航筛选在西雅图的雇员,同时列出其所在地区。这条生成SQL语句为: SELECT [t0].[FirstName], [t0].[LastName], [t2]....

    0xAiKang#Note#如何解决“ORDER BY子句不在SELECT列表中”导致MySQL 5.7带有SELECT DIS

    前言记录一个最近遇到的Mysql 问题。问题描述:在本地项目中,部分SQL 语句执行起来,总是会报一个错。而同样的SQL,在线上的服务器中执行起来没有任何问题。

    Sequelize中用group by进行分组聚合查询

    GROUP BY子句要和聚合函数配合使用才能完成分组查询,在SELECT查询的字段中,如果没有使用聚合函数就必须出现在ORDER BY子句中。分组查询后,查询结果为一个或多个列分组后的结果集。 GROUP BY语法 SELECT 列名, ...

    onlinedb_v2_210804_l.sql

    onlinedb_v2_210804_l.sql

    SQL语法手册SQL语法手册

    SQL语法手册 Select 用途 从指定表中取出指定的列的数据 语法:SELECT column_name(s) FROM table_name 解释: ...[ ORDER BY order_expression [ ASC | DESC ] ] 例: “Persons” 表中的数据有

    Linux运维-运维课程d2-MySQL基本SQL语句(下)-19-LIMIT子句.mp4

    Linux运维-运维课程d2-MySQL基本SQL语句(下)-18-ORDER BY子句.mp4

    SQL的基本教程.txt

    学习使用ORDER BY子句对查询结果进行排序。 了解GROUP BY和HAVING子句的用法,用于对查询结果进行分组和过滤。 三、数据操作 学习如何使用INSERT INTO语句向数据库表中插入新数据。 掌握UPDATE语句的用法,...

    数据库实验(1-4)SQL Server 2012数据库系统

    用GR0UP BY子句实现分组查询的方法 连接查询的方法 实验三 数据更新和视图(4学时) 一、实验目的: (1) 掌握SQL语言的数据更新功能 update 语句用于对表进行更新 delete 语句用于对表进行删除 insert ...

    SQL循序渐进,SQL入门基础

    SQL循序渐进(13)------ORDER BY子句 SQL循序渐进(14)------组合条件和布尔运算符 SQL循序渐进(15)------IN 和 BETWEEN 条件运算符 SQL循序渐进(16)------数学运算符 SQL循序渐进(17)------JOIN子句 SQL循...

    array-sql-filter:使用SQL的where子句来过滤对象数组

    orderBy()-模拟SQL ORDER BY。 joinOn()-模拟SQL内部联接。 (实验性的)将连接字段(或连接表达式)作为第一个参数,将要连接的数组作为下一个参数。 为了进行测试,在项目中包含 ###例子 var employee ...

    sql语句生成器+支持各大数据库+说明书

    排序(Order By) 条件(Where) 分组(Group By) 分组条件(Having) 计算字段 SQL查询表 SQL查询子句 丰富的函数 表别名 字段别名(包括计算字段和非计算字段) 联合(Union,对于Oracle 支持Union All,Minus,Intersect) ...

Global site tag (gtag.js) - Google Analytics