0% found this document useful (0 votes)
51 views19 pages

Lec12 - Lab - CSC371 - Database Systems

The document discusses SQL subqueries. It defines a subquery as a query nested within a larger query. Subqueries can be used in the SELECT, FROM, WHERE, INSERT, UPDATE, and DELETE clauses. Different types of subqueries are described including single-row, multiple-row, multiple-column, correlated, and nested subqueries. Examples are provided to illustrate the use of subqueries with comparison operators, IN, ANY, ALL, INSERT, UPDATE, and DELETE statements.

Uploaded by

sp22-bse-097
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
51 views19 pages

Lec12 - Lab - CSC371 - Database Systems

The document discusses SQL subqueries. It defines a subquery as a query nested within a larger query. Subqueries can be used in the SELECT, FROM, WHERE, INSERT, UPDATE, and DELETE clauses. Different types of subqueries are described including single-row, multiple-row, multiple-column, correlated, and nested subqueries. Examples are provided to illustrate the use of subqueries with comparison operators, IN, ANY, ALL, INSERT, UPDATE, and DELETE statements.

Uploaded by

sp22-bse-097
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 19

CSC371-Database Systems I Lecture-12

(Lab)
(Spring2020)
Abdul Qayyum [email protected]
Samia Arshad [email protected]
Faisal Mumtaz [email protected]

1
Previous Lecture Review

SQL Joins
 Outer Joins
 Left Outer Join
 Right Outer Join
 Full Outer Join
 Self Join

2
3
Agenda
SQL Sub Query

4
SQL Sub Query
 A subquery is an SQL query nested inside a larger query.
 A subquery may occur in :
 A SELECT clause
 A FROM clause
 A WHERE clause
 A subquery can be treated as an inner query, which is a
SQL query placed as a part of another query called as
outer query.
 The inner query executes first before its parent query so that
the results of inner query can be passed to the outer query.
 Must be enclosed in parentheses
5
 Usually added within the WHERE Clause of another SQL
SELECT statement
 You can use the comparison operators, such as >, <, or =.
 The comparison operator can also be a multiple-row
operator, such as IN, ANY, or ALL.
 You can use a subquery in a SELECT, INSERT, DELETE, or
UPDATE statement to perform the following tasks:
 Compare an expression to the result of the query.
 Determine if an expression is included in the results of the query.
 Check whether the query selects any rows.

6
Types of Subquery

 Single row subquery : Returns zero or one row.


 Multiple row subquery : Returns one or more rows.
 Multiple column subqueries : Returns one or more columns.
 Correlated subqueries : Reference one or more columns in the outer SQL
statement. The subquery is known as a correlated subquery because the
subquery is related to the outer SQL statement.
 Nested subqueries : Subqueries are placed within another subquery.
Staff members detail working at street ‘163 Main St’
 Select staff.* from staff,branch Where staff.branchno = branch.branchno
 Execute From clause and fetch both tables data.
 Execute where clause and Create a temporary table with matching records
 Display data according to mentioned attributes in select clause.

8
Alternate way with subquery

 Seelct staff.* from staff where branchno=(select branch from branch where street
=‘163 Main st’)

 While we just need one record from branch table and matching of that record from
staff table
 Only three records

9
Can you find out branch number and its city of
those staff members who are drawing more than
10000 salary.
 select distinct branch.branchno, branch.city from branch
join staff on branch.branchno = staff.branchno and salary > 10000
 select branch.branchno, branch.city from branch
where branch.branchno in (select branchno from staff where salary > 10000)

10
Subqueries with INSERT statement

 MySQL
 INSERT INTO staff2 SELECT * FROM staff WHERE position = ‘assistant’ OR position= ‘supervisor’
 SQL Server
 SELECT * INTO staff2 FROM staff WHERE position = 'assistant' or position = 'supervisor’

 Select * from staff2

11
Subqueries with UPDATE statement

 update staff2 set salary= salary+5000


 where salary < (select avg(salary) from staff2)

12
Subqueries with DELETE statement

 Delete from staff2 where branchno in (select branchno from branch where city = ‘London’)

13
Single Row Subqueries

 Returns zero or one row to the outer SQL statement

 Select staff.* from staff where branchno=(select branchno from branch where
street ='163 Main st')

14
Multiple Row Subqueries

 select branch.branchno, branch.city from branch


where branch.branchno in (select branchno from staff where salary > 10000)

15
SQL Nested subqueries

 A subquery can be nested inside other subqueries


 List the properties that are handled by staff who work in the branch at ‘163
Main St’.
 SELECT propertyNo, street, city, postcode, type, rooms, rent
 FROM PropertyForRent
 WHERE staffNo IN (SELECT staffNo FROM Staff
 WHERE branchNo = (SELECT branchNo FROM Branch
 WHERE street = ‘163 Main St’));

16
Use of ANY/SOME and ALL
 The keywords ANY and ALL may be used with subqueries that produce a single
column of numbers

 Find all staff whose salary is larger than the salary of at least one member of staff at
branch B003.
 SELECT staffNo, fName, IName, position, salary
FROM Staff WHERE salary > SOME (SELECT salary FROM Staff WHERE branchNo = ‘B003’);

17
Use of ALL

 Find all staff whose salary is larger than the salary of every member of staff
at branch B003.

 SELECT staffNo, fName, IName, position, salary FROM Staff


 WHERE salary > ALL (SELECT salary FROM Staff
 WHERE branchNo = ‘B003’);

18
Summary

SQL Sub Query

19

You might also like