martes, 5 de mayo de 2015

Introducción SQL Server

Buenos días lectores, les quiero comentar que hace unos día compré un libro muy interesante con puros ejemplos de SQL Server, la portada del libro por si lo quieren conseguir se las voy a dejar aquí, mientras les publicaré el capitulo de introducción, cabe señalar que después si hay dudas bordaré por mi parte algunos temas, y que esta introducción no es para usuarios básicos, sino para usuarios intermedios, les pido que si les gustó compartan o le den clic a algún anuncio y de esta manera, al menos recuperar el costo del dominio. Entremos en materia


/*
Caso Desarrollado Nº 1
Implementar un script que permita crear la base de datos METROPOLITANO con valores estandar.
*/
CREATE DATABASE METROPOLITANO
GO

--Verificar los valores estandar de la base de datos
SP_HELPDB METROPOLITANO

/*
Caso Desarrollado Nº 2
Implementar un script que permita crear la tabla BOLETA dentro de la  base de datos METROPOLITANO
con las siguientes caracteristicas:

   ----------------------------------------------------
            BOLETA Nº 000000011515452
         
FECHA DE EMISION: 06/08/2012
MONTO: 10.00
   ----------------------------------------------------
*/

USE METROPOLITANO
GO

CREATE TABLE BOLETA (
  numeroBoleta    CHAR(15) NOT NULL,
  fechaEmision    DATE NOT NULL,
  monto           MONEY NOT NULL
)
GO

------------ LLENADO DE REGISTROS A LA TABLA BOLETA  ------------
INSERT INTO BOLETA VALUES ('00000001','22/04/2008',200)
INSERT INTO BOLETA VALUES ('00000002','02/01/2008',350)
INSERT INTO BOLETA VALUES ('00000003','03/10/2008',250)
INSERT INTO BOLETA VALUES ('00000004','01/05/2007',150)
INSERT INTO BOLETA VALUES ('00000005','07/12/2008',200)
INSERT INTO BOLETA VALUES ('00000006','16/08/2008',120)
INSERT INTO BOLETA VALUES ('00000007','03/01/2007',50)
INSERT INTO BOLETA VALUES ('00000008','05/03/2007',200)
INSERT INTO BOLETA VALUES ('00000009','14/09/2008',10)
INSERT INTO BOLETA VALUES ('00000010','18/12/2008',50)
INSERT INTO BOLETA VALUES ('00000011','09/11/2007',100)
INSERT INTO BOLETA VALUES ('00000012','06/10/2007',80)
-----------------------------------------------------------------


/*
Caso Desarrollado Nº 3
Implementar un script que permita crear el TRIGGER TX_MENSAJE que muestre un mensaje al usuario
cuando se realice una insercion o actualizacion a la tabla BOLETA.
*/
CREATE TRIGGER TX_MENSAJE
ON BOLETA
FOR INSERT, UPDATE
AS
   PRINT 'LA BOLETA SE ACTUALIZO CORRECTAMENTE'
GO

--PROBAR EL TRIGGER
--Insertando un nuevo registro
INSERT INTO BOLETA
   VALUES('00000013','07/08/2012',20.50)
GO

UPDATE BOLETA
   SET FECHAEMISION='07/08/2012',
       MONTO=20
   WHERE NUMEROBOLETA=00000013
GO

/*
Caso Desarrollado Nº 4
Implementar un script que permita crear el procedimiento almacenado SP_TOTALBOLETAS de la tabla BOLETA.
*/

CREATE PROCEDURE SP_TOTALBOLETAS
AS
BEGIN
SELECT YEAR(FECHAEMISION) AS [AÑO],
COUNT(*) AS [TOTAL]
FROM BOLETA
GROUP BY YEAR(FECHAEMISION)
END
GO

--Probar el Procedimiento Almacenado
EXEC SP_TOTALBOLETAS

/*
Caso Desarrollado Nº 5
Implementar un script que permita crear la funcion FN_TOTALBOLETAS de un determinado año
ingresado por el usuario a la tabla BOLETA.
*/

CREATE FUNCTION FN_TOTALBOLETAS(@AÑO INT)
RETURNS INT
AS
BEGIN
DECLARE @TOTAL INT
SELECT @TOTAL=COUNT(*)
FROM BOLETA
WHERE YEAR(FECHAEMISION)=@AÑO
GROUP BY YEAR(FECHAEMISION)
RETURN @TOTAL
END

--Probando la funcion usando una consulta:
SELECT DBO.FN_TOTALBOLETAS(2007) AS [TOTAL DE BOLETAS]

--O usando el comando Print:
PRINT 'EL TOTAL DE BOLETAS ES: '+STR(DBO.FN_TOTALBOLETAS(2007))

/*
Caso Desarrollado Nº 6
Implementar un script que permita crear la vista VBOLETAS donde muestre los registros
contenidos en la tabla BOLETAS.
*/

CREATE VIEW VBOLETA
AS
SELECT B.NUMEROBOLETA,B.FECHAEMISION,B.MONTO
FROM BOLETA B

--Probar la Vista
SELECT * FROM VBOLETA


/*
Caso Desarrollado Nº 7
Implementar un script que permita agregar un archivo secundario a la base de datos METROPOLITANO
llamado METROPOLITANO_SEC2 de tamaño inicial 5MB y un tamaño máximo de 10MB con un factor de crecimiento de 2%.
*/

--Verificar los archivos contenidos en la base de datos Metropolitano
SP_HELPDB METROPOLITANO

--Modificar la Base de Datos
ALTER DATABASE METROPOLITANO
ADD FILE (
  NAME='METROPOLITANO_SEC2',
  FILENAME='E:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\METROPOLITANO_SEC2.NDF',
  SIZE=5MB,
  MAXSIZE=10MB,
  FILEGROWTH=2%
)
--Verificar los archivos de la BD METROPOLITANO
SP_HELPDB METROPOLITANO

/*
Caso Desarrollado Nº 8
Implementar un script que permita modificar la precision de la columna Número de Boleta asignada
inicialmente con el valor 15 modificarlo por 20 de la tabla Boleta:
*/

--1. Verificar las columnas de la tabla Boleta
SP_COLUMNS BOLETA
GO

--2. Modificar la columna Numero de Boleta
ALTER TABLE BOLETA
ALTER COLUMN NUMEROBOLETA CHAR(20) NOT NULL
GO



ALTER TRIGGER TX_MENSAJE
ON BOLETA
FOR INSERT, UPDATE
AS
   PRINT 'LA BOLETA SE ACTUALIZO CORRECTAMENTE'
   PRINT 'FECHA: '+CAST(GETDATE() AS VARCHAR(20))
GO

--Probar
INSERT INTO BOLETA
   VALUES('00000014','07/08/2012',20.50)

UPDATE BOLETA
   SET FECHAEMISION='07/08/2012',
       MONTO=20.50
   WHERE NUMEROBOLETA='00000014'


PRINT 'EL TOTAL DE BOLETAS ES: '+DBO.FN_TOTALBOLETAS(2007)


/*
Caso Desarrollado Nº 10
Implementar un script que permita modificar el procedimiento almacenado SP_TOTALBOLETAS de la
tabla BOLETA donde muestre la columna MES agrupando el numero de boletas por cada mes y al final
mostrar el total de boletas registradas.
*/

ALTER PROCEDURE SP_TOTALBOLETAS
AS
BEGIN
SELECT YEAR(FECHAEMISION) AS [AÑO],
MONTH(FECHAEMISION) AS [MES],
COUNT(*) AS [TOTAL]
FROM BOLETA
GROUP BY ROLLUP(YEAR(FECHAEMISION),MONTH(FECHAEMISION))
END
GO

EXEC SP_TOTALBOLETAS


/*
Caso Desarrollado Nº 11
Implementar un script que permita modificar la funcion FN_TOTALBOLETAS de un determinado año y
un mes ingresado por el usuario a la tabla BOLETAS.
*/

ALTER FUNCTION FN_TOTALBOLETAS(@AÑO INT,@MES INT)
RETURNS INT
AS
BEGIN
DECLARE @TOTAL INT
SELECT @TOTAL=COUNT(*)
FROM BOLETA
WHERE YEAR(FECHA_BOL)=@AÑO AND MONTH(FECHA_BOL)=@MES
GROUP BY YEAR(FECHA_BOL)
RETURN @TOTAL
END

--Probar
SELECT dbo.FN_TOTALBOLETAS(2012,3) AS [TOTAL DE BOLETAS]

DECLARE @AÑO INT=2012,@MES INT=3
PRINT 'EL TOTAL DE BOLETAS DEL MES '+CAST(@MES AS CHAR(2))+
'DEL AÑO '+CAST(@AÑO AS CHAR(4))+
' ES: ' + CAST(dbo.FN_TOTALBOLETAS(@AÑO,@MES) AS CHAR(4))


/*
Caso Desarrollado Nº 12
Implementar un script que permita modificar la vista VBOLETAS donde muestre solo las columnas
Numero de Boleta y Fecha de Emision de la tabla BOLETAS, ademas de encriptar la información de la implementación.
*/
ALTER VIEW VBOLETA
AS
SELECT B.NUMEROBOLETA,B.FECHAEMISION
FROM BOLETA B

--Visualizar la implementacion de la vista
SP_HELPTEXT VBOLETA

/*
Caso Desarrollado Nº 13
Implementar un script que permita eliminar la base de datos METROPOLITANO.
*/

USE MASTER
GO

DROP DATABASE METROPOLITANO
GO


/*
Caso Desarrollado Nº 15
Implementar un script que permita eliminar el trigger TX_MENSAJE asociado a la tabla BOLETA
de la base de datos METROPOLITANO.
*/

DROP TRIGGER TX_MENSAJE

--Inhabilitar el Trigger TX_MENSAJE
Disable Trigger 'TX_MENSAJE' ON DATABASE
DISABLE TRIGGER 'TX_MENSAJE'

Espero haya sido de su agrado este post

Banderas de Visitantes

Flag Counter