2. Objectives
• After completing this lesson, you should be able
to do the following:
–List the capabilities of SQL SELECT
statements
–Execute a basic SELECT statement
–Limit the rows that are retrieved by a query
–Sort the rows that are retrieved by a query
4. Basic SELECT Statement
◦ SELECT identifies the columns to be displayed
◦ FROM identifies the table containing those columns
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table;
7. Writing SQL Statements
◦ SQL statements are not case-sensitive.
◦ SQL statements can be on one or more lines.
◦ Keywords cannot be abbreviated or split across lines.
◦ Clauses are usually placed on separate lines.
◦ Indents are used to enhance readability.
8. Arithmetic Expressions
Create expressions with number and date data by using
arithmetic operators.
Operator Description
+ Add
- Subtract
* Multiply
/ Divide
10. SELECT last_name, salary, 12*salary+100
FROM employees;
Operator Precedence
SELECT last_name, salary, 12*(salary+100)
FROM employees;
…
…
1
2
11. Defining a Null Value
◦ A null is a value that is unavailable, unassigned, unknown, or
inapplicable.
◦ A null is not the same as a zero or a blank space.
SELECT last_name, job_id, salary, commission_pct
FROM employees;
…
…
13. Defining a Column Alias
A column alias:
◦ Renames a column heading
◦ Is useful with calculations
◦ Immediately follows the column name (There can also be
the optional AS keyword between the column name and
alias.)
◦ Requires double quotation marks if it contains spaces or
special characters or if it is case-sensitive
14. Using Column Aliases
SELECT last_name "Name" , salary*12 "Annual Salary"
FROM employees;
SELECT last_name AS name, commission_pct comm
FROM employees;
…
…
15. Concatenation Operator
A concatenation operator:
◦ Links columns or character strings to other columns
◦ Is represented by keyword CONCAT
◦ Creates a resultant column that is a character expression
SELECT concat(last_name,job_id) AS "Employees"
FROM employees;
…
16. Literal Character Strings
◦ A literal is a character, a number, or a date that is included in
the SELECT statement.
◦ Date and character literal values must be enclosed by single
quotation marks.
◦ Each character string is output once for each
row returned.
17. Using Literal Character Strings
…
SELECT concat(last_name,' is a ',job_id)
AS "Employee Details"
FROM employees;
18. Duplicate Rows
The default display of queries is all rows, including duplicate
rows.
SELECT department_id
FROM employees;
…
SELECT DISTINCT department_id
FROM employees;
…
1
2
19. Limiting Rows Using a Selection
“retrieve all
employees in
department 90”
EMPLOYEES
…
20. Limiting the Rows That Are Selected
◦ Restrict the rows that are returned by using the WHERE
clause:
◦ The WHERE clause follows the FROM clause.
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table
WHERE condition(s)];
22. SELECT last_name, job_id, department_id
FROM employees
WHERE last_name = 'Whalen' ;
Character Strings and Dates
◦ Character strings and date values are enclosed by single
quotation marks.
◦ Character values are case-sensitive, and date values are
format-sensitive.
◦ The default date format is yyyy-mm-dd.
23. Comparison Conditions
Operator Meaning
= Equal to
> Greater than
>= Greater than or equal to
< Less than
<= Less than or equal to
<> Not equal to
BETWEEN
...AND...
Between two values
(inclusive)
IN(set) Match any of a list of values
LIKE Match a character pattern
IS NULL Is a null value
25. SELECT last_name, salary
FROM employees
WHERE salary BETWEEN 2500 AND 3500 ;
Using the BETWEEN Condition
Use the BETWEEN condition to display rows based on a
range of values:
Lower limit Upper limit
26. SELECT employee_id, last_name, salary, manager_id
FROM employees
WHERE manager_id IN (100, 101, 201) ;
Using the IN Condition
Use the IN membership condition to test for values in a list:
27. SELECT first_name
FROM employees
WHERE first_name LIKE 'S%' ;
Using the LIKE Condition
◦ Use the LIKE condition 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.
28. Using the LIKE Condition
◦ You can combine pattern-matching characters:
◦ You can use the ESCAPE identifier to search for the actual
% and _ symbols.
SELECT last_name
FROM employees
WHERE last_name LIKE '_o%' ;
29. SELECT last_name, manager_id
FROM employees
WHERE manager_id IS NULL ;
Using the NULL Conditions
Test for nulls with the IS NULL operator.
30. Logical Conditions
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
31. SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >=10000
AND job_id LIKE '%MAN%' ;
Using the AND Operator
AND requires both conditions to be true:
32. SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000
OR job_id LIKE '%MAN%' ;
Using the OR Operator
OR requires either condition to be true:
33. SELECT last_name, job_id
FROM employees
WHERE job_id
NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ;
Using the NOT Operator
34. Rules of Precedence
You can use parentheses to override rules of
precedence.
Operator Meaning
1 Arithmetic operators
2 Concatenation operator
3 Comparison conditions
4 IS [NOT] NULL, LIKE, [NOT] IN
5 [NOT] BETWEEN
6 Not equal to
7 NOT logical condition
8 AND logical condition
9 OR logical condition
35. SELECT last_name, job_id, salary
FROM employees
WHERE job_id = 'SA_REP'
OR job_id = 'AD_PRES'
AND salary > 15000;
Rules of Precedence
SELECT last_name, job_id, salary
FROM employees
WHERE (job_id = 'SA_REP'
OR job_id = 'AD_PRES')
AND salary > 15000;
1
2
36. Using the ORDER BY Clause
◦ Sort retrieved rows with the ORDER BY clause:
ASC: ascending order, default
DESC: descending order
◦ The ORDER BY clause comes last in the SELECT
statement:
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date ;
…
37. Sorting
◦ Sorting in descending order:
◦ Sorting by column alias:
◦ Sorting by multiple columns:
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date DESC ;
1
SELECT employee_id, last_name, salary*12 annsal
FROM employees
ORDER BY annsal ;
2
SELECT last_name, department_id, salary
FROM employees
ORDER BY department_id, salary DESC;
3
38. CASE Expression
• Facilitates conditional inquiries by doing the work of an IF-
THEN-ELSE statement:
CASE expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
39. SELECT last_name, job_id, salary,
CASE job_id WHEN 'IT_PROG' THEN 1.10*salary
WHEN 'ST_CLERK' THEN 1.15*salary
WHEN 'SA_REP' THEN 1.20*salary
ELSE salary END "REVISED_SALARY"
FROM employees;
Using the CASE Expression
• Facilitates conditional inquiries by doing the work of an IF-
THEN-ELSE statement:
…
…
41. • Joining data together is one of the most significant strengths of
a relational database.
• A join is a query that combines rows from two or more
relations.
• Joins allow database users to combine data from one table
with data from one or more other tables or views, or
synonyms, as long as they are relations.
42. • Tables are “joined” two at a time making a new relation (a
table generated on the fly) containing all possible
combinations of rows from the original two tables (sometimes
called a “cross join” or “Cartesian product”).
• See sample script
43. • A join condition is usually used to limit the combinations of
table data to just those rows containing columns that match
columns in the other table.
• Most joins are “equi-joins” where the data from a column in
one table exactly matches data in the column of another table.
44. • It is also possible (though usually less efficient) to join using
ranges of values or other comparisons between the tables
involved.
• A table may be “joined” to another table, tables, or even itself
(reused multiple times).
45. • It is important to understand that whenever two or
more tables/views/synonyms (in fact, they are all
relations) are listed in a FROM clause, a join results.
• Join conditions serve the purpose of limiting the
number of rows returned by the join.
• The absence of a join condition results in all possible
combinations of rows from the involved tables, i.e. a
Cartesian product, which is usually not useful
information.
46. Inner Joins
• An inner join (sometimes called a simple join) is a join of two
or more tables that returns only those rows that satisfy the
join condition.
47. Inner Join
• Traditional inner joins look for rows that match rows in the other
table(s), i.e. to join two tables based on values in one table being
equal to values in another table
• Also known as equality join, equijoin or natural join
• Returns results only if records exist in both tables
49. Self-Join
• A query that joins a table to itself, for example,
employee table can be joined to itself to find out
subordinate - supervisor pairs.
• Used when a table has a foreign key relationship to
itself (usually parent-child relationship)
• Must create a table alias and structure the query as if
you are joining the table to a copy of itself
• FROM table1 alias1, ...
• Use alias, not table name for select and where clauses
51. From inner join to outer join
• A problem with the simple inner join is that only rows that
match between tables are returned; while it is also possible
that a user might be interested in rows that DO NOT match
rows in the other table(s).
• Finding rows without matches is often referred as Outer Join.
52. What is an outer join
• An outer join extends the result of a simple join (inner join,
equ-join, theta join or natural join).
• An outer join returns all rows that satisfy the join condition
and those rows from one table for which no rows from the
other satisfy the join condition. Such rows are not returned by
a simple join.