mysql与oracle的升序与降序_oracle 查询结果的排序,ASC/DESC,升序,降序,多列排序,ORDER BY...

oracle 查询结果的排序,ASC/DESC,升序,降序,多列排序,ORDER BY,一些练习题

关键字: oracle 查询 结果 排序 asc desc 升序降序 多列 order by一些 练习题

查询结果的排序

显示EMP表中不同的部门编号。

如果要在查询的同时排序显示结果,可以使用如下的语句:

Sql代码

SELECT 字段列表 FROM 表名 WHERE 条件

ORDER BY 字段名1 [ASC|DESC][,字段名2 [ASC|DESC]...];

SELECT 字段列表 FROM 表名 WHERE 条件

ORDER BY 字段名1 [ASC|DESC][,字段名2 [ASC|DESC]...];

ORDER BY从句后跟要排序的列。ORDER BY 从句出现在SELECT语句的最后。

排序有升序和降序之分,ASC表示升序排序,DESC表示降序排序。如果不指明排序顺序,默认的排序顺序为升序ASC。如果要降序,必须书写DESC关键字

1.升序排序

【训练1】  查询雇员姓名和工资,并按工资从小到大排序。

输入并执行查询:

Sql代码

SELECT ename, sal FROM emp ORDER BY sal;

SELECT ename, sal FROM emp ORDER BY sal;

执行结果为:

Sql代码

ENAME            SAL

------------- --------------------

SMITH             800

JAMES             950

ENAME            SAL

------------- --------------------

SMITH             800

JAMES             950

注意:若省略ASC和DESC,则默认为ASC,即升序排序。

2.降序排序

【训练2】  查询雇员姓名和雇佣日期,并按雇佣日期排序,后雇佣的先显示。

输入并执行查询:

Sql代码

SELECT ename,hiredate FROM emp ORDER BY hiredate DESC;

SELECT ename,hiredate FROM emp ORDER BY hiredate DESC;

结果如下:

Sql代码

ENAME       HIREDATE

------------- -----------------------

ADAMS       23-5月 -87

SCOTT       19-4月 -87

MILLER      23-1月 -82

JAMES       03-12月-81

FORD        03-12月-81

ENAME       HIREDATE

------------- -----------------------

ADAMS       23-5月 -87

SCOTT      19-4月 -87

MILLER     23-1月 -82

JAMES      03-12月-81

FORD       03-12月-81

注意: DESC表示降序排序,不能省略。

3.多列排序

可以按多列进行排序,先按第一列,然后按第二列、第三列......。

【训练3】  查询雇员信息,先按部门从小到大排序,再按雇佣时间的先后排序。

输入并执行查询:

Sql代码

SELECT ename,deptno,hiredate FROM emp ORDER BY deptno,hiredate;

SELECT ename,deptno,hiredate FROM emp ORDER BY deptno,hiredate;

结果如下:

Sql代码

ENAME       DEPTNO HIREDATE

---------------- ----------------- ---------------

CLARK                  10 09-6月 -81

KING                   10 17-11月-81

MILLER                 10 23-1月 -82

SMITH                  20 17-12月-80

JONES                  20 02-4月 -81

FORD                   20 03-12月-81

SCOTT                  20 19-4月 -87

ENAME       DEPTNO HIREDATE

---------------- ----------------- ---------------

CLARK                  10 09-6月 -81

KING                   10 17-11月-81

MILLER                 10 23-1月 -82

SMITH                  20 17-12月-80

JONES                  20 02-4月 -81

FORD                   20 03-12月-81

SCOTT                  20 19-4月 -87

说明:该排序是先按部门升序排序,部门相同的情况下,再按雇佣时间升序排序。

4.在排序中使用别名

如果要对计算列排序,可以为计算列指定别名,然后按别名排序。

【训练4】  按工资和工作月份的乘积排序。

输入并执行查询:

Sql代码

SELECT empno, ename, sal*Months_between(sysdate,hiredate) AS total FROM emp

ORDER BY total;

SELECT empno, ename, sal*Months_between(sysdate,hiredate) AS total FROM emp

ORDER BY total;

执行结果为:

Sql代码

EMPNO ENAME         TOTAL

------------ ------------- ----------------------

7876    ADAMS       221526.006

7369    SMITH       222864.661

7900    JAMES       253680.817

7654   MARTIN      336532.484

EMPNO ENAME         TOTAL

------------ ------------- ----------------------

7876    ADAMS       221526.006

7369    SMITH      222864.661

7900    JAMES      253680.817

7654   MARTIN      336532.484

sysdate获取当前日期。

练习题:

1.SQL语言中用来创建、删除及修改数据库对象的部分被称为:

A. 数据库控制语言(DCL)

B. 数据库定义语言(DDL)

C. 数据库操纵语言(DML)

D. 数据库事务处理语言

2.执行以下查询,表头的显示为:

Sql代码

SELECT sal "Employee Salary" FROM emp

SELECT sal "Employee Salary" FROM emp

A. EMPLOYEE SALARY B. employee salary

C. Employee Salary D. "Employee Salary“

3.执行如下两个查询,结果为:

Sql代码

SELECT ename name,sal salary FROM emp order by salary;

SELECT ename name,sal "SALARY" FROM emp order by sal ASC;

SELECT ename name,sal salary FROM emp order by salary;

SELECT ename name,sal "SALARY" FROM emp order by sal ASC;

A. 两个查询结果完全相同

B. 两个查询结果不相同

C. 第一个查询正确,第二个查询错误

D. 第二个查询正确,第一个查询错误

4.参考本章的emp表的内容执行下列查询语句,出现在第一行上的人是:

Sql代码

SELECT ename FROM emp WHERE deptno=10 ORDER BY sal DESC;

SELECT ename FROM emp WHERE deptno=10 ORDER BY sal DESC;

A. SMITH B. KING

C. MILLER D. CLARK

5.哪个函数与||运算有相同的功能:

A. LTRIM B. CONCAT

C. SUBSTR D. INSTR

6.执行以下语句后,正确的结论是:

Sql代码

SELECT empno,ename FROM emp WHERE hiredateSELECT empno,ename FROM emp WHERE hiredateA. 显示给定日期后100天以内雇佣的雇员信息

B. 显示给定日期前100天以内雇佣的雇员信息

C. 显示给定日期100天以后雇佣的雇员信息

D. 显示给定日期100天以前雇佣的雇员信息

7.执行以下语句出错的行是:

Sql代码

SELECT deptno,max(sal) FROM emp

WHERE job IN('CLERK','SALEMAN','ANALYST')

GROUP BY deptno

HAVING sal>1500;

SELECT deptno,max(sal) FROM emp

WHERE job IN('CLERK','SALEMAN','ANALYST')

GROUP BY deptno

HAVING sal>1500;

A. 第一行 B. 第二行

C. 第三行 D. 第四行

8.执行以下语句出错的行是:

Sql代码

SELECT deptno,max(avg(sal))

FROM emp

WHERE sal>1000

Group by deptno;

SELECT deptno,max(avg(sal))

FROM emp

WHERE sal>1000

Group by deptno;

A. 第一行 B. 第二行

C. 第三行 D. 第四行

9.执行以下语句出错的行是:

Sql代码

SELECT deptno,dname,ename,sal

FROM emp,dept

WHERE emp.deptno=dept.deptno

AND sal>1000;

SELECT deptno,dname,ename,sal

FROM emp,dept

WHERE emp.deptno=dept.deptno

AND sal>1000;

A. 第一行 B. 第二行

C. 第三行 D. 第四行

10. 以下语句出错,哪种改动能够正确执行:

Sql代码

SELECT   deptno, max(sal)

FROM emp

GROUP BY deptno

WHERE   max(sal)>2500;

SELECT   deptno, max(sal)

FROM emp

GROUP BY deptno

WHERE   max(sal)>2500;

A. 将WHERE和GROUP BY 语句顺序调换一下

B. 将WHERE max(sal)>2500语句改成HAVING max(sal)>2500

C. 将WHERE max(sal)>2500语句改成WHERE sal>2500

D. 将WHERE max(sal)>2500语句改成HAVING sal>2500

11. 以下语句的作用是:

Sql代码

SELECT ename,sal FROM emp

WHERE sal

SELECT ename,sal FROM emp

WHERE sal

A. 显示工资低于1000元的雇员信息

B. 将雇员工资小于1000元的工资增加1000后显示

C. 显示超过最低工资1000元的雇员信息

D. 显示不超过最低工资1000元的雇员信息

12. 以下语句的作用是:

Sql代码

SELECT  job FROM emp WHERE deptno=10

MINUS

SELECT  job FROM emp WHERE deptno=20;

SELECT  job FROM emp WHERE deptno=10

MINUS

SELECT  job FROM emp WHERE deptno=20;

A. 显示部门10的雇员职务和20的雇员职务

B. 显示部门10和部门20共同的雇员职务

C. 显示部门10和部门20不同的雇员职务

D. 显示在部门10中出现,在部门20中不出现的雇员职务

阅读(19598) | 评论(1) | 转发(1) |

给主人留下些什么吧!~~

f55af6c25e552e718c934baa56bfcc14.png

太太团

评论热议

请登录后评论。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值