14
Base de datos I. Guía 6 1 Facultad: Ingeniería Escuela: Computación Asignatura: Base de datos I Tema: Combinación de tablas Objetivo Utilice alias en los nombres de las tablas. Combine datos de varias tablas mediante combinaciones. Combinación de varios conjuntos de resultados en un único conjunto de resultados mediante el operador UNION. Materiales y Equipo Computadora con SQL Server 2008. Guía Número 6 Base de datos de ejemplo Joindb y Library Introducción Clave primaria Una clave primaria es un campo (o varios) que identifica un solo registro (fila) en una tabla. Para un valor del campo clave existe solamente un registro. create table usuarios( nombre varchar(20), clave varchar(10), primary key(nombre) ); Clave foranea Con la restricción "foreign key" se define un campo (o varios) cuyos valores coinciden con la clave primaria de la misma tabla o de otra, es decir, se define una referencia a un campo con una restricción "primary key" o "unique" de la misma tabla o de otra. La integridad referencial asegura que se mantengan las referencias entre las claves primarias y las externas. Por ejemplo, controla que si se agrega un código de editorial en la tabla "libros", tal código exista en la tabla "editoriales".

Tema: Combinación de tablas · PDF fileCuando creamos relaciones en SQL ... de dos tablas en una base de datos ... para adjuntar la base de datos Library 2 En este

  • Upload
    vuduong

  • View
    220

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Tema: Combinación de tablas · PDF fileCuando creamos relaciones en SQL ... de dos tablas en una base de datos ... para adjuntar la base de datos Library 2 En este

Base de datos I. Guía 6 1

Facultad: Ingeniería

Escuela: Computación

Asignatura: Base de datos I

Tema: Combinación de tablas

Objetivo

• Utilice alias en los nombres de las tablas.

• Combine datos de varias tablas mediante combinaciones.

• Combinación de varios conjuntos de resultados en un único conjunto de resultados

mediante el operador UNION.

Materiales y Equipo

• Computadora con SQL Server 2008.

• Guía Número 6

• Base de datos de ejemplo Joindb y Library

Introducción

Clave primaria

Una clave primaria es un campo (o varios) que identifica un solo registro (fila) en una tabla. Para un valor del campo clave existe solamente un registro.

create table usuarios(

nombre varchar(20), clave varchar(10), primary key(nombre)

);

Clave foranea

Con la restricción "foreign key" se define un campo (o varios) cuyos valores coinciden con la clave primaria de la misma tabla o de otra, es decir, se define una referencia a un campo con una restricción "primary key" o "unique" de la misma tabla o de otra.

La integridad referencial asegura que se mantengan las referencias entre las claves primarias y las externas. Por ejemplo, controla que si se agrega un código de editorial en la tabla "libros", tal código exista en la tabla "editoriales".

Page 2: Tema: Combinación de tablas · PDF fileCuando creamos relaciones en SQL ... de dos tablas en una base de datos ... para adjuntar la base de datos Library 2 En este

2 Base de datos I, Guía6

También controla que no pueda eliminarse un registro de una tabla ni modificar la clave primaria si una clave externa hace referencia al registro. Por ejemplo, que no se pueda eliminar o modificar un código de "editoriales" si existen libros con dicho código.

alter table NOMBRETABLA1

add constraint NOMBRERESTRICCION

foreign key (CAMPOCLAVEFORANEA)

references NOMBRETABLA2 (CAMPOCLAVEPRIMARIA);

Ejemplo Se tienen las tablas VENTAS y VENDEDOR, dichas tablas deberán relacionarse por el idvendedor que es la llave primaria en la tabla VENDEDOR y es foránea en la tabla VENTAS. El script es el siguiente --Creación de BD

CREATE Database ventas

GO

USE ventas

GO

---tabla vendedor

CREATE TABLE VENDEDOR(

idvendedor INT PRIMARY KEY ,

nombre VARCHAR(20),

apellido VARCHAR(10),

);

GO

---tabla ventas

CREATE TABLE VENTAS(

Idventa INT PRIMARY KEY ,

nombre VARCHAR(20),

apellido VARCHAR(10),

idvendedor INT

foreign key (idvendedor) references VENDEDOR(idvendedor))

Cuando creamos relaciones en SQL Server, este nos permite crear un diagrama relacional de las tablas de la base de datos, como se muestra en la siguiente figura.

Page 3: Tema: Combinación de tablas · PDF fileCuando creamos relaciones en SQL ... de dos tablas en una base de datos ... para adjuntar la base de datos Library 2 En este

Uso de alias en los nombres de tablas.

Base de datos I. Guía 6 3

El uso de alias en los nombres de tablas mejora la legibilidad de las secuencias de

comandos, facilita la escritura de combinaciones complejas y simplifica el mantenimiento

de Transact-SQL.

Al escribir secuencias de comandos, puede sustituir un nombre de tabla descriptivo largo

y complejo por un alias sencillo y abreviado. El alias se utiliza en lugar del nombre

completo de la tabla.

Sintaxis parcial: SELECT * FROM servidor.baseDeDatos.esquema.tabla AS

aliasTabla

Ejemplo 1:

En este ejemplo se muestran los nombres de los clientes, el identificador del cliente y la

cantidad vendida de las tablas buyers y sales. Esta consulta no utiliza alias en las tablas

de la sintaxis de JOIN.

USE joindb

SELECT buyer_name, sales.buyer_id, qty

FROM buyers

INNER JOIN sales

ON buyers.buyer_id = sales.buyer_id

GO

Ejemplo 2:

En este ejemplo se muestran los nombres de los clientes, el identificador del cliente y la

cantidad vendida de las tablas buyers y sales. Esta consulta utiliza alias en las tablas de

la sintaxis de JOIN.

USE joindb SELECT buyer_name, s.buyer_id, qty FROM buyers AS b INNER JOIN sales AS s ON b.buyer_id = s.buyer_id

GO

Ahora la tabla buyers se

le podrá conocer con el

alias b y la tabla sales

se podrá conocer con el

alias s

NOTA:

Algunas veces, la compleja sintaxis de JOIN y las subconsultas deben usar alias en los

nombres de tablas. Por ejemplo, al combinar una tabla consigo misma deben utilizarse

alias.

Page 4: Tema: Combinación de tablas · PDF fileCuando creamos relaciones en SQL ... de dos tablas en una base de datos ... para adjuntar la base de datos Library 2 En este

4 Base de datos I, Guía6

• Combinación de datos de varias tablas:

Una combinación es una operación que permite consultar dos o más tablas para producir

un conjunto de resultados que incorpore filas y columnas de cada una de las tablas. Las

tablas se combinan en función de las columnas que son comunes a ambas tablas.

Cuando se combinan tablas, Microsoft® SQL Server™ compara los valores de las

columnas especificadas fila por fila y, después, utiliza los resultados de la comparación

para combinar los valores que cumplan los criterios especificados en nuevas filas.

Hay tres tipos de combinaciones: combinaciones internas, combinaciones externas y

combinaciones cruzadas. Adicionalmente, en una instrucción SELECT se pueden

combinar más de dos tablas mediante un conjunto de combinaciones o se puede

combinar una tabla consigo misma mediante una autocombinación.

JOIN:

Es una operación que combina registros de dos tablas en una base de datos relacional

que resulta en una nueva tabla (temporal) llamada tabla de JOIN.

Las tablas se combinan para producir un único conjunto de resultados que incorpore filas

y columnas de dos o más tablas.

Sintaxis Parcial

SELECT columna [, columna …] FROM {<tablaOrigen >} [, ...n] <tipoCombinación > ::= [

INNER | { { LEFT | RIGHT | FULL } [OUTER] } ] [ <sugerenciaCombinación> ] JOIN

<tablaCombinada> ::= <tablaOrigen > <tipoCombinación > <tablaOrigen > ON

Page 5: Tema: Combinación de tablas · PDF fileCuando creamos relaciones en SQL ... de dos tablas en una base de datos ... para adjuntar la base de datos Library 2 En este

Base de datos I. Guía 6 5

<condiciónBúsqueda> | <tablaOrigen > CROSS JOIN <tablaOrigen > |

<tablaCombinada>

• Selección de columnas específicas de varias tablas:

Una combinación permite seleccionar columnas de varias tablas al expandir la cláusula

FROM de la instrucción SELECT. En la cláusula FROM se incluyen dos palabras clave

adicionales: JOIN y ON.

La palabra clave JOIN especifica qué tablas se van a combinar y cómo.

La palabra clave ON especifica las columnas que las tablas tienen en común.

• Consultas de dos o más tablas para producir un conjunto de resultados:

Una combinación permite consultar dos o más tablas para producir un único conjunto de

resultados. Al implementar combinaciones, tenga en cuenta los siguientes hechos e

instrucciones:

1. Especifique la condición de combinación en función de claves principales y

externas.

2. Si una tabla tiene una clave principal compuesta, cuando combine tablas

debe hacer referencia a toda la clave en la cláusula ON.

3. Para combinar tablas, utilice columnas comunes a las tablas especificadas.

Dichas columnas deben tener tipos de datos iguales o similares.

4. Haga referencia al nombre de la tabla si las columnas de las tablas que va

a combinar tienen el mismo nombre. Califique los nombres de las columnas

con el formato tabla.columna.

5. Limite el número de tablas de las combinaciones porque cuantas más

tablas combine, mayor será la duración del proceso de la consulta.

6. Puede incluir varias combinaciones en una instrucción SELECT.

• Uso de combinaciones internas:

Page 6: Tema: Combinación de tablas · PDF fileCuando creamos relaciones en SQL ... de dos tablas en una base de datos ... para adjuntar la base de datos Library 2 En este

6 Base de datos I, Guía6

Las combinaciones internas combinan tablas mediante la comparación de los valores de

las columnas que son comunes a ambas tablas. SQL Server sólo devuelve las filas que

cumplen las condiciones de la combinación.

• Por qué se utilizan combinaciones internas:

Utilice combinaciones internas para obtener información de dos tablas independientes y

combinar dicha información en un conjunto de resultados. Al utilizar combinaciones

internas, tenga en cuenta los siguientes hechos e instrucciones:

1. Las combinaciones internas son el tipo predeterminado de SQL Server.

Puede abreviar la cláusula INNER JOIN como JOIN.

2. Para especificar las columnas que desea presentar en el conjunto de

resultados, incluya los nombres calificados de las columnas en la lista de

selección.

3. Incluya una cláusula WHERE para restringir las filas que se devuelven en

el conjunto de resultados.

4. No utilice valores NULL como condición de combinación, ya que no se

evalúan como iguales entre sí.

Page 7: Tema: Combinación de tablas · PDF fileCuando creamos relaciones en SQL ... de dos tablas en una base de datos ... para adjuntar la base de datos Library 2 En este

Ejemplo 1:

Base de datos I. Guía 6 7

Supongamos que tenemos dos tablas: una de películas y otra de directores relacionadas entre sí:

movies

id title year director

1 Four Rooms 1995 3

2 Die Hard 1988 1

3 The Hunt for Red October 1990 1

4 Psycho 1960 2

directors

id name

1 John McTiernan

2 Alfred Hitchcock

3 Quentin Tarantino

Si quiero obtener todas las películas y el nombre de su director haría lo siguiente:

USE MOVIES

SELECT m.title, d.name

FROM movies m

INNER JOIN directors d ON m.director = d.id

Donde los campos a seleccionar son title que está en la tabla movies y name que está en

la tabla directores, como movies tiene el alias m, podemos anteponer ese alias a los

campos que queramos seleccionar de la tabla movies, esto se hace para no causar

ambigüedad en caso que hallan 2 campos con nombres iguales en cada tabla.

Ejemplo 2:

Este ejemplo devuelve los valores buyer_name, buyer_id y qty de los clientes que han

adquirido algún producto. Los clientes que no hayan adquirido nada no se incluyen en el

conjunto de resultados. Los clientes que han adquirido más de un producto aparecen una

vez por cada compra realizada.

Las columnas buyer_id de las dos tablas pueden especificarse en la lista de selección.

USE joindb

SELECT buyer_name, sales.buyer_id, qty

FROM buyers

INNER JOIN sales

ON buyers.buyer_id = sales.buyer_id

GO

Page 8: Tema: Combinación de tablas · PDF fileCuando creamos relaciones en SQL ... de dos tablas en una base de datos ... para adjuntar la base de datos Library 2 En este

8 Base de datos I, Guía6

RESULTADO:

Ejemplo 3:

En este ejemplo se devuelven los nombres de los productos y de las compañías que los

suministran. Los productos sin suministradores asignados y los suministradores sin

productos asignados no se incluyen en el conjunto de resultados.

USE northwind

SELECT productname, companyname

FROM products

INNER JOIN suppliers

ON products.supplierid = suppliers.supplierid

GO

RESULTADO

Ejemplo 4:

En este ejemplo se devuelven los nombres de los clientes que han hecho pedidos

después del 1/1/98. Observe que se utiliza una cláusula WHERE para restringir las filas

devueltas en el conjunto de resultados.

USE northwind

SELECT DISTINCT companyname, orderdate

FROM orders INNER JOIN customers

ON orders.customerid = customers.customerid

Page 9: Tema: Combinación de tablas · PDF fileCuando creamos relaciones en SQL ... de dos tablas en una base de datos ... para adjuntar la base de datos Library 2 En este

WHERE orderdate > '1/1/98'

GO

Base de datos I. Guía 6 9

Procedimiento

Realice los siguientes ejercicios:

1- Inicie Microsoft SQL Server Management Studio y verifique si existen las

bases de datos Library y JoinDB, en caso que las BD antes mencionadas no se

encuentren realice los siguientes pasos:

a. Descargue del mismo sitio donde descargó la guía el archivo Recursos

Guía 6.

b. Cree una Carpeta y descomprima el archivo, se mostraran 4 archivos, que

son el archivo Mdf y Ldf de cada Base de datos

c. Dentro de SQL Server Management de clic derecho en Databases y

seleccione Attach

d. Se mostrará la ventana Attach DataBases, de clic en Add y se aparecerá

una ventana donde deberá indicar la ubicación de los archivos que

descargó.

Page 10: Tema: Combinación de tablas · PDF fileCuando creamos relaciones en SQL ... de dos tablas en una base de datos ... para adjuntar la base de datos Library 2 En este

10 Base de datos I, Guía6

e. Seleccione la base de datos joindb y de clic en OK. Luego se mostrara una

ventana en la que daremos clic en OK

f. Actualice su lista de base de datos y deberá aparecer joindb

Page 11: Tema: Combinación de tablas · PDF fileCuando creamos relaciones en SQL ... de dos tablas en una base de datos ... para adjuntar la base de datos Library 2 En este

Base de datos I. Guía 6 11

Realice el mismo procedimiento para adjuntar la base de datos Library

2 En este ejercicio, va a escribir y ejecutar consultas que combinan tablas en la

base de datos library.

• Abra una sesión del SQL Server Management Studio e ingrese su

número de carné en el usuario y password.

• En la lista de BD, haga clic en library.

• Utilice las tablas member y adult para realizar una consulta que devuelva

los campos firstname, middleinitial, lastname, street, city, state y zip.

Concatene las columnas firstname, middleinitial y lastname en una

cadena de texto y asigne a la columna el alias name.

• Ejecute la consulta para comprobar que devuelve los resultados deseados

(ver figura 1).

Figura 1. 2. Para este ejercicio va utilizar las tablas title, item y copy, y va a generar una

consulta que devuelva isbn, copy_no, on_loan, title, translation y cover, y

valores para las filas de la tabla copy cuyo ISBN sea 1 (uno), 500 (quinientos) o

Page 12: Tema: Combinación de tablas · PDF fileCuando creamos relaciones en SQL ... de dos tablas en una base de datos ... para adjuntar la base de datos Library 2 En este

12 Base de datos I, Guía6

1000 (mil). Ordene los resultados por la columna isbn. Para cada tabla debe

utilizar un alias.

PASOS

• Escriba la lista de selección de la consulta.

• Escriba una cláusula FROM que cree una combinación interna entre las

tablas title y copy sobre las columnas title_no. En la cláusula FROM,

establezca los alias de las tablas que haya utilizado en la lista de selección.

• Agregue una segunda cláusula INNER JOIN para crear la combinación

entre las tablas item y copy sobre las columnas isbn.

• agregue una cláusula WHERE que restrinja las filas de la tabla copy

obtenidas de aquéllas cuyo ISBN sea 1 (uno), 500 (quinientos) o 1000

(mil).

• Escriba la cláusula ORDER BY para ordenar el resultado por el ISBN.

• Ejecute la secuencia de comandos (ver figura2).

3- En la base de datos Library (biblioteca) se tienen las siguientes tablas.

Member Reservation Ítem Title

En la tabla Member están los miembros que están afiliados a la biblioteca, en la tabla

Reservation están las reservaciones de libros que han realizado los miembros de la

biblioteca, la reserva se realiza por el isbn(número de identificación de los libros), la tabla

Title esta los títulos de los libros el autor y la sinopsis y la tabla ítem están las

traducciones que se les ha realizado a los libros que están en la tabla Title, cada libro

Page 13: Tema: Combinación de tablas · PDF fileCuando creamos relaciones en SQL ... de dos tablas en una base de datos ... para adjuntar la base de datos Library 2 En este

Base de datos I. Guía 6 13

solo puede tener un isbn, por ende si hay un libro traducido en 4 lenguajes tiene isbn

diferentes para cada uno.

Se pide una consulta que muestra el nombre y apellido (firstname y el lastname) de los

cliente que han reservado libros, la consulta debe contener los siguientes campos:

firstname, lastname, log_date,title, translation.

Investigación

-Investigue en qué consisten las combinaciones externas

Bibliografía

Francisco Charte Ojeda, SQL Server 2008. Madrid, España : ANAYA, 2009 1era edicion

Page 14: Tema: Combinación de tablas · PDF fileCuando creamos relaciones en SQL ... de dos tablas en una base de datos ... para adjuntar la base de datos Library 2 En este

14 Base de datos I, Guía6

Guía 6: COMBINACIO Y

RELACION DE TABLAS

Hoja de cotejo: 6

Alumno: Máquina No:

Docente: GL: Fecha:

EVALUACION

% 1-4 5-7 8-10 Nota

CONOCIMIENTO

Del 20

al 30%

Conocimie

nto

deficient

e de los

fundament

os

teóricos

Conocimiento

y explicación

incompleta de

los

fundamentos

teóricos

Conocimiento

completo y

explicación

clara de los

fundamentos

teóricos

APLICACIÓN

DEL

CONOCIMIENTO

Del 40%

al 60%

ACTITUD

Del 15%

al 30%

No tiene

actitud

proactiva

.

Actitud

propositiva y

con

propuestas no

aplicables al

contenido de

la guía.

Tiene actitud

proactiva y sus

propuestas son

concretas.

TOTAL

100%