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

发布时间:2023-04-29 09:35:58

[color=red]查询结果排序[/color] 在EMP表中显示不同的部门编号。 如果您想在查询时对结果进行排序显示,您可以使用以下句子:

SELECT 字段列表 FROM 表名 WHERE 条件ORDER BY 字段名1 [ASC|DESC][,字段名2 [ASC|DESC]...];

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

排序可分为升序和降序,ASC表示升序,DESC表示降序。[color=red]默认排序顺序为ASC[/color]。要降序,必须写DESC关键词

1.升序排序

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

输入并执行查询:

SELECT ename, sal FROM emp ORDER BY sal;

执行结果如下:

ENAME            SAL------------- --------------------SMITH             800JAMES             950

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

2.降序排序

【训练2】 查询员工姓名和就业日期,并根据就业日期进行排序,然后先显示就业情况。

输入并执行查询:

SELECT ename,hiredate FROM emp ORDER BY hiredate DESC;

结果如下:

ENAME       HIREDATE------------- -----------------------ADAMS    23-5月 -87SCOTT      19-4月 -87MILER     23-1月 -82JAMES      03-12月-81FORD       03-12月-81

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

[color=red]3.多列排序[///color]

可按多列排序,先按第一列,再按第二列、第三列排序..。

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

输入并执行查询:

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

结果如下:

ENAME       DEPTNO HIREDATE---------------- ----------------- ---------------CLARK              10 09-6月 -81KING                10 17-11月-81MILER              10 23-1月 -82SMITH               20 17-12月-80JONES               20 02-4月 -81FORD               20 03-12月-81SCOTT               20 19-4月 -87

说明:这个排名是先按部门升级排序,然后按雇佣时间升级。

4.在排序中使用别名

若要对计算列进行排序,可为计算列指定别名,然后按别名进行排序。

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

输入并执行查询:

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

执行结果如下:

EMPNO ENAME         TOTAL------------ ------------- ----------------------    7876ADAMS     221526.006    7369 SMITH      222864.661    7900 JAMES      253680.817    7654 MARTIN    336532.484

sysdate获取当前日期。

[color=red]练习:[//color]

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

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

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

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

D. 数据库事务处理语言

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

SELECT sal "Employee Salary" FROM emp

A. EMPLOYEE SALARY B. employee salary

C. Employee Salary D. "Employee Salary“

3.结果如下:

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表的内容执行以下查询句,出现在第一行的人是:

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.在执行以下句子后,正确的结论是:

SELECT empno,ename FROM emp WHERE hiredate<to_date('04-11月-1980')-100

A. 显示给定日期后100天内雇佣的员工信息

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

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

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

7.执行以下句子的错误行为:

SELECT deptno,max(sal) FROM emp      WHERE job IN('CLERK','SALEMAN','ANALYST')     GROUP BY deptno      HAVING sal>1500;

A. 第一行 B. 第二行

C. 第三行 D. 第四行

8.执行以下句子的错误行为:

SELECT deptno,max(avg(sal)) FROM emp WHERE sal>1000Group by deptno;

A. 第一行 B. 第二行

C. 第三行 D. 第四行

9.执行以下句子的错误行为:

SELECT deptno,dname,ename,sal FROM emp,deptWHERE emp.deptno=dept.deptnoAND sal>1000;

A. 第一行 B. 第二行

C. 第三行 D. 第四行

10. 哪些变化可以正确执行以下句子的错误:

SELECT   deptno, max(sal)FROM empGROUP BY deptnoWHERE   max(sal)>2500;

A. WHERE和GROUP BY 交换句子顺序

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

C. WHERE max(sal)>2500语句改为WHEREE sal>2500

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

11. 以下句子的作用如下:

SELECT ename,sal FROM empWHERE sal<(SELECT min(sal) FROM emp)+1000;

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

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

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

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

12. 以下句子的作用如下:

SELECT  job FROM emp WHERE deptno=10MINUSELECT  job FROM emp WHERE deptno=20;

A. 显示部门10个员工职位和20个员工职位

B. 显示10个部门和20个部门的共同员工职位

C. 显示部门10和部门20不同的员工岗位

D. 显示出现在部门10中,没有出现在部门20中。

上一篇 基于ssm分布式开发实现的电商项目(聚合工程)
下一篇 mySql数据库 forUpdate 实战总结

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题