Lab07 Consultas Con SQL
Lab07 Consultas Con SQL
Lab07 Consultas Con SQL
Curso:
Ingeniera de Software
Profesor:
Correo:
Campus:
http://campus.industrial.unmsm.edu.pe
Este material de apoyo acadmico a sido
elaborado por el profesor para uso exclusivo de
los alumnos de la Facultad de Ingeniera
Industrial de la Universidad Nacional Mayor de
San Marcos y en concordancia con lo dispuesto
por la legislacin sobre derechos de autor:
Decreto Legislativo 822.
2015
Laboratorio:
Objetivos:
Aprender la terminologa del lenguaje estructurado SQL.
Aprender a utilizar la sentencia SELECT, para el manejo de la informacin de una Base
de Datos.
Aplicar las sentencias FROM y WHERE
Aplicar las clusulas: GROUP BY y HAVING
Instrucciones:
Previamente Ud. Deber haber instalado la base de Datos NWIND o Neptuno en SQL Server
2008.
Verifica que se hay desarrollado el diagrama de relaciones entre las tablas, en caso contrario
debern construirlos, segn el siguiente esquema:
Ejercicios a desarrollar:
Ejercicio 1: Ejecutar una instruccin SQL que permita extraer todos los campos y
registros de la tabla Categoras
1.-
Ejecutar una instruccin SQL que permita, extraer los campos y registros de la tabla
categoras, para cumplir lo solicitado, en la ventana: Instruccin SQL, escribimos la
siguiente sentencia:
Select * from categoras
Ejercicio 2: Ejecutar una instruccin SQL que presente los campos Nombrecategora y
Descripcin de la tabla Categoras
SELECT NombreCategora, Descripcin FROM Categoras
1.2.3.-
CAMPOS CALCULADOS
Ejercicio 3: Sentencia SQL que presente los campos nombre producto, preciounidad y
preciounidad multiplicado por 10
Como puede apreciar, adems de las columnas cuyos valores provienen directamente de la
Base de Datos, una consulta SQL, puede incluir campos calculados cuyos valores se obtiene a
partir del clculo de los valores almacenados. Para solicitar un campo calculado, se especifica
una expresin SQL en la lista de seleccin. Las expresiones SQL pueden contener sumas,
restas, multiplicaciones y divisiones.
SELECT NombreProducto, PrecioUnidad, PrecioUnidad, PrecioUnidad * 10 FROM Productos
Ejercicio 5: Escribir una sentencia SQL que presente los campos CodigoProducto,
Nombreproducto,
CantidadEnExistencias,
del
producto
cuyas
UnidadesEnExistencia o Stock sea igual o menor que 10 unidades.
SELECT IdProducto, NombreProducto,
UnidadesEnExistencia <= 10
UnidadesEnExistencia
FROM
Productos
WHERE
Ejercicio 6: Escribir una sentencia SQL que presente los campos CodigoProducto,
preciounitario pertenecientes a la categora carnes pero con un precio
unitario menor o igual a 50.
SELECT IdProducto, NombreProducto, PrecioUnidad, IdCategora FROM Productos WHERE
IdCategora = 2 and PrecioUnidad <= 50
CONDICION DE BUSQUEDA
SQL ofrece un rico conjunto de condiciones de bsqueda que permite especificar muchos tipos
diferentes de consultas eficaz y naturalmente. A continuacin describir cinco condiciones
bsicas de bsqueda (llamadas predicadas en es estndar ANSI/ISO)
Test de comparacin. Compara el valor de una expresin con el valor de la otra.
Test de rango. Examina si el valor de una expresin cae dentro de un rango
especificado de valores.
Test de pertenencia a conjunto. Comprueba si el valor de una expresin se corresponde
con uno de un conjunto de valores.
Test de correspondencia patrn. Comprueba si el valor de una columna que contiene
datos de cadena de caracteres se corresponde a un patrn especificado.
Test de valor nullo. Comprueba si una columna tiene el valor NULL (desconocido)
Ejercicio 7: Escribir una sentencia SQL que presente los campos Cdigo Producto,
nombre del producto y precio unitario de los productos cuyos precios
sean mayores que 40 y menores que 10.
SELECT IdProducto, NombreProducto, PrecioUnidad FROM Productos WHERE PrecioUnidad
BETWEEN 40 AND 10
CONSULTA
(CLAUSULA
Al igual que las filas de una tabla en la Base de Datos las filas de los resultados de una
consulta no estn dispuestas en ningn orden particular. Se puede pedir a SQL que ordene los
resultados de una consulta incluyendo la clusula ORDER BY en la sentencia SELECT. La
clusula ORDER BY consta de las palabras ORDER BY seguidas de una lista de especificaciones
de la ordenacin separadas por comas.
Ejercicio 10: Escribir una sentencia SQL que presente los campos cdigo de producto,
nombre de producto y precio unitario ordenados por el precio unitario
en forma descendente (DESC).
SELECT IdProducto, NombreProducto, PrecioUnidad FROM Productos ORDER BY PrecioUnidad
DESC
CONSULTA SUMARIAS
SQL proporciona funciones de columna que permiten proporcionar informacin totalizada. Una
funcin de columnas SQL acepta una columna entera de datos como argumentos y produce un
nico dato que totaliza la columna.
SQL ofrece seis funciones de columnas diferentes que se muestran a continuacin:
Funciones
SUM()
AVG()
MIN()
MAX()
COUNT()
COUNT(*)
Descripcin
Calcula el total de una columna
Calcula el valor promedio de una columna
Encuentra el valor ms pequeo en una columna
Encuentra el valor mayor de una columna
Cuenta el nmero de valores en una columna
Cuenta las filas de resultado de una consulta
Ejercicio 11: Escribir una sentencia SQL que presente la suma de todas las unidades
en existencias de la tabla Productos.
SELECT SUM (UnidadesEnExistencia) FROM Productos
Ejercicio 12: Escribir una sentencia SQL que presente cuantas Bebidas existen en el
stock (Unidades En Existencia) de la tabla Productos.
SELECT SUM (UnidadesEnExistencia) FROM Productos WHERE IdCategora = 1
Ejercicio 13: Escribir una sentencia SQL que presente el stock valorizado de la tabla
Productos.
SELECT SUM (PrecioUnidad * UnidadesEnExistencia) FROM Productos
Ejercicio 14: Escribir una sentencia SQL que presente el precio promedio de los
monitores.
SELECT AVG (PrecioUnidad) FROM Productos WHERE IdCategora = 1
Ejercicio 15: Escribir una sentencia SQL que presente el precio mnimo de las
bebidas.
SELECT MIN (PrecioUnidad) FROM Productos WHERE IdCategora = 1
Ejercicio 16: Escribir una sentencia SQL que presente el precio maximo de las
bebidas.
SELECT MAX (PrecioUnidad) FROM Productos WHERE IdCategora = 1
Ejercicio 17: Escribir una sentencia SQL que presente cuantos tipos de categora
existen.
SELECT COUNT (IdCategora) FROM Productos
Ejercicio 18: Escribir una sentencia SQL que presente cuantos tipos de carnes
existen.
SELECT COUNT (IdCategora) FROM Productos WHERE IdCategora = 3
Facturas
SELECT
DISTINCTROW
Pedidos.Destinatario,
Pedidos.DireccinDestinatario,
Pedidos.CiudadDestinatario, Pedidos.ReginDestinatario, Pedidos.CdPostalDestinatario,
Pedidos.PasDestinatario,
Pedidos.IdCliente,
Clientes.NombreCompaa,
Clientes.Direccin, Clientes.Ciudad, Clientes.Regin, Clientes.CdPostal, Clientes.Pas,
[Nombre] & " " & [Apellidos] AS Vendedor, Pedidos.IdPedido, Pedidos.FechaPedido,
Pedidos.FechaEntrega, Pedidos.FechaEnvo, [Compaas de envos].NombreCompaa,
[Detalles
de
pedidos].IdProducto,
Productos.NombreProducto,
[Detalles
de
pedidos].PrecioUnidad,
[Detalles
de
pedidos].Cantidad,
[Detalles
de
pedidos].Descuento,
CCur([Detalles
de
pedidos].[PrecioUnidad]*[Cantidad]*(1[Descuento])/100)*100 AS PrecioConDescuento, Pedidos.Cargo
FROM Productos INNER JOIN ((Empleados INNER JOIN ([Compaas de envos] INNER JOIN
(Clientes INNER JOIN Pedidos ON Clientes.IdCliente = Pedidos.IdCliente) ON
[Compaas
de
envos].IdCompaaEnvos
=
Pedidos.FormaEnvo)
ON
Empleados.IdEmpleado = Pedidos.IdEmpleado) INNER JOIN [Detalles de pedidos] ON
Pedidos.IdPedido = [Detalles de pedidos].IdPedido) ON Productos.IdProducto =
[Detalles de pedidos].IdProducto;
AS
DiezProductosMasCaros,
Pedidos trimestrales
SELECT DISTINCTROW Clientes.IdCliente, Clientes.NombreCompaa, Clientes.Ciudad,
Clientes.Pas
FROM Clientes RIGHT JOIN Pedidos ON Clientes.IdCliente = Pedidos.IdCliente
WHERE (((Pedidos.FechaPedido) Between #1/1/1995# And #12/31/1995#));
Ventas por ao
PARAMETERS
[[Forms]![Dilogo
de
Ventas
por
ao]![FechaInicio]]
DateTime,
[[Forms]![Dilogo de Ventas por ao]![FechaFin]] DateTime;
SELECT
DISTINCTROW
Pedidos.FechaEnvo,
Pedidos.IdPedido,
[Subtotales
por
pedido].Subtotal, Format([FechaEnvo],"yyyy") AS Ao
FROM Pedidos INNER JOIN [Subtotales por pedido] ON Pedidos.IdPedido = [Subtotales por
pedido].IdPedido
WHERE
(((Pedidos.FechaEnvo)
Is
Not
Null
And
(Pedidos.FechaEnvo)
Between
[Forms]![Dilogo de Ventas por ao]![FechaInicio] And [Forms]![Dilogo de Ventas por
ao]![FechaFin]));
Venta por categora
SELECT
DISTINCTROW
Categoras.IdCategora,
Categoras.NombreCategora,
Productos.NombreProducto,
Sum([Detalle
de
pedidos
con
descuento].PrecioConDescuento) AS VentasPorProducto
FROM Categoras INNER JOIN (Productos INNER JOIN (Pedidos INNER JOIN [Detalle de pedidos
con descuento] ON Pedidos.IdPedido = [Detalle de pedidos con descuento].IdPedido)
ON Productos.IdProducto = [Detalle de pedidos con descuento].IdProducto) ON
Categoras.IdCategora = Productos.IdCategora
WHERE (((Pedidos.FechaPedido) Between #1/1/1995# And #12/31/1995#))
GROUP BY Categoras.IdCategora, Categoras.NombreCategora, Productos.NombreProducto
ORDER BY Productos.NombreProducto;
Ventas por categora para 1995
SELECT DISTINCTROW [Ventas de productos para 1995].NombreCategora, Sum([Ventas de
productos para 1995].VentasPorProducto) AS VentasPorCategora
FROM [Ventas de productos para 1995]
GROUP BY [Ventas de productos para 1995].NombreCategora;
WPB/2015.