2
Restricting and Sorting Data
Copyright
Oracle Corporation, 1998. All rights reserved.
Objectives
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
2-2
Copyright
Oracle Corporation, 1998. All rights reserved.
Limiting Rows Using a Selection
EMP
EMPNO ENAME
7839
7698
7782
7566
...
KING
BLAKE
CLARK
JONES
JOB
...
DEPTNO
PRESIDENT
MANAGER
MANAGER
MANAGER
10
30
10
20
"retrieve all
employees
in department 10"
EMP
EMPNO ENAME
JOB
7839 KING
PRESIDENT
7782 CLARK MANAGER
7934 MILLER CLERK
2-3
Copyright
Oracle Corporation, 1998. All rights reserved.
...
DEPTNO
10
10
10
Limiting Rows Selected
Restrict the rows returned by using the
WHERE clause.
SELECT
FROM
[WHERE
[DISTINCT] {*| column [alias], ...}
table
condition(s)];
The WHERE clause follows the FROM
clause.
2-4
Copyright
Oracle Corporation, 1998. All rights reserved.
Using the WHERE Clause
SQL> SELECT ename, job, deptno
FROM
emp
WHERE job='CLERK';
ENAME
---------JAMES
SMITH
ADAMS
MILLER
2-5
JOB
DEPTNO
--------- --------CLERK
30
CLERK
20
CLERK
20
CLERK
10
Copyright
Oracle Corporation, 1998. All rights reserved.
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-YY.
SQL>
SQL> SELECT
SELECT
FROM
FROM
WHERE
WHERE
2-6
ename,
ename, job,
job, deptno
deptno
emp
emp
ename
ename == 'JAMES';
'JAMES';
Copyright
Oracle Corporation, 1998. All rights reserved.
Comparison Operators
Operator
2-7
Meaning
Equal to
>
Greater than
>=
Greater than or equal to
<
Less than
<=
Less than or equal to
<>
Not equal to
Copyright
Oracle Corporation, 1998. All rights reserved.
Using the Comparison
Operators
SQL> SELECT ename, sal, comm
FROM
emp
WHERE sal<=comm;
ENAME
SAL
COMM
---------- --------- --------MARTIN
1250
1400
2-8
Copyright
Oracle Corporation, 1998. All rights reserved.
Other Comparison Operators
2-9
Operator
Meaning
BETWEEN
...AND...
Between two values (inclusive)
IN(list)
Match any of a list of values
LIKE
Match a character pattern
IS NULL
Is a null value
Copyright
Oracle Corporation, 1998. All rights reserved.
Using the BETWEEN Operator
Use the BETWEEN operator to display
rows based on a range of values.
SQL> SELECT
FROM
WHERE
ename, sal
emp
sal BETWEEN 1000 AND 1500;
ENAME
SAL
---------- --------MARTIN
1250
TURNER
1500
WARD
1250
ADAMS
1100
MILLER
1300
2-10
Copyright
Lower
limit
Higher
limit
Oracle Corporation, 1998. All rights reserved.
Using the IN Operator
Use the IN operator to test for values in a
list.
SQL> SELECT
FROM
WHERE
EMPNO
--------7902
7369
7788
7876
2-11
empno, ename, sal, mgr
emp
mgr IN (7902, 7566, 7788);
ENAME
SAL
MGR
---------- --------- --------FORD
3000
7566
SMITH
800
7902
SCOTT
3000
7566
ADAMS
1100
7788
Copyright
Oracle Corporation, 1998. All rights reserved.
Using the LIKE Operator
Use 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> SELECT
FROM
WHERE
2-12
ename
emp
ename LIKE 'S%';
Copyright
Oracle Corporation, 1998. All rights reserved.
Using the LIKE Operator
You can combine pattern-matching
characters.
SQL> SELECT
FROM
WHERE
ename
emp
ename LIKE '_A%';
ENAME
---------MARTIN
JAMES
WARD
You can use the ESCAPE identifier to
search for "%" or "_".
2-13
Copyright
Oracle Corporation, 1998. All rights reserved.
Using the IS NULL Operator
Test for null values with the IS NULL
operator.
SQL> SELECT
FROM
WHERE
ename, mgr
emp
mgr IS NULL;
ENAME
MGR
---------- --------KING
2-14
Copyright
Oracle Corporation, 1998. All rights reserved.
Logical Operators
2-15
Operator
Meaning
AND
Returns TRUE if both component
conditions are TRUE
OR
Returns TRUE if either component
condition is TRUE
NOT
Returns TRUE if the following
condition is FALSE
Copyright
Oracle Corporation, 1998. All rights reserved.
Using the AND Operator
AND requires both conditions to be TRUE.
SQL> SELECT
FROM
WHERE
AND
EMPNO
--------7876
7934
2-16
empno, ename, job, sal
emp
sal>=1100
job='CLERK';
ENAME
---------ADAMS
MILLER
Copyright
JOB
SAL
--------- --------CLERK
1100
CLERK
1300
Oracle Corporation, 1998. All rights reserved.
Using the OR Operator
OR requires either condition to be TRUE.
SQL> SELECT
FROM
WHERE
OR
empno, ename, job, sal
emp
sal>=1100
job='CLERK';
EMPNO ENAME
--------- ---------7839 KING
7698 BLAKE
7782 CLARK
7566 JONES
7654 MARTIN
...
7900 JAMES
...
14 rows selected.
2-17
Copyright
JOB
SAL
--------- --------PRESIDENT
5000
MANAGER
2850
MANAGER
2450
MANAGER
2975
SALESMAN
1250
CLERK
950
Oracle Corporation, 1998. All rights reserved.
Using the NOT Operator
SQL> SELECT ename, job
FROM
emp
WHERE job NOT IN ('CLERK','MANAGER','ANALYST');
ENAME
---------KING
MARTIN
ALLEN
TURNER
WARD
2-18
JOB
--------PRESIDENT
SALESMAN
SALESMAN
SALESMAN
SALESMAN
Copyright
Oracle Corporation, 1998. All rights reserved.
Rules of Precedence
Order Evaluated
1
2
3
4
Operator
All comparison
operators
NOT
AND
OR
Override rules of precedence by using
parentheses.
2-19
Copyright
Oracle Corporation, 1998. All rights reserved.
Rules of Precedence
SQL> SELECT
FROM
WHERE
OR
AND
ENAME
ENAME
------------------KING
KING
MARTIN
MARTIN
ALLEN
ALLEN
TURNER
TURNER
WARD
WARD
2-20
ename, job, sal
emp
job='SALESMAN'
job='PRESIDENT'
sal>1500;
JOB
SAL
JOB
SAL
----------------- ----------------PRESIDENT
5000
PRESIDENT
5000
SALESMAN
1250
SALESMAN
1250
SALESMAN
1600
SALESMAN
1600
SALESMAN
1500
SALESMAN
1500
SALESMAN
1250
SALESMAN
1250
Copyright
Oracle Corporation, 1998. All rights reserved.
Rules of Precedence
Use parentheses to force priority.
SQL> SELECT
FROM
WHERE
OR
AND
ENAME
ENAME
------------------KING
KING
ALLEN
ALLEN
2-21
ename, job, sal
emp
(job='SALESMAN'
job='PRESIDENT')
sal>1500;
JOB
SAL
JOB
SAL
----------------- ----------------PRESIDENT
5000
PRESIDENT
5000
SALESMAN
1600
SALESMAN
1600
Copyright
Oracle Corporation, 1998. All rights reserved.
ORDER BY Clause
Sort rows with the ORDER BY clause
ASC: ascending order, default
DESC: descending order
The ORDER BY clause comes last in the
SELECT statement.
SQL> SELECT
ename, job, deptno, hiredate
FROM
emp
ORDER BY hiredate;
ENAME
JOB
DEPTNO HIREDATE
---------- --------- --------- --------SMITH
CLERK
20 17-DEC-80
ALLEN
SALESMAN
30 20-FEB-81
...
14 rows selected.
2-22
Copyright
Oracle Corporation, 1998. All rights reserved.
Sorting in Descending Order
SQL> SELECT
ename, job, deptno, hiredate
FROM
emp
ORDER BY hiredate DESC;
ENAME
JOB
DEPTNO HIREDATE
---------- --------- --------- --------ADAMS
CLERK
20 12-JAN-83
SCOTT
ANALYST
20 09-DEC-82
MILLER
CLERK
10 23-JAN-82
JAMES
CLERK
30 03-DEC-81
FORD
ANALYST
20 03-DEC-81
KING
PRESIDENT
10 17-NOV-81
MARTIN
SALESMAN
30 28-SEP-81
...
14 rows selected.
2-23
Copyright
Oracle Corporation, 1998. All rights reserved.
Sorting by Column Alias
SQL> SELECT
empno, ename, sal*12 annsal
FROM
emp
ORDER BY annsal;
EMPNO ENAME
ANNSAL
--------- ---------- --------7369 SMITH
9600
7900 JAMES
11400
7876 ADAMS
13200
7654 MARTIN
15000
7521 WARD
15000
7934 MILLER
15600
7844 TURNER
18000
...
14 rows selected.
2-24
Copyright
Oracle Corporation, 1998. All rights reserved.
Sorting by Multiple Columns
The order of ORDER BY list is the order of
sort.
SQL> SELECT
ename, deptno, sal
FROM
emp
ORDER BY deptno, sal DESC;
ENAME
DEPTNO
SAL
---------- --------- --------KING
10
5000
CLARK
10
2450
MILLER
10
1300
FORD
20
3000
...
14 rows selected.
You can sort by a column that is not in the
SELECT list.
2-25
Copyright
Oracle Corporation, 1998. All rights reserved.
Summary
SELECT
FROM
[WHERE
[ORDER BY
2-26
[DISTINCT] {*| column [alias], ...}
table
condition(s)]
{column, expr, alias} [ASC|DESC]];
Copyright
Oracle Corporation, 1998. All rights reserved.
Practice Overview
Selecting data and changing the order of
rows displayed
Restricting rows by using the WHERE
clause
Using the double quotation marks in
column aliases
2-27
Copyright
Oracle Corporation, 1998. All rights reserved.