CS122 Using Relational Databases and SQL

Slides:



Advertisements
Similar presentations
Advanced SQL (part 1) CS263 Lecture 7.
Advertisements

© 2007 by Prentice Hall (Hoffer, Prescott & McFadden) 1 Joins and Sub-queries in SQL.
Using Relational Databases and SQL Steven Emory Department of Computer Science California State University, Los Angeles Lecture 3: Joins Part I.
A Guide to SQL, Seventh Edition. Objectives Use joins to retrieve data from more than one table Use the IN and EXISTS operators to query multiple tables.
Relational Algebra, Join and QBE Yong Choi School of Business CSUB, Bakersfield.
Using Relational Databases and SQL Steven Emory Department of Computer Science California State University, Los Angeles Lecture 7: Subqueries and Set Operations.
Using Relational Databases and SQL Steven Emory Department of Computer Science California State University, Los Angeles Lecture 7: Aggregates.
Using Relational Databases and SQL Steven Emory Department of Computer Science California State University, Los Angeles Lecture 2: Single-Table Selections.
Using Relational Databases and SQL Steven Emory Department of Computer Science California State University, Los Angeles Lecture 9: Data Manipulation Language.
Database Systems: Design, Implementation, and Management Eighth Edition Chapter 8 Advanced SQL.
Using Relational Databases and SQL Steven Emory Department of Computer Science California State University, Los Angeles Lecture 7: Aggregates.
Using Relational Databases and SQL Steven Emory Department of Computer Science California State University, Los Angeles Lecture 5: Subqueries and Set Operations.
Using Relational Databases and SQL Department of Computer Science California State University, Los Angeles Lecture 7:
Using Relational Databases and SQL Steven Emory Department of Computer Science California State University, Los Angeles Lecture 2: Single-Table Selections.
Using Relational Databases and SQL Steven Emory Department of Computer Science California State University, Los Angeles Lecture 4: Joins Part II.
Using Relational Databases and SQL Department of Computer Science California State University, Los Angeles Lecture 8: Subqueries.
Chapter 3 Single-Table Queries
Using Relational Databases and SQL John Hurley Department of Computer Science California State University, Los Angeles Lecture 3: Joins Part I.
SQL/Lesson 4/Slide 1 of 45 Using Subqueries and Managing Databases Objectives In this lesson, you will learn to: *Use subqueries * Use subqueries with.
A Guide to MySQL 5. 2 Objectives Use joins to retrieve data from more than one table Use the IN and EXISTS operators to query multiple tables Use a subquery.
1 CS 430 Database Theory Winter 2005 Lecture 12: SQL DML - SELECT.
Chapter 6 SQL: Data Manipulation (Advanced Commands) Pearson Education © 2009.
1 Single Table Queries. 2 Objectives  SELECT, WHERE  AND / OR / NOT conditions  Computed columns  LIKE, IN, BETWEEN operators  ORDER BY, GROUP BY,
Using Relational Databases and SQL Department of Computer Science California State University, Los Angeles Lecture 6: Midterm Review.
Using Special Operators (LIKE and IN)
Chapter 4 Multiple-Table Queries
Using Relational Databases and SQL Department of Computer Science California State University, Los Angeles Lecture 4: Joins Part II.
Subqueries Steve Perry 1.
SqlExam1Review.ppt EXAM - 1. SQL stands for -- Structured Query Language Putting a manual database on a computer ensures? Data is more current Data is.
A Guide to SQL, Eighth Edition Chapter Five Multiple-Table Queries.
A Guide to SQL, Eighth Edition Chapter Four Single-Table Queries.
In this session, you will learn to: Query data by using joins Query data by using subqueries Objectives.
CS122 Using Relational Databases and SQL Huiping Guo Department of Computer Science California State University, Los Angeles 2. Single Table Queries.
CS 122: Lecture 3 Joins (Part 1) Tarik Booker CS 122 California State University, Los Angeles October 7, 2014.
Lecture 7: Subqueries Tarik Booker California State University, Los Angeles.
Tarik Booker CS 122. What we will cover… Tables (review) SELECT statement DISTINCT, Calculated Columns FROM Single tables (for now…) WHERE Date clauses,
CSC314 DAY 9 Intermediate SQL 1. Chapter 6 © 2013 Pearson Education, Inc. Publishing as Prentice Hall USING AND DEFINING VIEWS  Views provide users controlled.
Concepts of Database Management, Fifth Edition Chapter 3: The Relational Model 2: SQL.
IFS180 Intro. to Data Management Chapter 10 - Unions.
Joins (Part II) Tarik Booker California State University, Los Angeles.
CS122 Using Relational Databases and SQL Huiping Guo Department of Computer Science California State University, Los Angeles 4. Subqueries and joins.
Prepared by : Moshira M. Ali CS490 Coordinator Arab Open University
3d. Structured Query Language – JOIN Operations
Lyric Database Lyric Music
CS122 Using Relational Databases and SQL
CS122 Using Relational Databases and SQL
Using the Set Operators
Using Subqueries to Solve Queries
SQL – Subqueries.
CS122 Using Relational Databases and SQL
Using the Set Operators
CSC 453 Database Systems Lecture
CS122 Using Relational Databases and SQL
Putting it back together
CS122 Using Relational Databases and SQL
CS4222 Principles of Database System
CMPT 354: Database System I
CS122 Using Relational Databases and SQL
CS122 Using Relational Databases and SQL
CS122 Using Relational Databases and SQL
CS1222 Using Relational Databases and SQL
CS122 Using Relational Databases and SQL
Using the Set Operators
CS122 Using Relational Databases and SQL
Lyric Database Lyric Music
CSC 453 Database Systems Lecture
CS122 Using Relational Databases and SQL
Presentation transcript:

CS122 Using Relational Databases and SQL 5/9/2018 CS122 Using Relational Databases and SQL 7. Advanced queries Huiping Guo Department of Computer Science California State University, Los Angeles

Outline Queries with UNION Sub-Queries in the FROM clause Sub-Queries in the SELECT clause Correlated Sub-Queries EXISTS with Sub-Queries Nested Sub-Queries 7. Advanced subqueries CS122_W16

Joins vs. Unions Table 1 Table 1 Table 2 Table 2 Union Join 7. Advanced subqueries CS122_W16

Queries UNION Combine data from different tables ORDER BY clause in a UNION UNION ALL Using UNION to report both Detail and Total Using UNION to report multiple statistics 7. Advanced subqueries CS122_W16

Combine data from different tables Lyric Music wants to send Christmas cards to all members and all studios. Produce a Christmas card list containing the name and postal address of all members and studios SELECT firstName, lastName, address, city, region, postalCode FROM Members UNION SELECT studioName, ' ', address, city, region, postalCode FROM Studios 7. Advanced subqueries CS122_W16

Union Rules Must have same number of fields Use dummy fields if needed Must have same data types in corresponding fields Corresponding fields do not need to have the same names Field names from first query will be used in results Each query of the union is independent 7. Advanced subqueries CS122_W16

Another example List all studios and members who are the responsible party for an artist, identifying the source as S or M SELECT 'M' As Src, firstName, lastName, address, city, region, postalCode FROM Members M INNER JOIN XrefArtistsMembers X ON M.MemberID = X.MemberID WHERE respParty=1 UNION SELECT 'S', studioName, ' ', address, city,region, postalCode FROM Studios; 7. Advanced subqueries CS122_W16

ORDER BY clause in a UNION A UNION can have only one ORDER BY clause It must be placed at the end of the query It must refer to column names in the first SELECT clause 7. Advanced subqueries CS122_W16

Example Is this correct? SELECT 'M', firstName, lastName FROM Members ORDER BY firstName UNION ALL SELECT 'S', studioName, ' ' FROM Studios ORDER BY studioName; 7. Advanced subqueries CS122_W16

Example The correct one: SELECT 'M', firstName, lastName FROM Members UNION SELECT 'S', studioName, ' ' FROM Studios ORDER BY firstName 7. Advanced subqueries CS122_W16

Union vs. Union All UNION eliminate duplicates UNION ALL keeps duplicates Example SELECT region FROM Artists UNION SELECT region FROM Studios ORDER BY region 7. Advanced subqueries CS122_W16

Using Union to Report Both Detail and Total Union can also report the data from a single table massaged in different ways Use Union to join the detail from a table with the aggregate from the same table to report both detail and totals together Ex. Report all tracks and the total time of these tracks 7. Advanced subqueries CS122_W16

Using Union to Report Both Detail and Total Select TrackNum, TrackTitle, LengthSeconds From Tracks Union Select 99, 'Total', Sum(LengthSeconds) From Tracks Order by TrackNum   TrackNum TrackTitle LengthSeconds ----------- ------------------------------- ----------- 1 Bob's Dream 185 2 My Wizard 233 3 Third's Folly 352 4 Leather 185 5 Hot Cars Cool Nights 192 6 Music in You 204 7 Don't Care About Time 221 8 Kiss 218 9 Pizza Box 183 10 Goodbye 240 99 Total 2213 99 selected to fill column and allow proper sorting 7. Advanced subqueries CS122_W16

Using Union to Report Multiple Summary Statistics Use Union to report multiple independent aggregates of some data and report all the results together Ex. Report a count of tracks that are less than two minutes, between two and three minutes, and more than three minutes. 7. Advanced subqueries CS122_W16

Using Union to Report Multiple Summary Statistics Select 1, '< 2 minutes' As Length, Count(*) As NumTracks From Tracks Where LengthSeconds<120 Union Select 2, '2-3 minutes', Count(*) From Tracks Where LengthSeconds Between 120 and 180 Select 3, '>3 minutes', Count(*) From Tracks Where LengthSeconds>180   Length NumTracks ----------- -------------- ----------- 1 < 2 minutes 21 2 2-3 minutes 22 3 >3 minutes 7 7. Advanced subqueries CS122_W16

Cautions on Union Overuse Overuse can indicate poorly-designed data Unions generally run much slower than Joins For Joins the database can generally take advantage of indices on primary and foreign keys But a Union (especially without All option) has to compare all the columns from every SELECT 7. Advanced subqueries CS122_W16

Outline Queries with UNION Sub-Queries in the FROM clause Sub-Queries in the SELECT clause Correlated Sub-Queries EXISTS with Sub-Queries Nested Sub-Queries 7. Advanced subqueries CS122_W16

Sub-Queries in FROM Syntax: Select fields From Tabel1 Inner|Left|Right JOIN (Select fields From Table2) Alias ON Table1.field=Alias.field 7. Advanced subqueries CS122_W16

Sub-Queries in FROM List all artists with members in Georgia. Select Distinct Artistname From (Artists A Inner Join XrefArtistsMembers X On A.ArtistID = X.ArtistID) Inner Join (Select MemberID From Members M Where M.Region='GA') M On M.MemberID = X.MemberID 7. Advanced subqueries CS122_W16

Sub-Queries in FROM (Cont.) 5/9/2018 Sub-Queries in FROM (Cont.) Another way: Select Distinct Artistname From Artists A Inner Join (Select ArtistID From Members M Inner Join XrefArtistsMembers X On M.MemberID = X.MemberID Where M.Region='GA') SC On A.ArtistID = SC.ArtistID 7. Advanced subqueries CS122_W16

Outline Queries with UNION Sub-Queries in the FROM clause Sub-Queries in the SELECT clause Correlated Sub-Queries EXISTS with Sub-Queries Nested Sub-Queries 7. Advanced subqueries CS122_W16

Sub-Queries in Select Clause (non-correlated) Syntax SELECT Field, Field, (Select Field From Table2) FROM Table1 The sub-query MUST return Only one row and one column The sub-query can run independently 7. Advanced subqueries CS122_W16

Sub-Queries in Select Clause (non-correlated) List track title, length in seconds, and the total seconds for the entire CD for all tracks in TitleID 4 Select titleid, TrackTitle, LengthSeconds From Tracks Where titleid=4 union Select 4, 'Total', Sum(lengthseconds) From Tracks where titleid=4 How to make the total time appear in each row? 7. Advanced subqueries CS122_W16

Sub-Queries in Select Clause (non-correlated) Use a subquery in Select clause! Select titleid, TrackTitle, lengthSeconds, (Select Sum(lengthseconds) From Tracks where titleid=4) As TotSec From Tracks Where titleid=4 7. Advanced subqueries CS122_W16

Sub-Queries in Select Clause (non-correlated) List track title, length in seconds, and the total seconds and the length as a percentage of the total time for the CD for all tracks in TitleID 4 Select titleid, TrackTitle, LengthSeconds, (Select Sum(lengthseconds) From Tracks where titleid=4) As TotSec, LengthSeconds /(Select Sum(lengthseconds) From Tracks where titleid=4) *100 As Percentage From Tracks Where titleid=4 7. Advanced subqueries CS122_W16

Outline Queries with UNION Sub-Queries in the FROM clause Sub-Queries in the SELECT clause Correlated Sub-Queries EXISTS with Sub-Queries Nested Sub-Queries 7. Advanced subqueries CS122_W16

Correlated Sub-Queries Syntax SELECT Field, Field, (Select Field From Table2 Where table2.Field=Table1.Field) FROM Table1 WHERE clause in sub-query joins each row to appropriate row of the outer query 7. Advanced subqueries CS122_W16

Example List track title, length in seconds, and the total seconds for the entire CD for all tracks in TitleID 4 in each titleID SELECT titleid,trackTitle, lengthSeconds As Sec, ( Select Sum(lengthseconds) From Tracks SC Where SC.titleID=T.titleID) As TotSec FROM Tracks T 7. Advanced subqueries CS122_W16

Outer Table: Tracks (T) TitleID TrackTitle Length 1 Song 1 10 Song 2 30 2 Song 3 20 Song 4 Song 5 40 Sub-query Select Sum(lengthseconds) From Tracks SC Where SC.titleID=T.TitleID Query results 1 TitleID TrackTitle Length TotalSec 1 Song 1 10 40 7. Advanced subqueries CS122_W16

Outer Table: Tracks (T) TitleID TrackTitle Length 1 Song 1 10 Song 2 30 2 Song 3 20 Song 4 Song 5 40 Sub-query Select Sum(lengthseconds) From Tracks SC Where SC.titleID=T.TitleID Query results 1 TitleID TrackTitle Length TotalSec 1 Song 1 10 40 Song 2 30 7. Advanced subqueries CS122_W16

Outer Table: Tracks (T) TitleID TrackTitle Length 1 Song 1 10 Song 2 30 2 Song 3 20 Song 4 Song 5 40 Sub-query Select Sum(lengthseconds) From Tracks SC Where SC.titleID=T.TitelID Query results 2 TitleID TrackTitle Length TotalSec 1 Song 1 10 40 Song 2 30 2 Song 3 20 90 7. Advanced subqueries CS122_W16

Outer Table: Tracks (T) TitleID TrackTitle Length 1 Song 1 10 Song 2 30 2 Song 3 20 Song 4 Song 5 40 Sub-query Select Sum(lengthseconds) From Tracks SC Where SC.titleID=T.TitelID Query results 2 TitleID TrackTitle Length TotalSec 1 Song 1 10 40 Song 2 30 2 Song 3 20 90 7. Advanced subqueries CS122_W16

Outer Table: Tracks (T) TitleID TrackTitle Length 1 Song 1 10 Song 2 30 2 Song 3 20 Song 4 Song 5 40 Sub-query Select Sum(lengthseconds) From Tracks SC Where SC.titleID=T.TitelID Query results 2 TitleID TrackTitle Length TotalSec 1 Song 1 10 40 Song 2 30 2 Song 3 20 90 Song 5 7. Advanced subqueries CS122_W16

Correlated Sub-Queries Sub-query returns multiple rows without a GROUP BY and a non-aggregate in SELECT Refers in the sub-query to T table alias that exists only in the outer query  Because of unique syntax the sub-query cannot be debugged as independent query Select TrackTitle, LengthSeconds As Sec, (Select Sum(lengthseconds) From Tracks SC Where SC.TitleID=T.TitleID) As TotSec 7. Advanced subqueries CS122_W16

The same example Use From clause subquery to answer the same question: SELECT t.titleid,tracktitle, lengthseconds, totsec FROM Tracks t inner join (select titleid, sum(lengthseconds) as totsec from Tracks group by titleid) sc on sc.titleid=t.titleid 7. Advanced subqueries CS122_W16

Outline Queries with UNION Sub-Queries in the FROM clause Sub-Queries in the SELECT clause Correlated Sub-Queries EXISTS with Sub-Queries Nested Sub-Queries 7. Advanced subqueries CS122_W16

EXISTS with Sub-Queries Syntax SELECT Field1, Field2 FROM Table1 Where Exists (Select Field1, Field2 from Table2 Where Table1.Field1=Table2.Field1) Sub-query returns one or more rows which are correlated with rows of outer query If any matching sub-query rows are found, row from outer query is reported 7. Advanced subqueries CS122_W16

EXISTS with Sub-Queries EXISTS checks for the existence of data in the sub-query Data is either there (True) or it isn't (False) Often used as a WHERE clause sub-query but with correlated sub-query syntax Example: Report a list of all artists with more than one member 7. Advanced subqueries CS122_W16

EXISTS with Sub-Queries Select Artistname From Artists A Where Exists (Select ArtistID, Count(MemberID) From XrefArtistsMembers X Where X.ArtistID= A.ArtistID Group by ArtistID Having Count(MemberID)>1)   Artistname --------------------- Word Sonata The Bullets Confused The Kicks Today 21 West Elm Highlander ArtistID ----------- ----------- 3 2 5 3 10 3 11 2 15 3 16 2 17 2 18 3 Sub-query results 7. Advanced subqueries CS122_W16

Correlated Sub-Queries vs. Joins Correlated sub-query Select Artistname From Artists A Where Exists (Select ArtistID, Count(MemberID) From XrefArtistsMembers X Where X.ArtistID= A.ArtistID Group by ArtistID Having Count(MemberID)>1) Select Artistname From Artists A Inner Join (Select ArtistID, Count(MemberID) as NumMem From XrefArtistsMembers Group by ArtistID Having Count(MemberID)>1) SQ On A.ArtistID = SQ.ArtistID Join with same results 7. Advanced subqueries CS122_W16

Outline Queries with UNION Sub-Queries in the FROM clause Sub-Queries in the SELECT clause Correlated Sub-Queries EXISTS with Sub-Queries Nested Sub-Queries 7. Advanced subqueries CS122_W16

Nested Sub-queries SQL allows nesting sub-queries within sub-queries Number of levels allowed is not so important You will get confused before SQL does Example List the names of all the artists who have recorded a title with ten or more tracks 7. Advanced subqueries CS122_W16

Example Select Artistname From Artists A Where Exists (Select ArtistID From Titles T Where T.ArtistID= A.ArtistID And Exists (Select TitleID, Count(TrackNum) From Tracks TR Where TR.TitleID = T.TitleID Group by TitleID Having Count(Tracknum)>=10) ) 7. Advanced subqueries CS122_W16