Sie sind auf Seite 1von 14

Base de datos I.

Gua 6

Facultad:
Ingeniera
Escuela:
Computacin
Asignatura: Base de datos I

Tema: Combinacin de tablas


Objetivo

Utilice alias en los nombres de las tablas.


Combine datos de varias tablas mediante combinaciones.
Combinacin de varios conjuntos de resultados en un nico conjunto de resultados
mediante el operador UNION.

Materiales y Equipo
Computadora con SQL Server 2008.
Gua Nmero 6
Base de datos de ejemplo Joindb y Library

Introduccin
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 restriccin "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 restriccin "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 cdigo de editorial en
la tabla "libros", tal cdigo exista en la tabla "editoriales".

Base de datos I, Gua6

Tambin 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 cdigo de "editoriales" si existen libros con dicho cdigo.
alter table NOMBRETABLA1
add constraint NOMBRERESTRICCION
foreign key (CAMPOCLAVEFORANEA)
references NOMBRETABLA2 (CAMPOCLAVEPRIMARIA);

Ejemplo
Se tienen las tablas VENTAS y VENDEDOR, dichas tablas debern relacionarse por el
idvendedor que es la llave primaria en la tabla VENDEDOR y es fornea en la tabla
VENTAS.
El script es el siguiente
--Creacin 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.

Base de datos I. Gua 6 3


Uso de alias en los nombres de tablas.
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:
aliasTabla

SELECT * FROM servidor.baseDeDatos.esquema.tabla AS

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.

Base de datos I, Gua6

Combinacin de datos de varias tablas:


Una combinacin es una operacin que permite consultar dos o ms tablas para producir
un conjunto de resultados que incorpore filas y columnas de cada una de las tablas. Las
tablas se combinan en funcin 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, despus, utiliza los resultados de la comparacin
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 instruccin SELECT se pueden
combinar ms de dos tablas mediante un conjunto de combinaciones o se puede
combinar una tabla consigo misma mediante una autocombinacin.
JOIN:
Es una operacin 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 ms tablas.
Sintaxis Parcial
SELECT columna [, columna ] FROM {<tablaOrigen >} [, ...n] <tipoCombinacin > ::= [
INNER | { { LEFT | RIGHT | FULL } [OUTER] } ] [ <sugerenciaCombinacin> ] JOIN
<tablaCombinada> ::= <tablaOrigen > <tipoCombinacin > <tablaOrigen > ON

Base de datos I. Gua 6 5


<condicinBsqueda>
<tablaCombinada>

<tablaOrigen

>

CROSS

JOIN

<tablaOrigen

>

Seleccin de columnas especficas de varias tablas:

Una combinacin permite seleccionar columnas de varias tablas al expandir la clusula


FROM de la instruccin SELECT. En la clusula FROM se incluyen dos palabras clave
adicionales: JOIN y ON.
La palabra clave JOIN especifica qu tablas se van a combinar y cmo.
La palabra clave ON especifica las columnas que las tablas tienen en comn.
Consultas de dos o ms tablas para producir un conjunto de resultados:
Una combinacin permite consultar dos o ms tablas para producir un nico conjunto de
resultados. Al implementar combinaciones, tenga en cuenta los siguientes hechos e
instrucciones:
1. Especifique la condicin de combinacin en funcin 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 clusula 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 nmero de tablas de las combinaciones porque cuantas ms
tablas combine, mayor ser la duracin del proceso de la consulta.
6. Puede incluir varias combinaciones en una instruccin SELECT.

Uso de combinaciones internas:

Base de datos I, Gua6

Las combinaciones internas combinan tablas mediante la comparacin de los valores de


las columnas que son comunes a ambas tablas. SQL Server slo devuelve las filas que
cumplen las condiciones de la combinacin.

Por qu se utilizan combinaciones internas:

Utilice combinaciones internas para obtener informacin de dos tablas independientes y


combinar dicha informacin 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 clusula 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
seleccin.
3. Incluya una clusula WHERE para restringir las filas que se devuelven en
el conjunto de resultados.
4. No utilice valores NULL como condicin de combinacin, ya que no se
evalan como iguales entre s.

Base de datos I. Gua 6 7


Ejemplo 1:
Supongamos que tenemos dos tablas: una de pelculas y otra de directores
relacionadas entre s:
movies

directors

id

title

Four Rooms

1995

Die Hard

1988

3 The Hunt for Red October 1990

Psycho

year director

1960

id

name

1 John McTiernan
2 Alfred Hitchcock
3 Quentin Tarantino

Si quiero obtener todas las pelculas y el nombre de su director hara 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
ambigedad 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 algn producto. Los clientes que no hayan adquirido nada no se incluyen en el
conjunto de resultados. Los clientes que han adquirido ms de un producto aparecen una
vez por cada compra realizada.
Las columnas buyer_id de las dos tablas pueden especificarse en la lista de seleccin.
USE joindb
SELECT buyer_name, sales.buyer_id, qty
FROM buyers
INNER JOIN sales
ON buyers.buyer_id = sales.buyer_id
GO

Base de datos I, Gua6

RESULTADO:

Ejemplo 3:
En este ejemplo se devuelven los nombres de los productos y de las compaas 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
despus del 1/1/98. Observe que se utiliza una clusula 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

Base de datos I. Gua 6 9


WHERE orderdate > '1/1/98'
GO

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 gua el archivo Recursos
Gua 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 ubicacin de los archivos que
descarg.

10 Base de datos I, Gua6

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

Base de datos I. Gua 6 11

Realice el mismo procedimiento para adjuntar la base de datos Library

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


base de datos library.

Abra una sesin del SQL Server Management Studio e ingrese su


nmero 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

12 Base de datos I, Gua6


1000 (mil). Ordene los resultados por la columna isbn. Para cada tabla debe
utilizar un alias.
PASOS
Escriba la lista de seleccin de la consulta.
Escriba una clusula FROM que cree una combinacin interna entre las
tablas title y copy sobre las columnas title_no. En la clusula FROM,
establezca los alias de las tablas que haya utilizado en la lista de seleccin.
Agregue una segunda clusula INNER JOIN para crear la combinacin
entre las tablas item y copy sobre las columnas isbn.
agregue una clusula WHERE que restrinja las filas de la tabla copy
obtenidas de aqullas cuyo ISBN sea 1 (uno), 500 (quinientos) o 1000
(mil).
Escriba la clusula 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 estn los miembros que estn afiliados a la biblioteca, en la tabla
Reservation estn las reservaciones de libros que han realizado los miembros de la
biblioteca, la reserva se realiza por el isbn(nmero de identificacin de los libros), la tabla
Title esta los ttulos de los libros el autor y la sinopsis y la tabla tem estn las
traducciones que se les ha realizado a los libros que estn en la tabla Title, cada libro

Base de datos I. Gua 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.

Investigacin
-Investigue en qu consisten las combinaciones externas

Bibliografa
Francisco Charte Ojeda, SQL Server 2008. Madrid, Espaa : ANAYA, 2009 1era edicion

14 Base de datos I, Gua6

COMBINACIO
RELACION DE TABLAS
Gua

Hoja de cotejo:

6:

Alumno:

Mquina No:

Docente:

GL:

Fecha:

EVALUACION
%
CONOCIMIENTO

Del 20
al 30%

APLICACIN
DEL
CONOCIMIENTO

Del 40%
al 60%

1-4

5-7

8-10

Conocimie
nto
deficient
e de los
fundament
os
tericos

Conocimiento
y explicacin
incompleta de
los
fundamentos
tericos

Conocimiento
completo y
explicacin
clara de los
fundamentos
tericos

No tiene
actitud
proactiva
.

Actitud
propositiva y
con
propuestas no
aplicables al
contenido de
la gua.

Tiene actitud
proactiva y sus
propuestas son
concretas.

ACTITUD
Del 15%
al 30%

TOTAL

100%

Nota

Das könnte Ihnen auch gefallen