jueves, 10 de noviembre de 2016

Fundamentos de Bases de Datos: Módulo 02: Ejemplos SELECT, INSERT, UPDATE, DELETE

Ejemplos:

-- =============================================
-- EJEMPLOS: 2016-11-09
-- =============================================

USE CSDaniel;
GO
SELECT DPI, Nombre, Apellido
      FROM Cliente;

SELECT DPI, Nombre, Apellido
      , YEAR(FechaNacimiento) AS Anio
      FROM Cliente
      WHERE YEAR(FechaNacimiento) = 1985;

SELECT DPI, Nombre, Apellido
      , YEAR(FechaNacimiento) AS Anio
      FROM Cliente
      WHERE Apellido = 'mesa';

SELECT DPI, Nombre, Apellido
      , YEAR(FechaNacimiento) AS [Año Nac.]
      FROM Cliente
      WHERE Apellido LIKE 'M%';

SELECT DPI, Nombre, Apellido
      , YEAR(FechaNacimiento) AS [Año Nac.]
      FROM Cliente
      WHERE Apellido LIKE 'M%'
      AND MONTH(FechaNacimiento) = 11;

SELECT DPI, Nombre, Apellido
      , YEAR(FechaNacimiento) AS [Año Nac.]
      , MONTH(FechaNacimiento) AS Mes
      FROM Cliente
      WHERE Apellido LIKE 'M%'
      OR MONTH(FechaNacimiento) = 10;

SELECT DPI, Nombre, Apellido
      , YEAR(FechaNacimiento) AS [Año Nac.]
      , MONTH(FechaNacimiento) AS Mes
      FROM Cliente
      WHERE (Apellido LIKE 'M%'
      OR MONTH(FechaNacimiento) = 10)
      AND YEAR(FechaNacimiento) = 1980;

SELECT Nombre, Apellido,
      YEAR(FechaNacimiento) AS [Año]
      FROM Cliente
      WHERE YEAR(FechaNacimiento)
            BETWEEN 1965 AND 1980;

SELECT Nombre, Apellido
      FROM Cliente
      ORDER BY DPI;

SELECT Apellido, Nombre
      FROM Cliente
      ORDER BY Apellido, Nombre;

SELECT Apellido, Nombre
      , YEAR(FechaNacimiento) AS Anio
      FROM Cliente
      WHERE NOT YEAR(FechaNacimiento) = 1985
      ORDER BY YEAR(FechaNacimiento) DESC,
            Apellido, Nombre;

SELECT NumeroTarjeta, FechaVencimiento,
      LimiteCredito,
      YEAR(FechaVencimiento) AS Anio
      FROM Tarjeta
      WHERE (YEAR(FechaVencimiento) = 2018)
      ORDER BY FechaVencimiento DESC;

-- INNER JOIN Cliente y Tarjeta
SELECT Apellido, Nombre
      , NumeroTarjeta, FechaVencimiento
      FROM Cliente
      INNER JOIN Tarjeta
            ON Cliente.CodCliente = Tarjeta.CodCliente
      ORDER BY Apellido, Nombre;


SELECT Cliente.Apellido, Cliente.Nombre,
      Tarjeta.NumeroTarjeta, Movimiento.Fecha,
      Movimiento.Cargo, Movimiento.Abono
      FROM Cliente
            INNER JOIN Tarjeta
            ON Cliente.CodCliente = Tarjeta.CodCliente
            INNER JOIN Movimiento
            ON Tarjeta.CodTarjeta = Movimiento.CodTarjeta
      WHERE Nombre LIKE 'BE%'
      ORDER BY Cliente.Apellido DESC,
            Cliente.Nombre,
            Movimiento.Fecha DESC;

-- Clientes y Tarjetas que Vencen en 2016-11
SELECT C.Apellido, C.Nombre,
      T.NumeroTarjeta,
      YEAR(T.FechaVencimiento) AS AnioVenc
      FROM Cliente C
      INNER JOIN Tarjeta T
      ON C.CodCliente = T.CodCliente
      WHERE YEAR(T.FechaVencimiento) = 2016
      AND MONTH(T.FechaVencimiento) = 11
      ORDER BY C.Apellido, C.Nombre;





----------------------
-- Ejemplos 2016-11-10
----------------------
USE CSDaniel;
GO

SELECT COUNT(*) AS CantidadClientes
      FROM Cliente;

SELECT COUNT(*) AS Clientes1984
      FROM Cliente
      WHERE YEAR(FechaNacimiento) = 1984;

-- Movimientos de la Tarjeta
-- Cargos son gastos con la Tarjeta
SELECT MIN(Cargo) AS Minimo,
      MAX(Cargo) AS Maximo,
      AVG(Cargo) AS Promedio
      FROM Movimiento;

-- Movimientos de la Tarjeta Codigo 1
SELECT MIN(Cargo) AS Minimo,
      MAX(Cargo) AS Maximo,
      AVG(Cargo) AS Promedio,
      SUM(Cargo) AS TotalCargos
      FROM Movimiento
      WHERE CodTarjeta = 1
      AND YEAR(Fecha) = 2015;

-- AGRUPAR POR COLUMNA, SOLO LAS COLUMNAS
-- DEL GROUP BY Pueden ir en el SELECT
SELECT CodTarjeta,
      SUM(Cargo) AS CargoTotal,
      SUM(Abono) AS AbonoTotal,
      SUM(Cargo) - SUM(Abono) AS Saldo
      FROM Movimiento
      GROUP BY CodTarjeta
      ORDER BY CodTarjeta;
GO
-- Crear una vista usando un SELECT
CREATE VIEW vTarjetaSaldo
      AS
      SELECT CodTarjeta,
      SUM(Cargo) AS CargoTotal,
      SUM(Abono) AS AbonoTotal,
      SUM(Cargo) - SUM(Abono) AS Saldo
      FROM Movimiento
      GROUP BY CodTarjeta;
GO
-- Utilizar la Vista
SELECT *
      FROM vTarjetaSaldo
      ORDER BY Saldo DESC;

-- INNER JOIN con Vistas
-- SELECT para crear vClienteTarjeta
SELECT Cliente.Apellido, Cliente.Nombre,
      Tarjeta.NumeroTarjeta, Tarjeta.FechaVencimiento,
      Tarjeta.LimiteCredito,
      vTarjetaSaldo.Saldo, vTarjetaSaldo.CargoTotal,
      vTarjetaSaldo.AbonoTotal
FROM Cliente INNER JOIN Tarjeta
      ON Cliente.CodCliente = Tarjeta.CodCliente
      INNER JOIN vTarjetaSaldo
      ON Tarjeta.CodTarjeta = vTarjetaSaldo.CodTarjeta
      WHERE Cliente.Nombre = 'ENA'
      ORDER BY Cliente.Apellido, Cliente.Nombre;

SELECT *
      FROM vClienteTarjeta
      WHERE Nombre = 'Ena'
      ORDER BY Apellido, Nombre;
-- CodTarjeta = 2554, 2795
SELECT CodTarjeta
      FROM Tarjeta
      WHERE NumeroTarjeta = '4111113190464280';


-- INSERT Movimiento
INSERT INTO Movimiento
      (CodTarjeta, Cargo, Abono, Fecha)
VALUES
      (2554, 0, 3500, '2015/02/28');

INSERT INTO Movimiento
      (CodTarjeta, Cargo, Abono, Fecha)
VALUES
      (2795, 0, 2500, '2015/01/28'),
      (2795, 0, 2525, '2015/02/28'),
      (2795, 0, 2550, '2015/03/28'),
      (2795, 0, 2560, '2015/04/28');

SELECT *
      FROM Movimiento
      WHERE CodTarjeta = 2554;

UPDATE Movimiento
      SET CodTarjeta = 2554
      WHERE CodTarjeta = 2795
      AND CodMovimiento = 24003;

UPDATE Movimiento
      SET CodTarjeta = 2554
      WHERE CodMovimiento = 24004;
UPDATE Movimiento
      SET CodTarjeta = 2554
      WHERE CodMovimiento = 24005;

-- El pago fue con cheque, el cheque fue anulado
-- Se borra el abono de la tabla Movimiento
DELETE FROM Movimiento
      WHERE CodMovimiento = 24005;

-- Modificar Tabla Cliente
-- Agregar Columna Estado
-- El Valor por Omisión es: 'A'
ALTER TABLE Cliente
      ADD Estado CHAR(1) NOT NULL
      CONSTRAINT Cliente_CT_Estado DEFAULT 'A';



SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        Daniel Santizo Saldaña
-- Create date: 2016-11-09
-- Description:   Proc Dar de Baja al Cliente
-- =============================================
CREATE PROCEDURE paInactivar
      -- Add the parameters for the stored procedure here
      @CodCliente int = 0
AS
BEGIN
      -- SET NOCOUNT ON added to prevent extra result sets from
      -- interfering with SELECT statements.
      SET NOCOUNT ON;

      -- VARIABLES
      DECLARE @Contador INT;
      -- INICIALIZAR EL VALOR
      SET @Contador = 0;
      -- Consultar y ASIGNAR VALOR
      SELECT @Contador = COUNT(*)
            FROM Cliente
            WHERE CodCliente = @CodCliente;
      -- Evaluar @Contador
      IF (@Contador > 0)
      BEGIN
            UPDATE Cliente
                  SET Estado = 'B'
                  WHERE CodCliente = @CodCliente;
      END;

END
GO




SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:        Daniel Santizo Saldaña
-- Create date: 2016-11-09
-- Description:   Recibe un CodCliente y si el Cliente
-- Existe y está Inactivo ('B') entonces lo Activa ('A')
-- =============================================
CREATE PROCEDURE paActivar
      -- Add the parameters for the stored procedure here
      @CodCliente int  = 0
AS
BEGIN
      -- SET NOCOUNT ON added to prevent extra result sets from
      -- interfering with SELECT statements.
      SET NOCOUNT ON;

      -- VARIABLE
      DECLARE @Contador INT;
      -- Inicializar
      SET @Contador = 0;
      -- Consultar la Tabla
      SELECT @Contador = COUNT(*)
            FROM Cliente
            WHERE CodCliente = @CodCliente
            AND Estado = 'B';
      -- Verificar Existencia
      IF (@Contador > 0)
            UPDATE Cliente SET Estado = 'A'
                  WHERE CodCliente = @CodCliente;

 END
GO










-- INFORMACION DE LOS CLIENTES para ver quienes están activos
SELECT *
      FROM Cliente;

-- Ejecutar o Invocar Procedimiento Almacenado
EXECUTE paInactivar 1;
SELECT *
      FROM Cliente WHERE CodCliente = 1;
EXEC paActivar 1;
SELECT *
      FROM Cliente WHERE CodCliente = 1;




No hay comentarios.:

Publicar un comentario