computacion
1
Facultad:
Ingeniería
Escuela:
Computación
Asignatura: Base de datos I
Tema: SUBCONSULTAS Y CREACION DE VISTAS.
Objetivo
Específico
Definir que es una subsonsulta
Utilizar vistas para seguridad de los datos
Materiales
Equipo
y
Computadora con SQL Server 2008.
Guía Número 8
Introducción
Teórica
¿Qué es una subconsulta?
Unasubconsulta es una consulta T-SQL normal anidada dentro de otra consulta, se
crean utilizando paréntesis en una instrucción SELECT que sirve como base para
cualquier parte de los datos o de la condición de otra consulta.
Normalmente las subconsultas se utilizan para satisfacer una o un par de las siguientes
necesidades:
Desglosar una consulta en una serie de pasos lógicos.Proporcionar un listado que va a ser el destino de una cláusula WHERE con [IN |
EXISTS |ANY | ALL].
Proporcionar una búsqueda dirigida por cada registro individual de una consulta
principal.
Crear una subconsulta anidada.
Las subconsultas pueden anidarse de forma que una subconsulta aparezca en la cláusula
WHERE (por ejemplo) de otra subconsulta que a su vez forma parte de otra consulta
principal.En la práctica, una consulta consume mucho más tiempo y memoria cuando se
incrementa el número de niveles de anidamiento. La consulta resulta también más difícil
de leer , comprender y mantener cuando contiene más de uno o dos niveles de
2
Base de datos I, Guía 8
subconsultas.
Ejemplo 1:
SELECT numemp, nombre
FROM empleados
WHERE numemp = (SELECT rep FROM pedidos WHERE clie =(SELECT numclie
FROM clientes WHERE nombre = 'Julia Antequera'))
En este ejemplo, por cada línea de pedido se calcula la subconsulta de clientes, y esto se
repite por cada empleado, en el caso de tener 10 filas de empleados y 200 filas de
pedidos (tablas realmente pequeñas), la subconsulta más interna se ejecutaría 2000
veces (10 x 200).
Evidentemente, la sintaxis exacta variará, no sólo porsustituir la lista de selección y los
nombres exactos de las tablas, sino también porque tenemos uniones de múltiples tablas
en la consulta interior, en la exterior o en ambas.
Consultas anidadas utilizando instrucciones SELECT: de un solo valor vamos a practicar
un ejemplo explicito.
Supongamos, por ejemplo, que deseamos conocer los ProductID (ID de productos) de
todos los artículos vendidosel primer día que se compró cualquier producto desde el
sistema.
Si ya sabemos cuál es el primer día en que se insertó un pedido en el sistema, no habrá
ningún problema; la consulta sería como la siguiente:
USE NORTHWIND
SELECT DISTINCT (o.OrderDate), od.ProductID
FROM Orders o
INNER JOIN [Order Details] od
ON o.OrderID = od.OrderID
WHERE OrderDate = ' 1996/7/4' --Esta es la primera fechade un pedido en el sistema
Pero ahora supongamos, por ejemplo, que depuramos regularmente los datos de nuestro
sistema y deseamos seguir haciendo la misma pregunta como parte de un informe
automatizado. Como se va a automatizar, no podemos ejecutar una consulta para buscar
cual es la primera fecha en el sistema e insertarla manualmente en nuestra consulta, lo
mejor es automatizar elprocedimiento.
USE NORTHWIND
SELECT DISTINCT o.OrderDate, od.ProductID
FROM Orders o
INNER JOIN [Order Details] od
ON o.OrderID = od.OrderID
WHERE OrderDate = (SELECT MIN(OrderDate) FROM Orders)
Base de datos I. Guía 8 3
Consultas anidadas utilizando subconsultas que devuelven: Múltiples valores: La consulta
que vamos a realizar en estos momentos es para buscar una lista de todas las tiendasque tienen registros de descuento. Las tiendas se encuentran en una tabla denominada
Stores (Tiendas). Los descuentos están en una tabla denominada discounts
(descuentos).
USE PUBS
SELECT stor_id, stor_name
FROM Stores
WHERE stor_id IN (SELECT stor_id FROM Discounts)
Mezclar tipos de datos: CAST y CONVERT Podrá ver CAST y CONVERT utilizadas con
mucha frecuencia. Considerando que vamos a...
Regístrate para leer el documento completo.