You are on page 1of 41

SQL Mltiples Tablas

Relaciones entre Tablas

Primary Key Primary Key

5-2
Foreign Key
Terminologa de Base de Datos
1. Fila Simple (tupla)
2 Relacional 2. Columna (PK)
3. Columna
(representa un
6 tipo de dato)
4. Columna (FK)
5. Campo
5 6. Campo sin valor

3 4
5-3
Bases de Datos Relacionales

Puede ser consultada y alterada por la ejecucin


sentencias SQL (Structured Query Languaje) es el
estndar ANSI (American National Standarts Institute)
Conjunto de tablas sin punteros fsicos
Uso de un grupo de operadores

5-4
Comunicacin RDBMS & SQL

select employee_id, last_name, first_name,


salary, commission_pct, department_id
from employees

RDBMS

Ventajas del SQL:


- Eficiente
- Fcil de aprender
- Funcional
5-5
SQL Sentencias ~ DML

SELECT
DML (Data Manipulation Language)
INSERT
UPDATE Recuperan datos, crean nuevas filas,
cambian filas existentes y remueven
DELTE filas de tablas
MERGE

5-6
SQL Sentencias ~ DDL

CREATE
ALTER DDL (Data Definition Language)
DROP
Configuran, cambian, y remueven
RENAME estructuras de datos
TRUNCATE
COMMENT

5-7
SQL Sentencias ~ DCL

DCL (Data Control Language)


GRANT
Otorgan o remueven derechos sobre
REVOKE los objetos de la base de datos

5-8
SQL Sentencias ~ TC

COMMIT TC (Transaction Control)


ROLLBACK
Controlan los cambios del las DML
SAVEPOINT

5-9
Capacidades del SQL

Proyeccin Seleccin

Unin

5-10
DATOS DESDE MULTIPLES TABLAS
Obtaining Data from Multiple Tables

EMPLOYEES DEPARTMENTS

5-12
Haciendo Consultas de Mltiples
Tablas
Cuando hacemos consultas de ms de una tabla, estas
tienen que unirse (Join).

Se unen (join) las tablas al encontrar columnas que


pareen (match) los datos.

Las tablas que se unen suelen utilizar una condicin con


la clusula WHERE que limitan la cantidad de filas que
se van a mostrar.

5-13
Unin (Joining) de Dos Tablas

En la clausula SELECT se listan todas las


columnas que se desean mostrar.

En la clausula FROM se listan todas las


tablas a las que se les hace referencia en el
query.

En la clausula WHERE se mencionan las filas


que tienen valores comunes de acuerdo a
ciertas columnas.

5-14
Joining Tables Using SQL:1999 Syntax

Use a join to query data from more than one table:


SELECT table1.column, table2.column
FROM table1
[NATURAL JOIN table2] |
[JOIN table2 USING (column_name)] |
[JOIN table2
ON (table1.column_name = table2.column_name)]|
[LEFT|RIGHT|FULL OUTER JOIN table2
ON (table1.column_name = table2.column_name)]|
[CROSS JOIN table2];

5-15
Equijoins
Non-equijoins
Outer joins
Self-joins
Cross joins
Natural joins
Full (or two-sided) outer joins

5-16
Creating Natural 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.

5-17
Retrieving Records with Natural Joins

SELECT department_id, department_name,


location_id, city
FROM departments
NATURAL JOIN locations ;

5-18
Creating Joins with the USING Clause

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.
The NATURAL JOIN and USING clauses are
mutually exclusive.

5-19
Joining Column Names

EMPLOYEES DEPARTMENTS


Foreign key Primary key

5-20
Retrieving Records with the USING Clause

SELECT employees.employee_id, employees.last_name,


departments.location_id, department_id
FROM employees JOIN departments
USING (department_id) ;

5-21
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
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.

5-22
Using Table Aliases

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) ;

5-23
Creating Joins with the ON Clause

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.

5-24
Retrieving Records with the ON Clause

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);

5-25
Self-Joins Using the ON Clause

EMPLOYEES (WORKER) EMPLOYEES (MANAGER)

MANAGER_ID in the WORKER table is equal to


EMPLOYEE_ID in the MANAGER table.

5-26
Self-Joins Using the ON Clause

SELECT e.last_name emp, m.last_name mgr


FROM employees e JOIN employees m
ON (e.manager_id = m.employee_id);

5-27
Applying Additional Conditions
to a Join

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 ;

5-28
Creating Three-Way Joins with the
ON Clause

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;

5-29
Non-Equijoins

EMPLOYEES JOB_GRADES

Salary in the EMPLOYEES


table must be between
lowest salary and highest
salary in the JOB_GRADES
table.

5-30
Retrieving Records
with Non-Equijoins

SELECT e.last_name, e.salary, j.grade_level


FROM employees e JOIN job_grades j
ON e.salary
BETWEEN j.lowest_sal AND j.highest_sal;

5-31
Outer Joins

DEPARTMENTS EMPLOYEES

There are no employees in


department 190.

5-32
INNER Versus OUTER Joins

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.

5-33
LEFT 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) ;

5-34
RIGHT OUTER JOIN

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) ;

5-35
FULL OUTER JOIN

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) ;

5-36
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 the
second table
To avoid a Cartesian product, always include a
valid join condition.

5-37
Generating a Cartesian Product

EMPLOYEES (20 rows) DEPARTMENTS (8 rows)

Cartesian product:
20 x 8 = 160 rows

5-38
Creating Cross Joins

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 ;

5-39
EJERCICIOS

1. Muestre: location ID, street address, city, state or province, and


country in the output. Use un NATURAL JOIN para la sentencia
2. Muestre: last name, department number, and department name para
todos los empleados que han sido contratados hace 13 aos
3. Muestre last name, job, department number, and department name
para todos los empleados que trabajan en Toronto.
4. Cree una sentencia que muestre: el apellido, el nombre de
departamento y el nombre del manager para cada empleado que
gana mas de 8000

5-40
1. Muestre a todos los empleados incluyendo a King,quien no tiene manager.
Ordene los resultados por el codigo de empleado
2. Muestre un reporte con: last names, department numbers, de todos los
empleados que trabajan en la ciudad donde donde labora el empleado
connumero 125
3. Muestre el nombre, nombre de trabajo, nombre de departamento y grado de
sueldo para todos los empleados que laboran para el manager 101
4. Muestre el nombre de los empleados que fueroncontratados antes que e
empleado Davies.
5. Muestre los nombres y fecha de contratode todos los empleados que fueron
contratados antes que sus repectivos manager.

5-41

You might also like