Restricting And Sorting Data

    技术2022-05-11  65

                                                             限制和排列数据结果集  #Objective   -After completing this lesson,you should be able to do the following:      · Limit the rows retrieved by a query      · Sort the rows retrieved by a query  #Limiting the Rows Selected   -Restrict the rows returned by using the where clause.限制行的返回用where字句   -The WHERE clause follows the FROM clause.where字句位于FROM字句的后面  #例:SQL> select *   2  from scott.emp  3  where ename like 'A%';

         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO---------- ---------- --------- ---------- ---------- ---------- ---------- ----------      7499 ALLEN      SALESMAN        7698 20-2月 -81       1600        300         30      7876 ADAMS      CLERK           7788 23-5月 -87       1100                    20

       #Character Strings and Dates    -Character strings and date values are enclosed in single quotation marks     字符串和日期型的值必须鉴定在一个单引号中。    -Character values are case sensitive,and date values are format sensitive.     字符值区分大小写,日期值也区分格式    -The default date format is DD-MON-RR      日期的默认格式是DD-MON-RR    #Comparison Conditions     我们经常引入where条件的比较表达式    --------------|----------------------------    Operator   |    Meaning    --------------|----------------------------          =           |   Equal to    --------------|----------------------------          >          |   Greater than of equal to    --------------|----------------------------          >=        |   Greater than or less than    --------------|----------------------------          <          |   Less than     --------------|----------------------------          <=        |   Less than or equal to    --------------|----------------------------          <>        |   Not equal to    --------------|----------------------------例:Using Case SensitiveSQL> select * from emp  2  where ename like 's%';

    未选定行

    SQL> c /s/S/  2* where ename like 'S%'SQL> run  1  select * from emp  2* where ename like 'S%'

         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO---------- ---------- --------- ---------- ---------- ---------- ---------- ----------      7369 SMITH      CLERK           7902 17-12月-80        800                     20      7788 SCOTT      ANALYST         7566 19-4月 -87       3000                    20

    SQL> 例:Using Comparison Conditions SQL> select * from emp  2  where empno>=7902;

         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO---------- ---------- --------- ---------- ---------- ---------- ---------- ----------      7902 FORD       ANALYST         7566 03-12月-81       3000                    20      7934 MILLER     CLERK           7782 23-1月 -82       1300                    10

       #Other  Comparison Conditions      --------------|----------------------------       Operator |    Meaning     --------------|----------------------------     between...and| between two value(inclusive),    --------------|----------------------------     in(set)      | Match any of a list of values    --------------|----------------------------     like           | Match a character pattern    --------------|----------------------------     is null       | is a null value    --------------|----------------------------    注意:between...and的取值范围包括两端的端点,如between 10 and 50 意思是说         10<=x=<50.         in(set)是用于取结果中的没有规律的值(离散值).         like用于字符匹配上面曾用到过.         is null用于匹配值是否为null.例:Using Between...and ConditionSQL> select * from emp  2  where empno between 7566 and 7788;

         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO---------- ---------- --------- ---------- ---------- ---------- ---------- ----------      7566 JONES      MANAGER         7839 02-4月 -81       2975                    20      7654 MARTIN     SALESMAN        7698 28-9月 -81       1250       1400         30      7698 BLAKE      MANAGER         7839 01-5月 -81       2850                    30      7782 CLARK      MANAGER         7839 09-6月 -81       2450                    10      7788 SCOTT      ANALYST         7566 19-4月 -87       3000                    20

    例:Using In(set) ConditionSQL> select * from emp  2  where sal in(800,5000,1100);

         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO---------- ---------- --------- ---------- ---------- ---------- ---------- ----------      7369 SMITH      CLERK           7902 17-12月-80        800                    20      7839 KING       PRESIDENT            17-11月-81       5000                    10      7876 ADAMS      CLERK           7788 23-5月 -87       1100                    20

    例:Using Like Condition   -Use the like condition to perform wildcard searches of valid    search string values.   -Search conditions can contain  either  literal characters of    number:       ·% denotes zero or many characters.       ·_ denotes one character.SQL> select * from emp  2  where ename like 'WAR_';

         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO---------- ---------- --------- ---------- ---------- ---------- ---------- ----------      7521 WARD       SALESMAN             22-2月 -81       1250        500         30

    例:Using Is Null ConditionSQL> select * from emp  2  where ename is null;

         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO---------- ---------- --------- ---------- ---------- ---------- ---------- ----------      7900            CLERK           7698 03-12月-81        950                    30

        #Logical Condition    --------------|-------------------------------------------------   Operator   |    Meaning    --------------|-------------------------------------------------         and       | Return TRUE if Both component condition are true    --------------|-------------------------------------------------         or          | Return TRUE if either component codition is true    --------------|-------------------------------------------------         not        | Return TRUE if the following codition is false    --------------|-------------------------------------------------     

    例:Using The AND OperatorSQL> select * from emp  2  where job='CLERK' and empno<7788;

         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO---------- ---------- --------- ---------- ---------- ---------- ---------- ----------      7369 SMITH      CLERK           7902 17-12月-80        800                    20

    例:Using The OR OperatorSQL> select * from emp  2  where mgr is null or empno<7500;

         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO---------- ---------- --------- ---------- ---------- ---------- ---------- ----------      7369 SMITH      CLERK           7902 17-12月-80        800                    20      7499 ALLEN      SALESMAN        7698 20-2月 -81       1600        300         30      7521 WARD       SALESMAN             22-2月 -81       1250        500         30      7839 KING       PRESIDENT            17-11月-81       5000                    10

    例:Using The  NOT OperatorSQL> select * from emp  2  where not empno>7500;

         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO---------- ---------- --------- ---------- ---------- ---------- ---------- ----------      7369 SMITH      CLERK           7902 17-12月-80        800                    20      7499 ALLEN      SALESMAN        7698 20-2月 -81       1600        300         30

       #Rules of Precedence    -------------- |-------------------------------------------------  Order Evaluated |   Operator    --------------|-------------------------------------------------         1           |   Arithmetic Operator    --------------|-------------------------------------------------         2           |   Concatenation Operator    --------------|-------------------------------------------------         3           |   Comparion conditions    --------------|-------------------------------------------------         4           |   IS[NOT] NULl,LIKE,[NOT] IN     --------------|-------------------------------------------------          5           |   [NOT] BETWEEN     --------------|-------------------------------------------------         6           |   NOT logical condition     --------------|-------------------------------------------------         7           |   AND logical condition     --------------|-------------------------------------------------         8           |   OR logical condition     --------------|-------------------------------------------------    #ORDER BY Clause    -Sort rows with the ORDER BY clause       ·ASC:ascending order,default       ·DESC:dascending order    -The ORDER BY clause comes last in the SELECT     statement.例:Using Ascending OrderSQL> select * from emp  2  where job like 'C%'  3  order by empno;

         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO---------- ---------- --------- ---------- ---------- ---------- ---------- ----------      7369 SMITH      CLERK           7902 17-12月-80        800                    20      7876 ADAMS      CLERK           7788 23-5月 -87       1100                    20      7900            CLERK           7698 03-12月-81        950                    30      7934 MILLER     CLERK           7782 23-1月 -82       1300                    10例:Using Dascending OrderSQL>  select * from emp  2   where job like 'C%'  3  order by empno desc;

         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO---------- ---------- --------- ---------- ---------- ---------- ---------- ----------      7934 MILLER     CLERK           7782 23-1月 -82       1300                    10      7900            CLERK           7698 03-12月-81        950                    30      7876 ADAMS      CLERK           7788 23-5月 -87       1100                    20      7369 SMITH      CLERK           7902 17-12月-80        800                    20例:Sorting By Column alias注意:在Oracle环境里别名(alias)可以用于排序,但是不能用它代替column进行     任何的运算.SQL> select empno id,ename,job from emp  2  where job like 'C%'  3  order by id;

            ID ENAME      JOB---------- ---------- ---------      7369 SMITH      CLERK      7876 ADAMS      CLERK      7900            CLERK      7934 MILLER     CLERK例:Sorting by Multiple Columns   ·The order of ORDER BY list is the order of sort.   ·You can sort by a column that is not in the SELECT list.SQL> select * from scott.emp  2  where job like 'S%'  3  order by sal,empno desc;

         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO---------- ---------- --------- ---------- ---------- ---------- ---------- ----------      7654 MARTIN     SALESMAN        7698 28-9月 -81       1250       1400         30      7521 WARD       SALESMAN             22-2月 -81       1250        500         30      7844 TURNER     SALESMAN        7698 08-9月 -81       1500          0         30      7499 ALLEN      SALESMAN        7698 20-2月 -81       1600        300         30 在这个例子我们可以知道结果集先按照SAL排序在第一.二行SAL是相等的又 按照empno进行降序排列 

                                 Summaryin this lesson ,you should have learned how to:  ·Use the WHERE clause to restrict rows of output     -Use the comparion conditions     -Use the BETWEEN,IN,LIKE,and NUll conditions     -Apply the logical AND,OR,and NOT operators  ·Use the ORDER BY clause to sort rows of outout. 


    最新回复(0)