Restricting and Sorting Data
ObjectivesAfter completing this lesson, you should be able to do the following:Limit the rows retrieved by a querySort the rows retrieved by a query
Limiting Rows Using a SelectionEMP EMPNO ENAME JOB		 ...  DEPTNO     7839KINGPRESIDENT107698BLAKEMANAGER307782CLARKMANAGER107566JONESMANAGER20  ..."…retrieve allemployeesin department 10"EMP EMPNO ENAME JOB		 ...  DEPTNO     7839KINGPRESIDENT107782CLARKMANAGER107934MILLERCLERK10
Limiting Rows SelectedRestrict the rows returned by using the WHERE clause.The WHERE clause follows the FROM clause.SELECT		[DISTINCT] {*| column [alias], ...}FROM table[WHEREcondition(s)];
Using the WHERE ClauseSQL> SELECT ename, job, deptno2  FROM   emp3  WHERE  job='CLERK';ENAME      JOB          DEPTNO---------- --------- ---------JAMES      CLERK            30SMITH      CLERK            20ADAMS      CLERK            20MILLER     CLERK            10
Character Strings and DatesCharacter 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-YY.SQL> SELECTename, job, deptno2  FROM emp3  WHEREename = 'JAMES';
Comparison OperatorsOperator=>      >=	<      <=	<>MeaningEqual toGreater than Greater than or equal to Less than Less than or equal toNot equal to
Using the Comparison OperatorsSQL> SELECT ename, sal, comm2  FROM   emp3  WHERE  sal<=comm;ENAME            SAL      COMM---------- --------- ---------MARTIN          12501400
Other Comparison OperatorsOperatorBETWEEN...AND...IN(list)LIKEIS NULLMeaningBetween two values (inclusive)	Match any of a list of values Match a character pattern Is a null value
Using the BETWEEN OperatorLowerlimitHigherlimitUse the BETWEEN operator to display rows based on a range of values.SQL> SELECTename, sal2  FROM emp3  WHEREsal BETWEEN 1000 AND 1500;ENAME            SAL---------- ---------MARTIN          1250TURNER          1500WARD            1250ADAMS           1100MILLER          1300
Using the IN OperatorUse the IN operator to test for values in a list.SQL> SELECTempno, ename, sal, mgr2  FROM emp3  WHEREmgr IN (7902, 7566, 7788);    EMPNO ENAME            SAL       MGR--------- ---------- --------- ---------7902 FORD            300075667369 SMITH            80079027788 SCOTT           300075667876 ADAMS           11007788
Using the LIKE OperatorUse the LIKE operator to perform wildcard searches of valid search string values.
Search conditions can contain either literal characters or numbers.
% denotes zero or many characters.
 _ denotes one character.SQL> SELECTename2  FROM emp3  WHEREename LIKE 'S%';
Using the LIKE OperatorYou can combine pattern-matching characters.You can use the ESCAPE identifier to search for "%" or "_".SQL> SELECTename2  FROMemp3  WHEREename LIKE '_A%';ENAME---------- MARTINJAMES   WARD
Using the IS NULL OperatorTest for null values with the IS NULL operator.SQL> SELECT  ename, mgr2  FROM    emp3  WHERE   mgr IS NULL;ENAME            MGR---------- ---------KING
Logical OperatorsOperatorANDORNOTMeaningReturns TRUE if both component conditions are TRUEReturns TRUE if either component condition is TRUEReturns TRUE if the following  condition is FALSE
Using the AND OperatorAND requires both conditions to be TRUE.SQL> SELECT empno, ename, job, sal2  FROM   emp3  WHERE  sal>=11004  AND    job='CLERK';    EMPNO ENAME      JOB             SAL--------- ---------- --------- ---------7876 ADAMS      CLERK          11007934 MILLER     CLERK          1300
Using the OR OperatorOR requires either condition to be TRUE.SQL> SELECT empno, ename, job, sal2  FROM   emp3  WHERE  sal>=11004  OR     job='CLERK';    EMPNO ENAME      JOB             SAL--------- ---------- --------- ---------7839 KING       PRESIDENT      50007698 BLAKE      MANAGER        28507782 CLARK      MANAGER        24507566 JONES      MANAGER        29757654 MARTIN     SALESMAN       1250     ... 7900 JAMES      CLERK           950     ...14 rows selected.
Using the NOT OperatorSQL> SELECT ename, job2  FROM   emp3  WHERE  job NOT IN ('CLERK','MANAGER','ANALYST');ENAME      JOB---------- ---------KING       PRESIDENTMARTIN     SALESMANALLEN      SALESMANTURNER     SALESMANWARD       SALESMAN
Rules of PrecedenceOrder EvaluatedOperator1All comparison operators2NOT3AND4OROverride rules of precedence by using parentheses.
Rules of PrecedenceSQL> SELECT ename, job, sal2  FROM   emp3  WHERE  job='SALESMAN'4  OR     job='PRESIDENT'5  AND    sal>1500;ENAME      JOB             SAL---------- --------- ---------KING       PRESIDENT      5000MARTIN     SALESMAN       1250ALLEN      SALESMAN       1600TURNER     SALESMAN       1500WARD       SALESMAN       1250
Rules of PrecedenceUse parentheses to force priority.SQL> SELECT   ename, job, sal2  FROM     emp3  WHERE    (job='SALESMAN'4  OR       job='PRESIDENT')5  AND      sal>1500;ENAME      JOB             SAL---------- --------- ---------KING       PRESIDENT      5000ALLEN      SALESMAN       1600
ORDER BY ClauseSort rows with the ORDER BY clauseASC: ascending order, defaultDESC: descending orderThe ORDER BY clause comes last in the SELECT statement.SQL> SELECT   ename, job, deptno, hiredate2  FROM     emp3  ORDER BY hiredate;ENAME      JOB          DEPTNO HIREDATE---------- --------- --------- ---------SMITH      CLERK            2017-DEC-80ALLEN      SALESMAN         3020-FEB-81...14 rows selected.
Sorting in Descending OrderSQL> SELECT   ename, job, deptno, hiredate2  FROM     emp3  ORDER BY hiredate DESC;ENAME      JOB          DEPTNO HIREDATE---------- --------- --------- ---------ADAMS      CLERK            2012-JAN-83SCOTT      ANALYST          2009-DEC-82MILLER     CLERK            1023-JAN-82JAMES      CLERK            3003-DEC-81FORD       ANALYST          2003-DEC-81KING       PRESIDENT        1017-NOV-81MARTIN     SALESMAN         3028-SEP-81...14 rows selected.
Sorting by Column AliasSQL> SELECT   empno, ename, sal*12 annsal2  FROM     emp3  ORDER BY annsal;    EMPNO ENAME         ANNSAL--------- ---------- ---------7369 SMITH           96007900 JAMES          114007876 ADAMS          132007654 MARTIN         150007521 WARD           150007934 MILLER         156007844 TURNER         18000...14 rows selected.
Sorting by Multiple ColumnsThe order of ORDER BY list is the order of sort.SQL> SELECT ename, deptno, sal2  FROM  emp3  ORDER BY deptno, sal DESC;ENAME         DEPTNO       SAL---------- --------- ---------KING              105000CLARK             102450MILLER            101300FORD              203000...14 rows selected.You can sort by a column that is not in the SELECT list.SummarySELECT		[DISTINCT] {*| column [alias], ...}FROM table[WHEREcondition(s)][ORDER BY{column, expr, alias} [ASC|DESC]];

Les02 Restricting And Sorting Data

  • 1.
  • 2.
    ObjectivesAfter completing thislesson, you should be able to do the following:Limit the rows retrieved by a querySort the rows retrieved by a query
  • 3.
    Limiting Rows Usinga SelectionEMP EMPNO ENAME JOB ... DEPTNO 7839KINGPRESIDENT107698BLAKEMANAGER307782CLARKMANAGER107566JONESMANAGER20 ..."…retrieve allemployeesin department 10"EMP EMPNO ENAME JOB ... DEPTNO 7839KINGPRESIDENT107782CLARKMANAGER107934MILLERCLERK10
  • 4.
    Limiting Rows SelectedRestrictthe rows returned by using the WHERE clause.The WHERE clause follows the FROM clause.SELECT [DISTINCT] {*| column [alias], ...}FROM table[WHEREcondition(s)];
  • 5.
    Using the WHEREClauseSQL> SELECT ename, job, deptno2 FROM emp3 WHERE job='CLERK';ENAME JOB DEPTNO---------- --------- ---------JAMES CLERK 30SMITH CLERK 20ADAMS CLERK 20MILLER CLERK 10
  • 6.
    Character Strings andDatesCharacter 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-YY.SQL> SELECTename, job, deptno2 FROM emp3 WHEREename = 'JAMES';
  • 7.
    Comparison OperatorsOperator=> >= < <= <>MeaningEqual toGreater than Greater than or equal to Less than Less than or equal toNot equal to
  • 8.
    Using the ComparisonOperatorsSQL> SELECT ename, sal, comm2 FROM emp3 WHERE sal<=comm;ENAME SAL COMM---------- --------- ---------MARTIN 12501400
  • 9.
    Other Comparison OperatorsOperatorBETWEEN...AND...IN(list)LIKEISNULLMeaningBetween two values (inclusive) Match any of a list of values Match a character pattern Is a null value
  • 10.
    Using the BETWEENOperatorLowerlimitHigherlimitUse the BETWEEN operator to display rows based on a range of values.SQL> SELECTename, sal2 FROM emp3 WHEREsal BETWEEN 1000 AND 1500;ENAME SAL---------- ---------MARTIN 1250TURNER 1500WARD 1250ADAMS 1100MILLER 1300
  • 11.
    Using the INOperatorUse the IN operator to test for values in a list.SQL> SELECTempno, ename, sal, mgr2 FROM emp3 WHEREmgr IN (7902, 7566, 7788); EMPNO ENAME SAL MGR--------- ---------- --------- ---------7902 FORD 300075667369 SMITH 80079027788 SCOTT 300075667876 ADAMS 11007788
  • 12.
    Using the LIKEOperatorUse the LIKE operator to perform wildcard searches of valid search string values.
  • 13.
    Search conditions cancontain either literal characters or numbers.
  • 14.
    % denotes zeroor many characters.
  • 15.
    _ denotesone character.SQL> SELECTename2 FROM emp3 WHEREename LIKE 'S%';
  • 16.
    Using the LIKEOperatorYou can combine pattern-matching characters.You can use the ESCAPE identifier to search for "%" or "_".SQL> SELECTename2 FROMemp3 WHEREename LIKE '_A%';ENAME---------- MARTINJAMES WARD
  • 17.
    Using the ISNULL OperatorTest for null values with the IS NULL operator.SQL> SELECT ename, mgr2 FROM emp3 WHERE mgr IS NULL;ENAME MGR---------- ---------KING
  • 18.
    Logical OperatorsOperatorANDORNOTMeaningReturns TRUEif both component conditions are TRUEReturns TRUE if either component condition is TRUEReturns TRUE if the following condition is FALSE
  • 19.
    Using the ANDOperatorAND requires both conditions to be TRUE.SQL> SELECT empno, ename, job, sal2 FROM emp3 WHERE sal>=11004 AND job='CLERK'; EMPNO ENAME JOB SAL--------- ---------- --------- ---------7876 ADAMS CLERK 11007934 MILLER CLERK 1300
  • 20.
    Using the OROperatorOR requires either condition to be TRUE.SQL> SELECT empno, ename, job, sal2 FROM emp3 WHERE sal>=11004 OR job='CLERK'; EMPNO ENAME JOB SAL--------- ---------- --------- ---------7839 KING PRESIDENT 50007698 BLAKE MANAGER 28507782 CLARK MANAGER 24507566 JONES MANAGER 29757654 MARTIN SALESMAN 1250 ... 7900 JAMES CLERK 950 ...14 rows selected.
  • 21.
    Using the NOTOperatorSQL> SELECT ename, job2 FROM emp3 WHERE job NOT IN ('CLERK','MANAGER','ANALYST');ENAME JOB---------- ---------KING PRESIDENTMARTIN SALESMANALLEN SALESMANTURNER SALESMANWARD SALESMAN
  • 22.
    Rules of PrecedenceOrderEvaluatedOperator1All comparison operators2NOT3AND4OROverride rules of precedence by using parentheses.
  • 23.
    Rules of PrecedenceSQL>SELECT ename, job, sal2 FROM emp3 WHERE job='SALESMAN'4 OR job='PRESIDENT'5 AND sal>1500;ENAME JOB SAL---------- --------- ---------KING PRESIDENT 5000MARTIN SALESMAN 1250ALLEN SALESMAN 1600TURNER SALESMAN 1500WARD SALESMAN 1250
  • 24.
    Rules of PrecedenceUseparentheses to force priority.SQL> SELECT ename, job, sal2 FROM emp3 WHERE (job='SALESMAN'4 OR job='PRESIDENT')5 AND sal>1500;ENAME JOB SAL---------- --------- ---------KING PRESIDENT 5000ALLEN SALESMAN 1600
  • 25.
    ORDER BY ClauseSortrows with the ORDER BY clauseASC: ascending order, defaultDESC: descending orderThe ORDER BY clause comes last in the SELECT statement.SQL> SELECT ename, job, deptno, hiredate2 FROM emp3 ORDER BY hiredate;ENAME JOB DEPTNO HIREDATE---------- --------- --------- ---------SMITH CLERK 2017-DEC-80ALLEN SALESMAN 3020-FEB-81...14 rows selected.
  • 26.
    Sorting in DescendingOrderSQL> SELECT ename, job, deptno, hiredate2 FROM emp3 ORDER BY hiredate DESC;ENAME JOB DEPTNO HIREDATE---------- --------- --------- ---------ADAMS CLERK 2012-JAN-83SCOTT ANALYST 2009-DEC-82MILLER CLERK 1023-JAN-82JAMES CLERK 3003-DEC-81FORD ANALYST 2003-DEC-81KING PRESIDENT 1017-NOV-81MARTIN SALESMAN 3028-SEP-81...14 rows selected.
  • 27.
    Sorting by ColumnAliasSQL> SELECT empno, ename, sal*12 annsal2 FROM emp3 ORDER BY annsal; EMPNO ENAME ANNSAL--------- ---------- ---------7369 SMITH 96007900 JAMES 114007876 ADAMS 132007654 MARTIN 150007521 WARD 150007934 MILLER 156007844 TURNER 18000...14 rows selected.
  • 28.
    Sorting by MultipleColumnsThe order of ORDER BY list is the order of sort.SQL> SELECT ename, deptno, sal2 FROM emp3 ORDER BY deptno, sal DESC;ENAME DEPTNO SAL---------- --------- ---------KING 105000CLARK 102450MILLER 101300FORD 203000...14 rows selected.You can sort by a column that is not in the SELECT list.SummarySELECT [DISTINCT] {*| column [alias], ...}FROM table[WHEREcondition(s)][ORDER BY{column, expr, alias} [ASC|DESC]];