Rabu, 16 November 2011

Less05Displaying Data

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 non-equijoins
Join a table to itself by using a self-join
View data that generally does not meet a join condition by using outer joins
Generate a Cartesian product of all rows from two or more tables
Joins that are compliant with the SQL:1999 standard include the following:
Cross joins
Natural joins
USING clause
Full (or two-sided) outer joins
Arbitrary join conditions for outer joins
The NATURAL JOIN clause is based on all columns in the two tables that have the same name.
It selects rows from the two tables that have equal values in all matched columns.
If the columns having the same names have different data types, an error is returned.

SELECT department_id, department_name,
       location_id, city
FROM   departments
NATURAL JOIN locations ;


If several columns have the same names but the data types do not match, the NATURAL JOIN clause can be modified with the USING clause to specify the columns that should be used for an equijoin.
Use the USING clause to match only one column when more than one column matches.
Do not use a table name or alias in the referenced columns.
SELECT employees.employee_id, employees.last_name,
       departments.location_id, department_id
FROM   employees JOIN departments
USING (department_id) ;


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 have identical names but reside in different tables.
Do not use aliases on columns that are identified in the USING clause and listed elsewhere in the SQL statement.

Use table aliases to simplify queries.
Use table aliases to improve performance

SELECT e.employee_id, e.last_name,
       d.location_id, department_id
FROM   employees e JOIN departments d
USING (department_id) ;


The join condition for the natural join is basically an equijoin of all columns with the same name.
Use the ON clause to specify arbitrary conditions or specify columns to join.
The join condition is separated from other search conditions.
The ON clause makes code easy to understand.

SELECT e.employee_id, e.last_name, e.department_id,
       d.department_id, d.location_id
FROM   employees e JOIN departments d
ON     (e.department_id = d.department_id);


SELECT e.last_name emp, m.last_name mgr
FROM   employees e JOIN employees m
ON    (e.manager_id = m.employee_id);


SELECT e.employee_id, e.last_name, e.department_id,
       d.department_id, d.location_id
FROM   employees e JOIN departments d
ON     (e.department_id = d.department_id)
AND    e.manager_id = 149 ;

SELECT employee_id, city, department_name
FROM   employees e
JOIN   departments d
ON     d.department_id = e.department_id
JOIN   locations l
ON     d.location_id = l.location_id;



In SQL:1999, the join of two tables returning only matched rows is called an inner join.
A join between two tables that returns the results of the inner join as well as the unmatched rows from the left (or right) tables is called a left (or right) outer join.
A join between two tables that returns the results of an inner join as well as the results of a left and right join is a full outer join.
SELECT e.last_name, e.department_id, d.department_name
FROM   employees e LEFT OUTER JOIN departments d
ON   (e.department_id = d.department_id) ;




SELECT e.last_name, e.department_id, d.department_name
FROM   employees e RIGHT OUTER JOIN departments d
ON    (e.department_id = d.department_id) ;



SELECT e.last_name, d.department_id, d.department_name
FROM   employees e FULL OUTER JOIN departments d
ON   (e.department_id = d.department_id) ;



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 the second table
To avoid a Cartesian product, always include a valid join condition.
The CROSS JOIN clause produces the cross-product of two tables.
This is also called a Cartesian product between the two tables


SELECT last_name, department_name
FROM   employees
CROSS JOIN departments ;


In this lesson, you should have learned how to use joins to display data from multiple tables by using:
Equijoins
Non-equijoins
Outer joins
Self-joins
Cross joins
Natural joins
Full (or two-sided) outer joins
This practice covers the following topics:
Joining tables using an equijoin
Performing outer and self-joins
Adding conditions








Tidak ada komentar:

Posting Komentar