Jeisson Duban Juanias Villarraga
ID: 351997
Ejercicios utilizando la base de datos Northwind.
1. Realizar un procedimiento almacenado que devuelva los clientes (Customers) según el país
(Country).
QUERY:
USE [Northwind]
-- =============================================
-- Author: Jeisson Juanias
-- Create date: 20-10-2020
-- Description: 1. Realizar un procedimiento almacenado que devuelva los clientes (Customers)
según el país (Country).
-- =============================================
ALTER PROCEDURE [dbo].[GetClientesByCountry]
@Country VARCHAR(50)
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM Customers WHERE Country LIKE @Country
END
Jeisson Duban Juanias Villarraga
ID: 351997
2. Crear un procedimiento que determine la cantidad de clientes cuyo identificador (o sea el código)
inicia con un determinado carácter.
QUERY:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Jeisson Juanias
-- Create date: 20-10-2020
-- Description: 2. Crear un procedimiento que determine la cantidad de clientes cuyo
--- identificador (o sea el código) inicia con un determinado carácter.
-- =============================================
CREATE PROCEDURE GetCountClientesByCaracter
@Caracter CHAR(1)
AS
BEGIN
SET NOCOUNT ON;
SELECT COUNT(CUSTOMERID) AS CANTIDAD FROM Customers WHERE CustomerID LIKE '' + @Caracter + '%'
END
GO
EXEC GetCountClientesByCaracter @Caracter = 'A'
Jeisson Duban Juanias Villarraga
ID: 351997
3. Realizar un procedimiento que determine la cantidad de registros que un cliente está en la tabla
ORDERS.
QUERY:
USE [Northwind]
-- =========================================
-- Author: Jeisson Juanias
-- Create date: 20-10-2020
-- Description: 3. Realizar un procedimiento que determine
---la cantidad de registros que un cliente está en la tabla ORDERS.
-- =============================================
CREATE PROCEDURE [dbo].[GetCountOrdersByCustomers]
AS
BEGIN
SET NOCOUNT ON;
SELECT CustomerID, COUNT(CustomerID) COUNT_ORDERS FROM ORDERS
GROUP BY CustomerID
END
EXEC [dbo].[GetCountOrdersByCustomers]
Jeisson Duban Juanias Villarraga
ID: 351997
4. Realizar una base de datos similar a Northwind, pero que los nombre de tablas, campos y registros
estén en castellano.
Jeisson Duban Juanias Villarraga
ID: 351997
QUERY:
CREATE TABLE "Categorias" (
"CategoriaID" "int" IDENTITY (1, 1) NOT NULL ,
"NombreCategoria" nvarchar (15) NOT NULL ,
"Descripcion" nvarchar (max) NULL ,
"Imagen" "image" NULL ,
CONSTRAINT "PK_Categorias" PRIMARY KEY CLUSTERED
(
"CategoriaID"
)
)
GO
CREATE INDEX "NombreCategoria" ON "dbo"."Categorias"("NombreCategoria")
GO
Jeisson Duban Juanias Villarraga
ID: 351997
CREATE TABLE "Productos" (
"ProductoID" "int" IDENTITY (1, 1) NOT NULL ,
"NombreProducto" nvarchar (40) NOT NULL ,
"ProvedorID" "int" NULL ,
"CategoriaID" "int" NULL ,
"CantidadPorUnidad" nvarchar (20) NULL ,
"PrecioUnidad" "money" NULL,
"UnidadesEnStock" "smallint" NULL ,
"UnidadesEnPedido" "smallint" NULL ,
"Descontinuado" "bit" NOT NULL ,
CONSTRAINT "PK_Productos" PRIMARY KEY CLUSTERED
(
"ProductoID"
),
CONSTRAINT "FK_Products_Categorias" FOREIGN KEY
(
"CategoriaID"
) REFERENCES "dbo"."Categorias" (
"CategoriaID"
))
GO
CREATE INDEX "CategoriesProductos" ON "dbo"."Productos"("CategoriaID")
GO
CREATE INDEX "CategoriaID" ON "dbo"."Productos"("CategoriaID")
GO
CREATE INDEX "NombreProducto" ON "dbo"."Productos"("NombreProducto")
GO
Jeisson Duban Juanias Villarraga
ID: 351997
5. Realizar un procedimiento que seleccione todos los registros de tabla Productos y Categories a la
vez.
QUERY:
-- =============================================
-- Author: Jeisson Juanias
-- Create date: 20-10-2020
-- Description: 5. Realizar un procedimiento que seleccione todos los registros de tabla
Productos y Categories a la vez.
-- =============================================
CREATE PROCEDURE ObtenerAllProductosCategorias
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM Productos T1
INNER JOIN CATEGORIAS T2 ON T2.CategoriaID = T1.CategoriaID
END
GO
EXEC ObtenerAllProductosCategorias
Jeisson Duban Juanias Villarraga
ID: 351997
6. Realizar un procedimiento que seleccione todos los productos que no corresponde a la categoría
bebidas (1)
-- =============================================
-- Author: Jeisson Juanias
-- Create date: 20-10-2020
-- Description: 6. Realizar un procedimiento que seleccione todos los productos que no
corresponde a la categoría bebidas (1)
-- =============================================
CREATE PROCEDURE ObtenerAllProductosCategoria_1
AS
BEGIN
SET NOCOUNT ON;
SELECT T1.*
FROM Productos T1
INNER JOIN CATEGORIAS T2 ON T2.CategoriaID = T1.CategoriaID
WHERE T2.NombreCategoria = 'Bebidas'
END
GO
EXEC ObtenerAllProductosCategoria_1
Jeisson Duban Juanias Villarraga
ID: 351997
7. Realizar un procedimiento que obtenga la cantidad de registros que no corresponde a condimentos
QUERY:
-- =============================================
-- Author: Jeisson Juanias
-- Create date: 20-10-2020
-- Description: 7. Realizar un procedimiento que obtenga la cantidad de registros que no
corresponde a condimentos
-- =============================================
CREATE PROCEDURE ObtenerCantidadProductosNoCondimentos
AS
BEGIN
SET NOCOUNT ON;
SELECT COUNT(T1.ProductoID) as Cantidad_Productos
FROM Productos T1
INNER JOIN CATEGORIAS T2 ON T2.CategoriaID = T1.CategoriaID
WHERE T2.NombreCategoria NOT IN ('Condimentos')
END
GO
EXEC ObtenerCantidadProductosNoCondimentos
Jeisson Duban Juanias Villarraga
ID: 351997
8. Realizar un procedimiento que seleccionar todos los campos de los registros que no corresponden a
categoría mariscos de la tabla productos.
-- =============================================
-- Author: Jeisson Juanias
-- Create date: 20-10-2020
-- Description: 8. Realizar un procedimiento que seleccionar todos los campos de los registros
--- que no corresponden a categoría mariscos de la tabla productos.
=============================================
CREATE PROCEDURE ObtenerProductosNoMariscos
AS
BEGIN
SET NOCOUNT ON;
DECLARE @id_Mariscos AS INT
SELECT @id_Mariscos = CategoriaID FROM Categorias WHERE NombreCategoria = 'Mariscos'
SELECT *
FROM Productos T1
WHERE T1.CategoriaID NOT IN (@id_Mariscos)
END
GO
EXEC ObtenerProductosNoMariscos
Jeisson Duban Juanias Villarraga
ID: 351997
9. Realizar un procedimiento que seleccionar los campos nombre del producto y precio (únicamente)
de los productos diferentes a cárnicos.
QUERY:
CREATE PROCEDURE ObtenerProductosNoCarnicos
AS
BEGIN
SET NOCOUNT ON;
DECLARE @id_Carne AS INT
SELECT @id_Carne = CategoriaID FROM Categorias WHERE NombreCategoria = 'Carne'
SELECT T1.NombreProducto,
T1.PrecioUnidad
FROM Productos T1
WHERE T1.CategoriaID NOT IN (@id_Carne)
END
GO
EXEC ObtenerProductosNoCarnicos
Jeisson Duban Juanias Villarraga
ID: 351997
10. Realizar un procedimiento que obtenga la cantidad de productos granos y cereales.
CREATE PROCEDURE ObtenerCantidadProductosGranos
AS
BEGIN
SET NOCOUNT ON;
DECLARE @id_Granos AS INT
SELECT @id_Granos = CategoriaID FROM Categorias WHERE NombreCategoria = 'Granos/Cereales'
SELECT COUNT(T1.NombreProducto) AS Cantidad
FROM Productos T1
WHERE T1.CategoriaID NOT IN (@id_Granos)
END
GO
EXEC ObtenerCantidadProductosGranos
Jeisson Duban Juanias Villarraga
ID: 351997
11. Realizar un procedimiento que seleccionar los campos nombre del producto y precio (únicamente)
de los quesos y productos cárnicos.
-- =============================================
-- Author: Jeisson Juanias
-- Create date: 20-10-2020
-- =============================================
CREATE PROCEDURE ObtenerProductosLacteosCarne
AS
BEGIN
SET NOCOUNT ON;
DECLARE @id_Granos AS INT
SELECT T1.NombreProducto,
T1.PrecioUnidad
FROM Productos T1
INNER JOIN Categorias T2 ON T2.CategoriaID = T1.CategoriaID
WHERE T2.NombreCategoria IN ('lacteos', 'Carne')
END
GO
EXEC ObtenerProductosLacteosCarne
Jeisson Duban Juanias Villarraga
ID: 351997
12. Realizar un procedimiento que seleccionar los campos nombre del producto, precio y stock
(únicamente) de las frutas secas y mariscos.
-- =============================================
-- Author: Jeisson Juanias
-- Create date: 20-10-2020
-- =============================================
CREATE PROCEDURE ObtenerProductosSecoMariscos
AS
BEGIN
SET NOCOUNT ON;
SELECT T1.NombreProducto,
T1.PrecioUnidad
FROM Productos T1
INNER JOIN Categorias T2 ON T2.CategoriaID = T1.CategoriaID
WHERE T2.NombreCategoria IN ('ProductosSecos', 'Mariscos')
END
GO
EXEC ObtenerProductosSecoMariscos