Académique Documents
Professionnel Documents
Culture Documents
Gua 6
Facultad:
Ingeniera
Escuela:
Computacin
Asignatura: Base de datos I
Objetivo
Especfico
Materiales
Equipo
Introduccin
Terica
Qu es una subconsulta?
Una subconsulta es una consulta T-SQL normal anidada dentro de otra consulta, se
crean utilizando parntesis en una instruccin SELECT que sirve como base para
cualquier parte de los datos o de la condicin de otra consulta.
Normalmente las subconsultas se utilizan para satisfacer una o un par de las siguientes
necesidades:
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 lnea 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 pequeas), la subconsulta ms interna se ejecutara 2000
veces (10 x 200).
Evidentemente, la sintaxis exacta variar, no slo por sustituir la lista de seleccin y los
nombres exactos de las tablas, sino tambin porque tenemos uniones de mltiples 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 artculos vendidos el primer da que se compr cualquier producto desde el
sistema.
Si ya sabemos cul es el primer da en que se insert un pedido en el sistema, no habr
ningn problema; la consulta sera 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 = '4/7/1996' --Esta es la primera fecha de 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 el procedimiento.
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)
La subconsulta debe generar una nica columna y las filas que sean. Si la subconsulta no
produce ninguna fila, el test da falso.
Sintaxis:
SELECT numemp, nombre, oficina
FROM empleados
WHERE oficina IN (SELECT oficina FROM
oficinas WHERE region = 'este')
Vistas
Las vistas tiene una tendencia a ser utilizadas mucho o poco: en raras ocasiones se
utilizan en su justa medida. Las vistas se podran utilizar para:
1) Reducir la complejidad aparente de la base de datos para los usuarios finales
Ejemplo 1:
USE northwind
CREATE VIEW Categorias
AS
SELECT CategoryID, CategoryName, Description
FROM Categories
Para llamar a la vista creada: SELECT * FROM Categorias
Ejemplo 2:
CREATE VIEW Vista_Products
AS
SELECT ProductID, ProductName, QuantityPerUnit, UnitPrice
FROM Products
Para llamar a la vista creada: SELECT * FROM Vista_Products
Si queremos modificar la vista del ejemplo 2 agregndole un nuevo campo, lo podemos
hacer con el comando ALTER de la siguiente manera
ALTER VIEW Vista_Products
AS
SELECT ProductID, ProductName, QuantityPerUnit,
UnitPrice,UnitsInStock
FROM Products
Las vistas se pueden utilizar como tablas. Para eliminar una vista podemos utilizar DROP.
Ejemplo:
DROP VIEW Vista_Products
Se pueden tambien utilizar vistas con combinaciones de tablas.
Procedimiento
Realice los siguientes ejercicios sin utilizar Join, solo subconsultas.
1. Escriba un script utilizando subconsulta, liste los empleados de la editorial
(pub_name) New Moon Books. La base a utilizar es PUBS y las tablas son
employee y publishers.
2. Haga una consulta haciendo uso de subconsultas, que liste el nombre de los
procutos (ProductID, ProductName de la tabla product) que tengan una
cantidad(quantity de la tabla [Order Details]), de pedido mayor a 115
3. Cree las vistas que contengan las siguientes consultas.
Realizar una consulta que muestre los siguientes campos:
1) de la tabla HumanResources.EmployeeAddress el campo EmployeeID
2) de la tabla Person.Address los campos AddressLine1 y PostalCode
3) de la tabla Person.StateProvince los campos StateProvinceID y nameDe la base
de datos AdventureWorks
Realizar una consulta que muestre los siguientes campos:
1) de la tabla Customers el campo CustomerID.
2) de la tabla Orders el campo OrderDate.
3) de la tabla Employees los campos FirstName, LastName y BirthDate de la base
de datos Northwind.
Investigacin
Investigar que son los Procedimientos Almacenados en SQL Server.
Bibliografa
Vieira Roberto, Fundamentos de Programacin con SQL Server
2005
SUBCONSULTAS
CREACION DE VISTAS
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
6
1