Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL...
-
Upload
matthew-simon-mccarthy -
Category
Documents
-
view
236 -
download
1
Transcript of Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL...
![Page 1: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/1.jpg)
Dr. Chen, Oracle Database System (Oracle) 1
Database Development
DDL
DML
DCL
JL_D.B.
ORACLE(SQL Components)
(Retrieve Data and Produce Information from Multiple Tables)
![Page 2: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/2.jpg)
Dr. Chen, Oracle Database System (Oracle) 2
Chapter 9Joining Data from Multiple
Tables(p.284-296; p.312-330)
Jason C. H. Chen, Ph.D.
Professor of MIS
School of Business
Gonzaga University
Spokane, WA 99258 USA
![Page 3: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/3.jpg)
Dr. Chen, Oracle Database System (Oracle) 3
Objectives
• Identify a Cartesian join• Create an equality join using the WHERE clause• Create an equality join using the JOIN keyword• Create a non-equality join using the WHERE
clause• Create a non-equality join using the JOIN…ON
approach
![Page 4: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/4.jpg)
Dr. Chen, Oracle Database System (Oracle) 4
Objectives (continued)
• Create a self-join using the WHERE clause• Create a self-join using the JOIN keyword• Distinguish an inner join from an outer join• Create an outer join using the WHERE clause• Create an outer join using the OUTER
keyword• Use set operators to combine the results of
multiple queries
![Page 5: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/5.jpg)
Dr. Chen, Oracle Database System (Oracle) 5
Creating additional Tables for chapter 9
• Run the following command for creating additional tables:SQL>start c:\oradata\chapter9\JLDB_Build_9.sql
• The following new four tables will be added to your database (see next slide for details):– Warehouses,– Publisher2, Publisher3 and– Employees
![Page 6: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/6.jpg)
Dr. Chen, Oracle Database System (Oracle) 6
wh_id locationNUMBER(2) VARCHAR2(12)
ID Name Contact Phone
NUMBER(2) VARCHAR2(23) VARCHAR2(15) VARCHAR2(12)
ID Name Contact Phone
NUMBER(2) VARCHAR2(23) VARCHAR2(15) VARCHAR2(12)
EMPNO LNAME FNAME JOB HIREDATE DEPTNO MTHSAL MGR
NUMBER(4) VARCHAR2(20) VARCHAR2(15) VARCHAR2(19) DATE NUMBER(2) NUMBER(7,2) NUMBER(4)
pk
pk
pk
pk
warehouses
Publishe2
Publishe3
Employees
Publishe2 Publishe3
warehouses
Additional Database for chapter 9
Do we really need to create two additional Publisher tables (i.e., Publisher2 and Publisher3) ?
![Page 7: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/7.jpg)
Dr. Chen, Oracle Database System (Oracle) 7
Purpose of Joins
• Joins are used to link tables and reconstruct data in a relational database
• Joins can be created through:– Conditions in a WHERE clause– Use of JOIN keywords in FROM clause
![Page 8: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/8.jpg)
Dr. Chen, Oracle Database System (Oracle) 8
How many records will be in the Cartesian Join?
Figure 9-1 Results of a Cartesian Product
![Page 9: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/9.jpg)
Dr. Chen, Oracle Database System (Oracle) 9
Cartesian Joins
• Created by omitting joining condition in the WHERE clause or through CROSS JOIN keywords in the FROM clause
• Results in every possible row combination (m * n)
• They are useful when– performing certain statistical procedures for
data analysis
![Page 10: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/10.jpg)
Dr. Chen, Oracle Database System (Oracle) 10
Cartesian Join Example:Omitted Condition
Figure 9-3 Producing an unintentional Cartesian join
Q: Why unintentional Cartesian join is produced?
A: Because Oracle didn’t know what data the two tables had in common.
Q: How to solve the problem?
A: Use of Equality Joins (or inner/simple/natural).
-- chapter 9, Figure 9-3; p.288SELECT title, nameFROM books, publisher;
(70 rows produced)
![Page 11: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/11.jpg)
Dr. Chen, Oracle Database System (Oracle) 11
Cartesian Join Example:CROSS (Cartesian) JOIN Keywords
Figure 9-4 Using the CROSS JOIN keywords
-- chapter 9, Figure 9-2; p.287SELECT isbn, title, location, ' ' CountFROM books, warehousesORDER BY location, title;
-- chapter 9, Figure 9-4; p.289SELECT isbn, title, location, ' ' CountFROM books CROSS JOIN warehousesORDER BY location, title;
(42 rows produced)
-- chapter 9, Figure 9-2b; p.287SELECT count (location)FROM books, warehousesORDER BY location, title;
![Page 12: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/12.jpg)
Dr. Chen, Oracle Database System (Oracle) 12
Equality Joins
• Link rows through equivalent data that exists in both tables
• Created by:– Creating equivalency condition in the WHERE
clause– Using NATURAL JOIN, JOIN…USING, or
JOIN…ON keywords in the FROM clause
![Page 13: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/13.jpg)
Dr. Chen, Oracle Database System (Oracle) 13
Joining Multiple Tables
• Join: combine data from multiple database tables using foreign key references
• SELECT field1, field2, ... FROM table1, table2 WHERE table1.joinfield = table2.joinfield AND search_condition(s);• If tables share field names, must prefix field in select
with table name (table1.field1, table2.field1)• Join condition: part of where clause indicating how
tables are related (table1.foreign_key = table2.primary key)
• Search conditions can be added to join condition using AND operator
![Page 14: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/14.jpg)
Dr. Chen, Oracle Database System (Oracle) 14
Inner Join (cont.)
-- Exatra exampleSELECT s_id, s_last, s_first, student.f_id, f_lastFROM student, facultyWHERE student.f_id = faculty.f_id;
S_ID S_LAST S_FIRST F_ID F_LAST------ -------- -------- ---- --------1 Jones Tammy 1 Cox2 Perez Jorge 1 Cox3 Marsh John 1 Cox4 Smith Mike 2 Blanchard5 Johnson Lisa 4 Sheng6 Nguyen Ni 3 Williams6 rows selected.
Q: why “Brown” is not on the result?
Q: How many rows will be produced if “C-Join” is used?
![Page 15: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/15.jpg)
Dr. Chen, Oracle Database System (Oracle) 15
Natural Join – Inner Join
• It can be used when the tables have a single commonly named and defined column.
-- Extra ExampleSELECT s_id, s_last, s_first, student.f_id, f_lastFROM student, facultyWHERE student.f_id = faculty.f_id;
-- Use NATURAL JOINSELECT s_id, s_last, s_first, f_id, f_lastFROM student NATURAL JOIN faculty;
S_ID S_LAST S_FIRST F_ID F_LAST------ -------- -------- ---- --------1 Jones Tammy 1 Cox2 Perez Jorge 1 Cox3 Marsh John 1 Cox4 Smith Mike 2 Blanchard5 Johnson Lisa 4 Sheng6 Nguyen Ni 3 Williams6 rows selected.
![Page 16: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/16.jpg)
Dr. Chen, Oracle Database System (Oracle) 16
Equality Joins (Traditional Method): WHERE Clause Example
Figure 9-6 An equality join
![Page 17: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/17.jpg)
Dr. Chen, Oracle Database System (Oracle) 17
Qualifying Column Names• Columns in
both tables must be qualified
Figure 9-7 A “column ambiguously defined” error
• Which table is “pubid” from?
• Is it from publisher or books?-- chapter 9, Figure 9-7(b); p.292
SELECT title, books.pubid, nameFROM books, publisherWHERE books.pubid = publisher.pubid;
![Page 18: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/18.jpg)
Dr. Chen, Oracle Database System (Oracle) 18
WHERE Clause Supports Join and Other Conditions
Figure 9-8 Including search and join conditions in a WHERE clause
-- Use aliases -- chapter 9, Figure 9-9; p.294SELECT b.title, b.pubid, p.nameFROM books b, publisher pWHERE b.pubid = p.pubidAND (b.cost < 15 OR p.pubid = 1)ORDER BY title;
![Page 19: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/19.jpg)
Dr. Chen, Oracle Database System (Oracle) 19
Using a Query Design Diagram
• Helpful for creating complicated queries• Can use a formula to derive actual query from diagram
Customers• customer#
(j)• lastname (d)• firstname (d)
Orders• order# (j)• customer#
(j)
Orderitems• order# (j)• isbn (j)
Query: Display customers’ lastname, firstname and books’ title they purchased
Books• isbn (j)• title (d)
j: join
s: search
d: display
![Page 20: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/20.jpg)
Dr. Chen, Oracle Database System (Oracle) 20
Query: Display customers’ lastname, firstname and books’ title they purchased
j: join
s: search
d: display
Customers• customer#
(j)• lastname (d)• firstname (d)
Orders• order# (j)• customer#
(j)
Orderitems• order# (j)• isbn (j)
Books• isbn (j)• title (d)
You can derive your query from the diagram by following these steps:
1. Place the display fields in the SELECT clause
2. List all of the tables in the FROM clause
3. Include the links in join conditions in the WHERE clause
4. Include all of the search fields in the WHERE clause (if needed)
Figure: Join query design diagram
![Page 21: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/21.jpg)
Dr. Chen, Oracle Database System (Oracle) 21
Query: Display customers’ lastname, firstname and books’ title they purchased
j: join
s: search
d: display
Customers• customer#
(j)• lastname (d)• firstname (d)
Orders• order# (j)• customer#
(j)
Orderitems• order# (j)• isbn (j)
Books• isbn (j)• title (d)
Figure: Join query design diagram
-- chapter 9, Figure 9-10; p.295SELECT c.lastname, c.firstname, b.titleFROM customers c, orders o, orderitems oi, books bWHERE c.customer# = o.customer#AND o.order# = oi.order#AND oi.isbn = b.isbnORDER BY lastname, firstname;
![Page 22: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/22.jpg)
Dr. Chen, Oracle Database System (Oracle) 22
Joining More Than Two Tables
Figure 9-10 Joining four tables
• Joining four tables requires three join conditions
• Joining N tables requires ___ join conditions
![Page 23: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/23.jpg)
Dr. Chen, Oracle Database System (Oracle) 23
Query: Display customers’ lastname, firstname and books’ title and only in ‘COMPUTER’ category
j: join
s: search
d: display
Customers• customer# (j)• lastname (d)• firstname (d)
Orders• order# (j)• customer# (j)
Orderitems• order# (j)• isbn (j)
Books• isbn (j)• title (d)• _______
Figure: Join query design diagram
-- chapter 9, Figure 9-10; p.295SELECT c.lastname, c.firstname, b.titleFROM customers c, orders o, orderitems oi, books bWHERE c.customer# = o.customer#AND o.order# = oi.order#AND oi.isbn = b.isbn
ORDER BY lastname, firstname;AND category = ‘COMPUTER’
category (s)
![Page 24: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/24.jpg)
Dr. Chen, Oracle Database System (Oracle) 24
Equality Joins: NATURAL JOIN
Figure 9-12 Using the NATURAL JOIN keywords
![Page 25: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/25.jpg)
Dr. Chen, Oracle Database System (Oracle) 25
No Qualifiers with a NATURAL JOIN
Figure 9-13 Column qualifier error with a NATURAL JOIN
Natural Join keyword (e.g, pubid), we are not required to be specified when the two tables have it in common.
Therefore most developers avoid using a NATURAL JOIN because it can cause unexpected results.
![Page 26: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/26.jpg)
Dr. Chen, Oracle Database System (Oracle) 26
Equality Joins: JOIN…USING
Figure 9-14 Performing a join with the JOIN … USING keywords
![Page 27: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/27.jpg)
Dr. Chen, Oracle Database System (Oracle) 27
Break
• Assignments (#2 & #5 on p. 329; see at the end of the slides)
• Figure out how to produce the output with ‘$’ displayed (below is a sample output for #5, p.329) – hint:
• a) column …• b) TO_CHAR (see p.365-367 and ‘learning to learn’)
TITLE PROFIT ------------------------------ -------- PAINLESS CHILD-REARING $37.45 HOW TO MANAGE THE MANAGER $16.55 PAINLESS CHILD-REARING $37.45
TO_CHAR( )PROFIT, _______
![Page 28: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/28.jpg)
Dr. Chen, Oracle Database System (Oracle) 28
Query: list all author IDs with books in the ‘Children’ category
Query: list all author IDs with books in the ‘Family Life’ category
SELECT ba.authorid FROM books b JOIN bookauthor ba USING (isbn) WHERE category = 'FAMILY LIFE‘;
SELECT ba.authorid FROM books b JOIN bookauthor ba USING (isbn) WHERE category = 'CHILDREN';
![Page 29: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/29.jpg)
Dr. Chen, Oracle Database System (Oracle) 29
Query: list all author IDs with books in the ‘Family Life’ or ‘Children’ category
-- chapter 9, Figure 9-28; p. 313(version 1)SELECT ba.authorid FROM books b JOIN bookauthor ba USING (isbn) WHERE category = ‘FAMILY LIFE’
Anything not appropriate in the output?
OR category = ‘CHILDREN’;
How to take care this type of problem in an easy way?
-- chapter 9, Figure 9-28; p. 313(version 2)SELECT _______ (ba.authorid) FROM books b JOIN bookauthor ba USING (isbn) WHERE category = 'FAMILY LIFE' OR category = 'CHILDREN';
What else we can achieve the same goal (and other more complicated situation) ?
![Page 30: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/30.jpg)
Dr. Chen, Oracle Database System (Oracle) 30
Using Set Operators to Combine Query Results
• Performs set operations on outputs of two unrelated queries
• They all require that both queries– have the same number of display fields in the
SELECT statement, and that– each field in the first query has the same data
type as the corresponding column in the second query.
• <query 1> <SET Operator> <query 2>
![Page 31: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/31.jpg)
Dr. Chen, Oracle Database System (Oracle) 31
A B
SET THEORY
![Page 32: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/32.jpg)
Dr. Chen, Oracle Database System (Oracle) 32
C
SET THEORY
=A-B
=B-A
=A INTERSECT B=
All Regions =A UNION B(with C counted just once)
A-B B-A
A
BC
![Page 33: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/33.jpg)
Dr. Chen, Oracle Database System (Oracle) 33
C
SET THEORY
A MINUS B=D
B MINUS A=E
A INTERSECT B=
A UNION B =
D E
A UNION ALL B = D+C+E+__C
C
D+C+E
A
B
![Page 34: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/34.jpg)
Dr. Chen, Oracle Database System (Oracle) 34
Oracle 11g/SQL Set Operator (Table 9-2)
• UNION (see Figure 9-28)– returns all rows from both queries, but ONLY displays
duplicate rows once• UNION ALL (see Figure 9-30)
– returns all (duplicate) rows from both queries, and displays ALL duplicate rows
• INTERSECT (see Figure 9-34)– returns all matching rows that are returned by both queries
• MINUS (see Figure 9-35)– returns all rows returned by the first query minus the
matching rows returned by the second query
i Use to select data from multiple tables not connected with foreign key relationships
i Used to combine the results of two or more SELECT statements
![Page 35: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/35.jpg)
Dr. Chen, Oracle Database System (Oracle) 35
Query: list all author IDs with books in the ‘Family Life’ or ‘Children’ category
SELECT ba.authorid FROM books b JOIN bookauthor ba USING (isbn) WHERE category = 'FAMILY LIFE‘
SELECT ba.authorid FROM books b JOIN bookauthor ba USING (isbn) WHERE category = 'CHILDREN';
UNION
Figure 9-28 Producing an unduplicated combined list with the UNION set operator
![Page 36: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/36.jpg)
Dr. Chen, Oracle Database System (Oracle) 36
Set Operators: UNION and UNION ALL Examples
What is the “difference” on the outputs?
![Page 37: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/37.jpg)
Dr. Chen, Oracle Database System (Oracle) 37
Figure 9-34 Identifying overlapping values with the INTERSECT set operator
Query: list all customer numbers and those customers who have placed an order recently
SELECT customer# FROM customers
SELECT customer# FROM orders;
INTERSECT
![Page 38: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/38.jpg)
Dr. Chen, Oracle Database System (Oracle) 38
Query: list all customer numbers but haven’t placed an order recently
Figure 9-35 Subtract result sets with the MINUS set operator
SELECT customer# FROM customers
SELECT customer# FROM orders;
MINUS
![Page 39: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/39.jpg)
Dr. Chen, Oracle Database System (Oracle) 39
Query: A list of faculty members whose offices are in the BUS building. (Extra example)
FACULTYf_first (d)i f_last (d)i loc_id (j)
LOCATIONloc_id (j)i bldg_code (s)
SELECT f_first, f_last
FROM faculty, location
WHERE faculty.loc_id = location.loc_id
AND bldg_code = 'BUS';
MORE EXAMPLES on SET OPERATORSYou need to run the following command to make the example work:@ c:\oradata\NW_CW\northwoods.sql
![Page 40: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/40.jpg)
Dr. Chen, Oracle Database System (Oracle) 40
Query: A list of faculty members who have taught a course in the BUS building.
FACULTYf_first (d)i f_last (d)i f_id (j)
LOCATIONloc_id (j)i bldg_code (s)
COURSE_SECTIONf_id (j)i loc_id (j)
SELECT DISTINCT f_first, f_lastFROM faculty, location, course_sectionWHERE faculty.f_id = course_section.f_idAND location.loc_id = course_section.loc_idAND bldg_code = 'BUS';
![Page 41: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/41.jpg)
Dr. Chen, Oracle Database System (Oracle) 41
Query: A list of faculty members whose offices are in the BUS building or who have taught a course in the BUS building. (extra example)
SELECT f_first, f_lastFROM faculty, locationWHERE faculty.loc_id = location.loc_idAND bldg_code = 'BUS'
SELECT f_first, f_lastFROM faculty, location, course_sectionWHERE faculty.f_id = course_section.f_idAND location.loc_id = course_section.loc_idAND bldg_code = 'BUS';
UNION
Officein ‘BUS’
Taughtcoursesin ‘BUS’
![Page 42: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/42.jpg)
Dr. Chen, Oracle Database System (Oracle) 42
Query: A list of faculty members whose offices are in the BUS building and who have taught a course in the BUS building. (extra example)
SELECT f_first, f_lastFROM faculty, locationWHERE faculty.loc_id = location.loc_idAND bldg_code = 'BUS'
SELECT f_first, f_lastFROM faculty, location, course_sectionWHERE faculty.f_id = course_section.f_idAND location.loc_id = course_section.loc_idAND bldg_code = 'BUS';
INTERSECT
Officein ‘BUS’
Taughtcoursesin ‘BUS’
![Page 43: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/43.jpg)
Dr. Chen, Oracle Database System (Oracle) 43
And NEXT ...
Query: A list of faculty members who have taught a course in the BUS building, but whose office are NOT located in the BUS
SELECT f_first, f_lastFROM faculty, location, course_sectionWHERE faculty.f_id = course_section.f_idAND location.loc_id = course_section.loc_idAND bldg_code = 'BUS';
SELECT f_first, f_lastFROM faculty, locationWHERE faculty.loc_id = location.loc_idAND bldg_code = 'BUS'
MINUS
Officein ‘BUS’
Taughtcoursesin ‘BUS’
![Page 44: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/44.jpg)
Dr. Chen, Oracle Database System (Oracle) 44
• Practice all the examples in the text.• A Script file is available on the Bb (file
name: ch9Queries.sql)• After completing all examples, do the HW.
![Page 45: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/45.jpg)
Dr. Chen, Oracle Database System (Oracle) 45
Homework - Hands-On Assignments
Read and Practice all examples on Chapters 9• 1. Run the script files (in the folder \oradata\chapter9\):
JLDB_Build_9.sql• 2a. Read Oracle assignment and create a script file
Oracle_ch9_Lname_Fname.sql for questions (#2 & #5 ; p.329) on “Hands-on Assignments” (use TWO SQL queries, traditional one and with “JOIN” read instructions carefully)
• 2b. Be sure to use i) traditional method, ii) JOIN keyword, iii) draw Query Design Diagrams for each problem, and iv) use COLUMN statement to produce readable outputs – see next slide for details
• 3. Execute and test one problem at a time and make sure they are all running successfully.
• 4. When you done, spool the script files (see next slide for spooling instructions) and email the file
• 5. Include Query Design Diagrams
Email me with one attachment(Oracle_ch9_Spool_Lname_Fname.) to:[email protected] subject title of Bmis441-01_Oracle_ch9 (or Bmis441-02_Oracle_ch9)
![Page 46: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/46.jpg)
Dr. Chen, Oracle Database System (Oracle) 46
Bonus Assignment
--****************************************************************-- Marketing department is analyzing books that don't sell. -- A list of ISBNs and Book Titles for all books is needed. -- Use a set operation (based on JL_Database to complete this task.--****************************************************************
-- a sample solutionISBN TITLE---------- ------------------------------0132149871 HOW TO GET FASTER PIZZA0299282519 THE WOK WAY TO COOK4981341710 BUILDING A CAR WITH TOOTHPICKS
![Page 47: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/47.jpg)
Dr. Chen, Oracle Database System (Oracle) 47
How to Spool your Script and Output Files and add Query Design Diagrams
After you tested the script file of Oracle_ch9_Lname_Fname.sql successfully, follow the instructions below to spool both script and output files:
Step 0. Run the following script file from SQL*Plus (since you have created JLDB tables)– Start c:\oradata\chapter9\JLDB_Build_9.sql
• 1. type the following on SQL>– Spool c:\oradata\Oracle_ch9_Spool_Lname_Fname.txt (make sure
your name is entered)• 2. open Oracle_ch9_Lname_Fname.sql that you already tested• 3. copy and paste all the SQL commands (including all comments) to the
SQL*PLUS • 4. type Spool Off on the SQL>The output should contain your personal information, all SQL commands and
their solution on the .txt file and saved in C: drive (oradata\folder). Be sure that COLUMN commands might be needed on the script file to align
the output.
![Page 48: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/48.jpg)
Dr. Chen, Oracle Database System (Oracle) 48
How to Spool your Script and Output Files and add Query Design Diagrams (continued)
• 5. Next, you should use MS/Word to open the *.txt file and
include/DRAW “Query Design Diagram” figures for queries with multiple tables. You may use font of “Courier new” to align the output.
• 6. Save it as *.docx file.
Email me with the *.doc (or *.docx) file that includes all required documents with attachment to:[email protected] subject title of Bmis441-01_Oracle_ch9 (or Bmis441-02_Oracle_ch9)
![Page 49: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/49.jpg)
Dr. Chen, Oracle Database System (Oracle) 49
Summary• Data stored in multiple tables regarding a single
entity can be linked together through the use of joins
• A Cartesian join between two tables returns every possible combination of rows from the tables; the resulting number of rows is always m * n
• An equality join is created when the data joining the records from two different tables are an exact match
• A non-equality join establishes a relationship based upon anything other than an equal condition
• Self-joins are used when a table must be joined to itself to retrieve needed data
![Page 50: Dr. Chen, Oracle Database System (Oracle) 1 Database Development DDL DML DCL JL_D.B. ORACLE (SQL Components) (Retrieve Data and Produce Information from.](https://reader035.fdocuments.us/reader035/viewer/2022081512/56649e495503460f94b3c00d/html5/thumbnails/50.jpg)
Dr. Chen, Oracle Database System (Oracle) 50
Summary (continued)
• Inner joins are categorized as being equality, non-equality, or self-joins
• An outer join is created when records need to be included in the results without having corresponding records in the join tables– The record is matched with a NULL record so it will be
included in the output• Set operators such as UNION, UNION ALL,
INTERSECT, and MINUS can be used to combine the results of multiple queries