• 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 hiredate<to_date('04-11月-1980')-100  <="" div="">
     
    SELECT empno,ename FROM emp WHERE hiredate<to_date('04-11月-1980')-100< div="">
    A. 显示给定日期后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 min(sal) FROM emp)+1000; 
     
    SELECT ename,sal FROM emp
            WHERE sal<(SELECT min(sal) FROM emp)+1000;
    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中不出现的雇员职务 
  • 相关阅读:
    Linux socket编程 服务器 客户端
    嵌入式编程 相关 细节 收集
    Linux内核运行机制学习笔记
    Button驱动学习
    LED驱动学习
    C#修改IIS匿名账号的密码问题
    数据库自增字段的获取
    VC头文件的顺序 以及一些常见错误的常见处理方式
    WIN8 更新CD KEY
    linux下 lvm 磁盘扩容
  • 原文地址:https://www.cnblogs.com/JSWBK/p/4992260.html
Copyright © 2020-2023  润新知