SQL Fundamentals Oracle 11g
M U H A M M A D WA H E E D
O R AC L E DATA BA S E D E V E LO P E R
E M A I L : m .wa h e e d 3 6 6 8 @ g m a i l . co m
Lecture#8
SQL Subqueries
Subqueries
2
Subqueries(cont’d)
Syntax for subqueries:
3
Subqueries(cont’d)
•The subquery(inner query) is executed once before the
main query.
•The result of subquery is used by the main query(outer
query).
4
Subqueries(cont’d)
There are following types of subqueries:
•Single row
•Multiple row
5
Subqueries(cont’d)
Guidelines for using subqueries:
•Enclose subquery in parenthesis
•Place subquery on the right side of comparison condition
•Use single row operators with single row queries and
multiple with multiple queries
6
Subqueries(cont’d)
There are two types of subqueries:
•Single row subqueries
•Multiple row subqueries
7
Subqueries(cont’d)
Single row subqueries:
•Returns only one row
•Use single row comparison operators i.e. =, < , > , <= ,>=, <>
8
Subqueries(cont’d)
Single row subqueries:
•Example:
SELECT *
FROM teacher
WHERE dept_id =
(SELECT dept_id
FROM department
WHERE dept_name = ‘UIIT’);
9
Subqueries(cont’d)
More than one single row subqueries:
•Example:
SELECT *
FROM teacher
WHERE dept_id =
(SELECT dept_id
FROM department
WHERE dept_name = ‘UIIT’)
AND salary >
(SELECT AVG(salary)
FROM teacher) ;
10
Subqueries(cont’d)
HAVING clause single row subqueries:
•Example:
SELECT dept_id, MIN(salary)
FROM employee
GROUP BY dept_id
HAVING MIN(salary) >
(SELECT MIN(salary)
FROM employee
WHERE dept_name = ‘UIIT’);
11
Subqueries(cont’d)
12
Illegal queries are as following:
• You cannot use multiple rows return queries for single row
operators
Subqueries(cont’d)
13
Empty result subqueries are as following:
• ‘no rows selected’ because subquery returns nothing
Multiple-Row Subqueries(cont’d)
•Return more than one row
•Uses multiple row comparison operators i.e.
14
Multiple-Row Subqueries(cont’d)
Use of IN operator in multiple-row subqueries
15
Multiple-Row Subqueries(cont’d)
Use of ANY operator in multiple-row subqueries:
• ‘<ANY’ means less than maximum of returned values
• ‘>ANY’ means more than the minimum of returned values
•‘=ANY’ is equivalent to ‘IN’ operator
16
Multiple-Row Subqueries(cont’d)
Use of ALL operator in multiple-row subqueries:
• ‘<ALL’ means less than maximum of returned values
• ‘>ALL’ means more than the minimum of returned values
17
Multiple-Row Subqueries(cont’d)
NULL values in multiple-row subqueries:
• If one of the returned values by inner query is NULL value then the entire query returns no
values
•‘NOT IN’ operator is equivalent to ‘<>ALL’
•This issue can be resolved by using an additional WHERE clause in the inner query i.e WHERE
mgr.manager_id IS NOT NULL
18
Feedback/Suggestions?
Give your feedback at: m.waheed3668@gmail.com
The feedback I get is that my books are honest.
- Laurie Halse Anderson

SQL Subqueries - Oracle SQL Fundamentals