oracle join syntax
TRANSCRIPT
-
8/9/2019 Oracle Join Syntax
1/28
Copyright 2006, Oracle. All rights reserved.
Oracle Join Syntax
-
8/9/2019 Oracle Join Syntax
2/28
Copyright 2006, Oracle. All rights reserved.C - 2
Objectives
After completing this lesson, you should be able to do
the following:
Write SELECT statements to access data from more
than one table using equijoins and nonequijoins Use outer joins to view data that generally does not
meet a join condition
Join a table to itself by using a self-join
-
8/9/2019 Oracle Join Syntax
3/28
Copyright 2006, Oracle. All rights reserved.C - 3
Obtaining Data from Multiple Tables
EMPLOYEES DEPARTMENTS
-
8/9/2019 Oracle Join Syntax
4/28
Copyright 2006, Oracle. All rights reserved.C - 4
Cartesian Products
A Cartesian product is formed when:
A join condition is omitted
A join condition is invalid
All rows in the first table are joined to all rows in thesecond table
To avoid a Cartesian product, always include avalid join condition in a WHERE clause.
-
8/9/2019 Oracle Join Syntax
5/28
-
8/9/2019 Oracle Join Syntax
6/28
Copyright 2006, Oracle. All rights reserved.C - 6
Equijoin
Nonequijoin
Outer join
Self-join
Types of Joins
Cross join
Natural join
Using clause
Full (or two-sided)
outer join
Arbitrary joincondition for outer
join
SQL:1999compliant joinsOracle-proprietary joins(8i and earlier releases)
-
8/9/2019 Oracle Join Syntax
7/28
Copyright 2006, Oracle. All rights reserved.C - 7
Joining Tables Using Oracle Syntax
Use a join to query data from more than one table:
Write the join condition in the WHERE clause.
Prefix the column name with the table name when
the same column name appears in more than onetable.
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column1 = table2.column2;
-
8/9/2019 Oracle Join Syntax
8/28
Copyright 2006, Oracle. All rights reserved.C - 8
Equijoins
EMPLOYEES DEPARTMENTS
Foreign key Primary key
-
8/9/2019 Oracle Join Syntax
9/28
Copyright 2006, Oracle. All rights reserved.C - 9
SELECT employees.employee_id, employees.last_name,
employees.department_id, departments.department_id,
departments.location_id
FROM employees, departments
WH
ERE employees.department_id = departments.department_id;
Retrieving Records
with Equijoins
-
8/9/2019 Oracle Join Syntax
10/28
Copyright 2006, Oracle. All rights reserved.C - 1 0
Additional Search ConditionsUsing theAND Operator
EMPLOYEES DEPARTMENTS
-
8/9/2019 Oracle Join Syntax
11/28
Copyright 2006, Oracle. All rights reserved.C - 11
Qualifying Ambiguous Column Names
Use table prefixes to qualify column names that are in
multiple tables.
Use table prefixes to improve performance.
Use column aliases to distinguish columns that haveidentical names but reside in different tables.
-
8/9/2019 Oracle Join Syntax
12/28
Copyright 2006, Oracle. All rights reserved.C - 1 2
SELECT e.employee_id, e.last_name, e.department_id,d.department_id, d.location_id
FROM employees e , departments d
WHERE e.department_id = d.department_id;
Using Table Aliases
Use table aliases to simplify queries.
Use table prefixes to improve performance.
-
8/9/2019 Oracle Join Syntax
13/28
Copyright 2006, Oracle. All rights reserved.C - 1 3
Joining More Than Two Tables
EMPLOYEES LOCATIONSDEPARTMENTS
To join n tables together, you need a minimum of n1
join conditions. For example, to join three tables, a
minimum of two joins is required.
-
8/9/2019 Oracle Join Syntax
14/28
Copyright 2006, Oracle. All rights reserved.C - 1 4
Nonequijoins
EMPLOYEES JOB_GRADES
Salary in the EMPLOYEEStable must be between
lowest salary and highest
salary in the JOB_GRADES
table.
-
8/9/2019 Oracle Join Syntax
15/28
Copyright 2006, Oracle. All rights reserved.C - 1 5
Retrieving Records
with Nonequijoins
SELECT e.last_name, e.salary, j.grade_level
FROM employees e, job_grades j
WHERE e.salary
BETWEEN j.lowest_sal AND j.highest_sal;
-
8/9/2019 Oracle Join Syntax
16/28
Copyright 2006, Oracle. All rights reserved.C - 1 6
Outer Joins
EMPLOYEESDEPARTMENTS
There are no employees
in department 190.
-
8/9/2019 Oracle Join Syntax
17/28
Copyright 2006, Oracle. All rights reserved.C - 1 7
Outer Joins Syntax
You use an outer join to see rows that do not meet the
join condition.
The outer join operator is the plus sign (+).
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column(+) = table2.column;
SELECTtable1.column, table2.column
FROM table1, table2
WHERE table1.column = table2.column(+);
-
8/9/2019 Oracle Join Syntax
18/28
Copyright 2006, Oracle. All rights reserved.C - 1 8
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id(+) = d.department_id ;
Using Outer Joins
-
8/9/2019 Oracle Join Syntax
19/28
Copyright 2006, Oracle. All rights reserved.C - 1 9
Self-Joins
EMPLOYEES (WORKER) EMPLOYEES (MANAGER)
MANAGER_ID in the WORKERtable is equal to
EMPLOYEE_ID in theMANAGERtable.
-
8/9/2019 Oracle Join Syntax
20/28
Copyright 2006, Oracle. All rights reserved.C - 2 0
Joining a Table to Itself
SELECT worker.last_name || ' works for '
|| manager.last_name
FROM employees worker, employees manager
WH
ERE worker.manager_id = manager.employee_id ;
-
8/9/2019 Oracle Join Syntax
21/28
Copyright 2006, Oracle. All rights reserved.C - 2 1
Summary
In this appendix, you should have learned how to use joins
to display data from multiple tables by using Oracle-
proprietary syntax for versions 8i and earlier.
-
8/9/2019 Oracle Join Syntax
22/28
Copyright 2006, Oracle. All rights reserved.C - 2 2
Practice C: Overview
This practice covers writing queries to join tables using
Oracle syntax.
-
8/9/2019 Oracle Join Syntax
23/28
Copyright 2006, Oracle. All rights reserved.C - 2 3
-
8/9/2019 Oracle Join Syntax
24/28
Copyright 2006, Oracle. All rights reserved.C - 2 4
-
8/9/2019 Oracle Join Syntax
25/28
Copyright 2006, Oracle. All rights reserved.C - 2 5
-
8/9/2019 Oracle Join Syntax
26/28
Copyright 2006, Oracle. All rights reserved.C - 2 6
-
8/9/2019 Oracle Join Syntax
27/28
-
8/9/2019 Oracle Join Syntax
28/28
Copyright 2006, Oracle. All rights reserved.C - 2 8