Anda di halaman 1dari 50

Desarrollo de nuestra base de datos

A continuación mostramos el desarrollo de nuestra base de datos la cual es titulada


“BD_SystemControlGym” y en el otro script llamado “ProcFunView_SystemControlGym” es el script
en donde va el código de las Consultas, Procedimientos almacenados , Trigger o disparadores, Vistas
y Cursores.
Nuestra base de datos cuenta con 18 tablas las cuales son : Cliente, Factura, Detalle_Factura, Producto,
Categoria, Membresia, RolUsuario, PagosAct, Inscripcion, Horario, Horario_Instructor,
Instructor,Actividada, Asistencia, Sala, Sala_Equipos, Equipos y Proveedor.
Consultas
Un sistema de bases de datos proporciona un lenguaje de definición de datos para especificar el esquema
de la base de datos y un lenguaje de manipulación de datos para expresar las consultas a la base de datos
y las modificaciones.
La manipulación de datos nos permite:
• La recuperación de información almacenada en la base de datos.
• La inserción de información nueva en la base de datos.
• El borrado de información de la base de datos.
• La modificación de información almacenada en la
base de datos.
Una consulta es una instrucción de solicitud para recuperar información. La parte de un LMD que
implica recuperación de información se llama lenguaje de consultas. Las consultas pueden involucrar
información de más de una tabla.

Consultas de la tabla [DBO].[MEMBRESIA]


Consulta # 01
Con esta consulta uniremos atributos de dos tablas las cuales son, Cliente y Membresia , con las cuales
mostraremos el Primer nombre del cliente, nombre de membresía, fecha de impresión y la fecha de
vencimiento de esta.
select C.Pnombre_cte, M.N_Mem, M.Fecha_Impresión, M.Fecha_Vencimiento -- seleccionamos
atributos
from Cliente C, Membresia M --tanto de la tabla cliente como de la tabla membresia
where C.Id_Cliente=M.Id_Cliente --siempre y cuando sea el mismo Id en cada tabla
order by C.Pnombre_cte asc -- y que se ordene ascedentemente segun el nombre del cliente
Consulta de la tabla [DBO].[CLIENTE]
Consulta # 01
Con esta consulta mostraremos los cliente con su primer nombre, primer apellido y su edad, clientes
mayores de 20 años de edad y ordenados de menor a mayor según su edad
select Pnombre_cte, Papellido_cte, Edad from Cliente -- Seleccionamos el primer nombre ,
primer apellido y edad
where Edad > 20 -- pero de los clientes mayores a 20 años
Order by Edad asc-- ordenados ascedentemente por la edad
Consulta #02
Con esta consulta listamos los clientes con todos sus atributos, pero aquellos clientes cuyo primer
nombre inicie con la letra A, y estos serán ordenados de manera ascendente por su Id

SELECT *FROM cliente --- Seleccionamos todos los clientes


WHERE Pnombre_cte LIKE 'A%'-- cuyo primer nombre empieze con la letra A
Order by Id_Cliente asc --- ordenados de manera ascedentes segun su Id
Consulta #03
Con esta consulta mostraremos el primer nombre, primer apellido, cedula , edad y estado de los
clientes y los cuales serán ordenados de manera ascendente por su primer nombre
Select Pnombre_cte, Papellido_cte, Cedula, Edad, Estado
from Cliente -- Seleccionamos los atributos de lla tabla
Order by pnombre_cte asc -- los ordenamos de manera ascedente por su nombre

Consulta #04
Con esta consulta mostraremos todos los clientes inactivos con sus nombres y apellidos ordenados de
manera ascendentes por su número de Id

select Id_cliente, pnombre_cte,Snombre_cte papellido_cte, Sapellido_cte, Estado from cliente


-- mostramos los atributos de la tabla Cliente
where Estado like 'Inactivo%' -- cuyo estado sea inactivo
Order by Id_Cliente asc -- ordenados de manera ascendente por su número de Id
Consulta #05
Mostraremos los Clientes activos con sus respectivos atributos ordenados de manera ascendente por su
número de Id.
select Id_cliente, pnombre_cte,Snombre_cte papellido_cte, Sapellido_cte, Estado from cliente
-- mostramos los atributos de la tabla Cliente
where Estado like 'Activo%' -- cuyo estado sea activos
Order by Id_Cliente asc -- ordenados de manera ascedente por su numero de Id

Consulta #06
Con esta consulta mostraremos el primer nombre y apellido de los clientes que nacieron en un año es
especifico en este ejemplo será de 1997

select pnombre_cte, papellido_cte from cliente --- seleccionamos los atributos de la tabla
cliente
where Fecha_nac like '1997%' -- que hallan nacido en una fecha en especifico
Order by Pnombre_cte asc -- que se ordenen segun su nombre ascendentemente
Consulta # 07
Mostraremos los clientes cuya cedula de identidad inicie con 001, así mismo mostraremos sus nombres
completos y apellido.

select pnombre_cte,Snombre_cte, papellido_cte, Sapellido_cte, Cedula from cliente ---


seleccionamos los atributos de la tabla cliente
where Cedula like '001%' -- cuya cedula inicie con 001
Order by Pnombre_cte asc -- que se ordenen segun su nombre ascendentemente

Consulta #08
Mostraremos todos los clientes con sus nombres completos siempre y cuando sean mujeres.

select pnombre_cte,Snombre_cte, papellido_cte, Sapellido_cte, Genero from cliente ---


seleccionamos los atributos de la tabla cliente
where Genero like 'F' -- cuya genero sean mujeres
Order by Pnombre_cte asc -- que se ordenen segun su nombre ascendentemente
Consulta #09
Mostramos los registros de los clientes que sean varones, con sus respectivos nombres y apellidos.
select pnombre_cte,Snombre_cte, papellido_cte, Sapellido_cte, Genero from cliente ---
seleccionamos los atributos de la tabla cliente
where Genero like 'M' -- cuya genero sean varones
Order by Pnombre_cte asc -- que se ordenen segun su nombre ascendentemente
Consulta #10

Mostramos la cantidad de clientes Mujeres y cuantos son varones, hay registrados en nuestra tabla.

select Genero , count (*) from Cliente -- contamos segun el genero de la tabla cliente
group by Genero -- agrupados cuantas F y M hay

Consulta de la tabla [DBO].[ACTIVIDAD]


Consulta #01
Listaremos el primer nombre de los clientes que estén en la actividad de zumba así como el horario de
la clase.
select C.Pnombre_cte, H.Dia, H.Hora_Inicio, H.Hora_fin, A.Nombre_Actividad -- seleccionamos
los atributos a mostrar
from Cliente C, Horario H, Inscripcion I, Actividad A --- seleccionamos las tablas
Where C.Id_Cliente= I.Id_Cliente AND I.Id_Horario=H.Id_Horario
AND H.Id_Actividad = A.Id_Actividad
AND A.Nombre_Actividad like '%Zumba' -- que esten en la clase especifica en este caso de
zumba
order by C.Pnombre_cte asc --ordemos ascesdentes por sus nombres

Consulta #02
Mostraremos las actividades actuales del gimnasio, ordenados de manera ascendentes.

select *from Actividad -- seleccionamos todos los atributos de la tabla actividad


order by Nombre_Actividad desc -- ordenamos de manera ascedente
Consulta de la tabla [DBO].[FACTURA]
Consulta #01
Mostramos el detalle de las facturas que corresponde a un cliente en especifico en este caso el detalle
de las facturas de la cliente Ana
Select C.Pnombre_cte, P.Nombre_Producto, P.PrecioUnit_Dolar, Cat.Nombre_categoria, D.Cantidad
-- seleccionamos los atributos
from Cliente C, Factura F, Detalle_Factura D, Producto P, Categoria Cat -- seleccionamos las
tablas
where C.Id_Cliente=F.Id_Cliente AND F.Id_Factura=D.Id_Factura AND D.Id_Producto=P.Id_Producto
AND P.Id_Categoria=Cat.Id_Categoria -- con los id correspondientes
AND C.Pnombre_cte like 'Ana%' --que pertenezcan a una persona en especifico

Consulta #02
Mostraremos los atributos de la tabla factura y detalle_factura en una misma vista mediante la
instrucción INNER JOIN.
Select f.Id_Factura, f. Fecha_Factura, df.Id_Producto, df.Precio_Unit, df.Cantidad,
df.Descuento, df.Subtotal --- seleccionamos los atrutos
From Factura f inner join Detalle_Factura df on f.Id_Factura = df.Id_Factura -- y con INNER
JOIN devolveremos unicamente aquellos registros identicos en los campos

Nota: algunos campos dicen nul porque faltaba la ejecución de los procedimientos y cursores.
Consulta de la tabla [DBO].[PRODUCTO]
Consulta #01
Mostraremos el registro de la tabla productos, con sus respectivos atributos de manera descendentes
por el nombre del producto.
select *from Producto -- mostramos todos los atributos de la tabla producto
Order by Nombre_Producto desc -- de manera descendente por el nombre del producto

Consulta #02
Con esta consulta mostramos la cantidad de producto registrados en la base de datos.
Select Count(Nombre_producto)from Producto
Consulta # 03
Mostraremos cuantos de estos productos son trajes que están en venta.
Select count(Nombre_Producto) from producto – contamos los atributos de la tabla productos
where Nombre_Producto like 'Traje%' – cuyo nombre del productos sean trajes.

Mostramos la tabla original con todos los productos

Y ahora la ejecución de la consulta con el resultados para que se pueda comprobar .

Consulta #04

Mostraremos el nombre de los productos con sus respectivas categorías de manera ascendente según el
nombre del producto.

Select P.Nombre_Producto, C.Nombre_Categoria --- seleccionamos los atributos


from Producto P, Categoria C --- seleccionamos las tablas
Where P.Id_Categoria=C.Id_Categoria -- en ambas tablas siempre y cuando el id sea el mismo
Order by P.Nombre_Producto ASC -- y ordenamos de manera ascendente por el nombre del producto
Consulta #05
Mostraremos el nombre de los productos cuya categoría sea ropa para dama.

Select P.Nombre_Producto, C.Nombre_Categoria


from Producto P, Categoria C
Where P.Id_Categoria=C.Id_Categoria AND C.Nombre_Categoria = 'Ropa para dama'
Order by P.Nombre_Producto ASC

Consulta de la tabla [DBO].[MEMBRESIA]


Consulta #01
Mostraremos el Nombre, numero de membresía, fecha de impresión y vencimiento de los clientes.

select C.Pnombre_cte, M.N_Mem, M.Fecha_Impresión, M.Fecha_Vencimiento -- seleccionamos


atributos
from Cliente C, Membresia M --tanto de la tabla cliente como de la tabla membresia
where C.Id_Cliente=M.Id_Cliente --siempre y cuando sea el mismo Id en cada tabla
order by C.Pnombre_cte asc -- y que se ordene ascedentemente segun el nombre del cliente
Consultas de la tabla [DBO].[INSTRUCTOR]

Consulta #01
Mostraremos el contenido de la tabla instructor

select *from Instructor

Consulta #02
Mostrar en que sala imparte cada instructor

Select I.Primer_Nombre, I.Primer_Apellido, A.Nombre_Actividad, S.N_Sala, S.Nombre_Sala


from Instructor I, Horario_Instructor HI, Horario H, Actividad A, Sala S
where I.Id_Instructor=HI.Id_Instructor AND HI.Id_Horario=H.Id_Horario AND
H.Id_Actividad=A.Id_Actividad
AND A.Id_Actividad=S.Id_Actividad

Consulta #03
Mostrar a los profesores que imparten Aerobic

Select I.Primer_Nombre, I.Primer_Apellido, A.Nombre_Actividad, S.N_Sala, S.Nombre_Sala


from Instructor I, Horario_Instructor HI, Horario H, Actividad A, Sala S
where I.Id_Instructor=HI.Id_Instructor AND HI.Id_Horario=H.Id_Horario AND
H.Id_Actividad=A.Id_Actividad
AND A.Id_Actividad=S.Id_Actividad AND A.Nombre_Actividad = 'Aerobic'

Consulta # 04
Mostrar nombre y teléfono de cada instructor

Select Primer_Nombre, Primer_Apellido, Telefono From Instructor


order by Primer_Apellido ASC
Consultas de la tabla [DBO].[SALA]

Consulta #01
Mostrar el contenido de la tabla sala

select *from Sala

Consulta # 02
Hacer un conteo de las personas que asisten a las clases de Zumba

select Count(C.Pnombre_cte)
from Cliente C, Horario H, Inscripcion I, Actividad A, Sala S
Where C.Id_Cliente= I.Id_Cliente AND I.Id_Horario=H.Id_Horario
AND H.Id_Actividad = A.Id_Actividad AND A.Id_Actividad=S.Id_Actividad
AND S.Nombre_Sala like '%Zumba'

Consulta #03
Mostrar en pantalla el nombre de las salas, numero sala y equipo que existe en ella.

Select S.Nombre_Sala, S.N_Sala, E.Nombre


from Sala S, Sala_Equipo SE, Equipo E
where S.Id_Sala=SE.Id_Sala AND SE.Id_Equipo= E.Id_Equipo
Consultas de la tabla [DBO].[EQUIPO]
Consulta #01
Mostrar la información de los equipos

Select *from Equipo

Consulta #02
Mostrar Nombre del Equipo, precio y el proveedor que lo distribuye

select E.Nombre, E.Costo_Dolar, P.Nombre_Empresa


from Equipo E, Proveedor P
where E.Id_Proveedor=P.Id_Proveedor

Consulta de la tabla [DBO].[PROVEEDORES]


Consulta #01
Mostrar la información de los proveedores

Select *from Proveedor

Consulta #02
Mostrar el Equipo que distribuye Export Gym

select P.nombre_Empresa, E.Nombre


from Proveedor P, Equipo E
where E.Id_Proveedor=P.Id_Proveedor
AND P.Nombre_Empresa = 'Export Gym'

Consulta de la tabla [DBO].[DETALLE_FACTURA]


Consulta # 01
Mostramos la suma Total de los Subtotales de la factura.
Select sum(Subtotal) --- Sumamos el subtotal de los producto
as [Total] -- nombramos Total donde nos aparecera el total de la suma
From Detalle_Factura --- de la tabla Detalle de la factura
Go
Ahora mostramos el resultado de nuestra consulta

Consulta #02
Mostramos la suma total de las facturas pero agrupados por Cliente
Ejemplo observemos que la factura 1 lleva dos productos uno de $4 y otro de $5 en total serian $9

Select Id_Factura,sum(Subtotal) --- Sumamos el subtotal de los producto


as [Total] -- nombramos Total donde nos aparecera el total de la suma
From Detalle_Factura --- de la tabla Detalle de la factura
group by Id_Factura
go
Ahora en la siguiente imagen veremos el resultado de la ejecución de nuestra consulta y observemos
que la factura uno su resultado es $9
PROCEDIMIENTOS ALMACENADOS
Son una herramienta diseñada principalmente para optimizar la obtención de datos.
Un procedimiento almacenado es una consulta que se almacena en una base de datos
en SQL Server en lugar de almacenarse en el código cliente (normalmente C# o Java) en el equipo
cliente.

Creación de procedimientos almacenados (Store Procedures)


La instrucción general para crear procedimientos almacenados es la siguiente:

CREATE PROC nombre_proc parametros


AS
INSTRUCCION SQL

Es necesario aclarar, que un procedimiento almacenado puede recibir parámetros de


entrada y devolver parámetros de salida.

1- Abrimos una nueva consulta (un nuevo scrip)

Una vez creado el nuevo scrip comenzamos a programar


2- Primero creamos procedimientos almacenados para la tabla Cliente de nuestra base de datos
SistemaGimnasio. El procedimiento a continuación se llama SP_InsertarCliente , primero
declaramos las variables globales como en nuestra trabla cliente.

A continuación ejecutamos nuestro procedimiento almacenado para ellos utilizamos el comando Exec
+ el nombre del procedimiento + los valores a insertar en comillas simples estos últimos, pero a
como observamos en la imagen en el atributo Cod_Cliente y Edad (recuadro verde) los dejamos vacío
dado que más adelante utilizamos cursores para crear códigos automáticos y calcular la edad del
cliente.

Ahora veamos el resultado de la ejecución de nuestro procedimiento almacenado SP_InsertarCliente.

En esta primera captura podemos observar el registro de todos los clientes ya insertado

En esta otra captura observemos el resultado de la ejecución del procedimiento almacenado


anteriormente.
3- Procedimiento almacenado SP_BuscarPorCodigo con este procedimiento almacenado permite buscar
a los clientes por su código (Atributo Cod_Cliente), para ellos creamos nuestros procedimiento Create
Procedure SP_BuscarPorCodigo , declaramos nuestra variable local @Cod_Cliente Varchar (10),
luego seleccionamos la tabla de Cliente.

Ahora ejecutamos nuestro procedimiento almacenado y buscamos el código 0001jipo a como vemos
en la image. Exec SP_BuscarPorCliente ‘0001jipo’

4- SP_BuscarPorNombres Con este procedimiento almacenado podemos realizar búsqueda de los


clientes por sus nombres.

Ahora veremos distintos resultados con la ejecución de nuestro procedimiento almacenado.

En esta imagen vemos que solo obtuvimos un resultado del nombre creado.
En este otro resultado obtuvimos dos nombres que iniciaban igual

Y en este último vemos que no se encuentran ningún resultado ya que no hay ningún cliente registrado
con ese nombre

Por lo que podemos demostrar que el procedimiento funciona perfectamente.

5- SP_BuscarPorLetra Con este procedimiento se quiere poder buscar un registro por la letra del Primer
nombre del cliente a como vemos a continuación Creamos el procedimiento y dentro del código
usamos el comando like ‘%’ lo que indica que la comparación del primer nombre se realiza sólo en el
primer carácter.

Ahora ejecutamos nuestro procedimiento almacenado buscando los nombres que inicien con la letra A.

6- SP_ActualizarrCliente Este procedimiento es para poder actualizar los datos del cliente , primero
declaramos Create procedure SP_ActualizarCliente , luego declaramos nuestras variables globales ,
actualizamos nuestra tabla cliente con el comando UPDATE y por ultimo asignamos a los atrbutos las
variables globales declaradas para poder modificar a como vemos en la imagen.
Y mostramos el resultado de nuestro procedimiento almacenado

7- SP_ControlIngresoCliente con este procedimiento almacenado lo que hacemos es que controlamos


que no halla clientes duplicados dado que si se quiere ingresar nuevamente el mismo cliente con este
procedimiento almacenado se verificara si el cliente ya existe de manera comparando cada atributo si
es igual toda la cadena entonces enviara un msj que diga “EL USUARIO YA EXISTE” y si no existe
y se ingresa entonces enviara un msj “EL REGISTRO SE A INGRESADO
CORRECTAMENTE”, y si hay un atributo not null y no se ingresa entonces enviara un msj “NO
SE PUEDEN INGRESAR VALORES NULOS” a como vemos en la siguiente captura.

Ejecutamos nuestro procedimiento verificando que si funciona


Creación de Trigger
Los disparadores son reglas que maneja un DBMS. Como un disparador implica un evento, una
condición y una secuencia de acciones, también se conoce como regla de evento-condición-accción.

Un Trigger o Disparador es un programa almacenado(stored programo SP), creado para ejecutarse


automáticamente cuando ocurra un evento en una tabla o vista de la base de datos. Dichos eventos son
generados por los comandos INSERT, UPDATE y DELETE, los cuales forman parte del DM (Data
Modeling Language) deSQL.

Un Disparador nunca se llama directamente, en cambio, cuando una aplicación o usuario intenta insertar,
actualizar, o anular una fila en una tabla, la acción definida en el disparador se ejecuta automáticamente
(se dispara).

Las ventajas de los triggers son varias:


1. La entrada en vigor automática de restricciones de los datos, hace que los usuarios entren sólo valores
válidos.
2. El mantenimiento de la aplicación se reduce, los cambios a un disparador se refleja
automáticamente en todas las aplicaciones que tienen que ver con la tabla sin la necesidad de recompilar
o enlazar.
3. Logs automáticos de cambios a las tablas. Una aplicación puede guardar un registro corriente de
cambios, creando un disparador que se active siempre que una tabla se modifique.
4. La notificación automática de cambios a la Base de Datos con alertas de evento en los
disparadores.

Decimos que los Triggers se invocan para ejecutar un conjunto de instrucciones que protejan, restrinjan,
actualicen o preparen la información de las tablas, al momento de manipular la información. Para crear
triggers son necesarios los privilegios SUPER y TRIGGER

Sintaxis de los trigger

Create Trigger SP_Nombre on Nombre_de_la_tabla


< Instrucciones que se ejecutaran >

A continuación mostramos la creación de 3 Trigger de INSERT, UPDATE Y DELETE de las tablas


Cliente, Categoría, Instructor, Actividad y Producto

1) Disparadores (Trigger) de la tabla Cliente


El código del disparador para insertar un nuevo registro en la tabla Cliente, donde podemos ver su
sintaxis.

Create Trigger Insert_Cliente on [dbo].[Cliente] – Creamos el trigger y lo


guardamos en la tabla cliente
FOR insert – indicamos la instrucción en este caso de inserción
AS --
BEGIN – abrimos un bloque de instrucción
Print 'Se ha insertado un nuevo cliente ' – cada vez que se inserte un registro
se enviara un mensaje
end – cerramos el bloque de instrucción

Mostramos el resultado de la ejecución de nuestro disparador

Disparador para Eliminar a un registro de la tabla Cliente

---Trigger para eliminar un registro de la tabla cliente


CREATE TRIGGER Delete_Cliente ON [dbo].[Cliente] -- Creamos el disparador
FOR delete -- indicamos la instruccion en este caso eliminar
AS
BEGIN -- abrimos
delete from Cliente --indicamos que va a eliminar de la tabla cliente
From Cliente , deleted
where
Cliente.Id_Cliente = deleted.Id_Cliente -- indicamos que registro se eliminara
por medio de su Id_Cliente
Print 'Se ha eliminado un datos de un cliente' -- se envia un msj de que se ha
eliminado el registro
end
Disparador (Trigger) para modificar el registro de un cliente.

Create Trigger Modificar_Cliente --Creamos el disparador


On [dbo].[Cliente]-- Indicamos la tabla en donde se guardara el procedimiento
For Update -- Indicamos el evento que sera insertar
As
Update Cliente -- actualizamos la tabla cliente
set
Id_Cliente = inserted.Id_Cliente -- asignamos a que Id sera qel que se modifique
from Snombre_Cte,Papellido_cte,Sapellido_cte, Cedula,Fecha_Nac,Genero,Celular,
Lugar, Direccion,Estado --- los atributos que podemos modificar de esa tabla
where
Cliente.Id_cliente = inserted.Id_Cliente
Print 'Se ha modificado un valor' --- Imprimimos un msj

Mostramos donde se han guardado nuestros tres trigger en la tabla cliente


2) Disparadores (Trigger) para la tabla Producto
Disparador para insertar un registro de la tabla producto
-- Trigger para insertar registro en la tabla Producto
Create Trigger Insert_Producto on [dbo].[Producto] --- creamos el trigger e
indicamos la tabla en que se guardara
FOR insert -- indicamos la accion que realizara
AS
BEGIN -- abrimos
Print'Se ha insertado un nuevo Producto' --- enviamo un msj
end -- cerramos la instruccion

---------------------------------------------------------------------------------
-------------------------------------------------------------------------------

Disparador para eliminar un registro de la tabla Productos


---Trigger para eliminar un registro de la tabla Producto
CREATE TRIGGER Delete_Producto ON [dbo].[Producto] --DATABASE
FOR delete -- Indicamos la accion a realizar
AS
BEGIN
delete from Producto
From Producto , deleted
where
Producto.Id_Producto = deleted.Id_Producto --indicamos que numero de registro se
eliminara
Print 'Se ha eliminado un registro de un Producto' -- se envia un msj de que se
ha eliminado el registro
end

---------------------------------------------------------------------------------
-------------------------------------------------------------------------------

Disparador para Modificar un producto

Create Trigger Modificar_Producto


On [dbo].[Producto]-- Indicamos la tabla en donde se guardara el procedimiento
For Update -- Indicamos el evento que sera insertar
As
Update Producto-- actualizamos la tabla Producto
set
Id_Producto = inserted.Id_Producto -- asignamos a que Id sera qel que se
modifique
from Id_Categoria, Nombre_Producto,Descripcion, PrecioUnit_Dolar,Existencias,
Total_Productos --- los atributos que podemos modificar de esa tabla
where
Producto.Id_Prodcto = inserted.Id_Producto
Print 'Se ha modificado un valor' --- Imprimimos un msj

Mostramos donde están almacenados nuestros tres trigger en la tabla Producto


3) Disparadores (Trigger) para la tabla Actividad
Disparador para ingresar un nuevo registro dentro de la tabla Actividad

-- Trigger para insertar registro en la tabla Actividad


Create Trigger Insert_Actividad on [dbo].[Actividad]
FOR insert
AS
BEGIN
Print'Se ha insertado un nuevo Actividad'
end

Disparador para eliminar un registro de la tabla Actividad

---Trigger para eliminar un registro de la tabla Actividad


CREATE TRIGGER Delete_Actividad ON [dbo].[Actividad] --DATABASE
FOR delete -- Indicamos la accion a realizar
AS
BEGIN
delete from Actividad
From Actividad , deleted
where
Actividad.Id_Actividad = deleted.Id_Actividad --indicamos que numero de registro
se eliminara
Print 'Se ha eliminado el registro de un Actividad' -- se envia un msj de que se
ha eliminado el registro
END
---------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Disparador para modificar un registro de la tabla Actividad

----Trigger para modificar registro de la tabla Actividad


Create Trigger Modificar_Actividad
On [dbo].[Actividad]-- Indicamos la tabla en donde se guardara el procedimiento
For Update -- Indicamos el evento que sera insertar
As
Update Actividad-- actualizamos la tabla Actividad
set
Id_Actividad = inserted.Id_Actividad -- asignamos a que Id sera qel que se
modifique
from Nombre_Actividad, Total_Cupos,Cupos_Restantes,Estado--- los atributos que
podemos modificar de esa tabla
where
Actividad.Id_Actividad = inserted.Id_Actividad
Print 'Se ha modificado un registro de actividad' --- Imprimimos un msj

Demostracion donde se han guardado los tres trigger en la tabla Actividad

4) Disparadores (Trigger) para la tabla Instructor


Creación de un trigger para insertar un nuevo registro dentro de la tabla Instructor

-- Trigger para insertar registro en la tablaInstructor


Create Trigger Insert_Instructor on [dbo].[Instructor]
FOR insert
AS
BEGIN
Print'Se ha insertado un nuevo Instructor'
end

---------------------------------------------------------------------------------
-------------------------------------------------------------------------------

Creación de un trigger para eliminar un registro de la tabla Instructor

CREATE TRIGGER Delete_Instructor ON [dbo].[Instructor] --DATABASE


FOR delete -- Indicamos la accion a realizar
AS
BEGIN
delete from Instructor
From Instructor , deleted
where
Instructor.Id_Instructor = deleted.Id_Instructor--indicamos que numero de
registro se eliminara

Print 'Se ha eliminado un registro de un Instructor' -- se envia un msj de que


se ha eliminado el registro
END

---------------------------------------------------------------------------------
-------------------------------------------------------------------------------

Creación de un trigger para modificar la tabla Instructor

Create Trigger Modificar_Instructor


On [dbo].[Instructor]-- Indicamos la tabla en donde se guardara el procedimiento
For Update -- Indicamos el evento que sera insertar
As
Update Instructor -- actualizamos la tabla Actividad
set
Id_Instructor = inserted.Id_Instructor -- asignamos a que Id sera qel que se
modifique
from Primer_Nombre,Segundo_Nombre,Primer_Apellido,Segundo_Apellido,
Cedula,Fecha_Nacimiento ,Genero,Telefono,Direccion,Lugar,Email,Cargo,Estado---
los atributos que podemos modificar de esa tabla
where
Instructor.Id_Instructor = inserted.Id_Instructor
Print 'Se ha modificado un registro de Instructor' --- Imprimimos un msj

5) Disparadores (Trigger) para la tabla Categoría

Creación de un trigger para insertar un registro de la tabla Categoría

-- Trigger para insertar registro en la tabla Categoria


Create Trigger Insert_Categoria on [dbo].[Categoria]
FOR insert
AS
BEGIN
Print'Se ha insertado una nueva Categoria'
end

---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Creación de un trigger para eliminar un registro de la tabla Categoría
---Trigger para eliminar un registro de la tabla Categoria
CREATE TRIGGER Delete_Categoria ON [dbo].[Categoria] --DATABASE
FOR delete -- Indicamos la accion a realizar
AS
BEGIN
delete from Categoria
From Categoria , deleted
where
Categoria.Id_Categoria = deleted.Id_Categoria--indicamos que numero de registro
se eliminara

Print 'Se ha eliminado un registro de una Categoria' -- se envia un msj de que


se ha eliminado el registro
END

---------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Creación de un trigger para modificar un registro de la tabla Categoría
----Trigger para modificar registro de la tabla Categoria
Create Trigger Modificar_Categoria
On [dbo].[Categoria]-- Indicamos la tabla en donde se guardara el procedimiento
For Update -- Indicamos el evento que sera insertar
As
Update Categoria -- actualizamos la tabla Categoria
set
Id_Categoria = inserted.Id_Categoria -- asignamos a que Id sera qel que se
modifique
from Nombre_Categoria,DescripcionCategoria--- los atributos que podemos modificar
de esa tabla
where
Categoria.Id_Categoria = inserted.Id_Categoria
Print 'Se ha modificado un registro de una Categoria' --- Imprimimos un msj

Creación de Vistas
VISTA Nº1
Procedemos a listar la tabla Cliente para luego mostrar en la vista Vw_listar _clientes solo el primer
nombre y primer apellido

Ejecutamos la vista Vw_listar_clientes y el resultado nos genera el primer nombre y el primer apellido
de la tabla cliente
VISTA Nº 2
Crearemos una vista para el cliente la cual nos mostrar los clientes Inactivos
VISTA Nº 3
En esta vista listaremos los clientes cuyo género es Masculino

VISTA Nº 4
En esta vista listaremos los clientes cuyo género es Femenino
VISTA Nº 5
En esta vista del cliente encriptamos al cliente ya que las vistas son un como un método de seguridad y
restricciones ejecutamos el comando encrytion para que las personas que vean nuestra vista no logren
ver como esta estructurada

Dado el comando sp_helptext Vw_Mostrar_Horario_Actividad /****** dado a este procedimiento


Almacenado y por lo que tenemos encriptado no se mostrara la estructura de la vista

VISTA Nº 6
En esta vista procedemos a realizar un listado de las actividades, Día y hora de Inicio de la tabla Horario
la cual nuevamente fue encriptada como método de seguridad dado que fue alterada esta vista por ello
esta antecedida de la palabra ALTER
VISTA Nº 7
En esta vista mostraremos la cantidad de instructores y la lista por nombre y apellido
VISTA Nº 8

En esta vista listaremos las actividades que comiencen con la letra Z


VISTA Nº 9
En esta vista validaremos y mostraremos aquellos productos que sean mayores al precio unitario de
200.00
VISTA Nº 10
Creado Cursores
1- CurEdad Este cursor lo empleamos para calcular la edad de los clientes de acuerdo a su fecha de
nacimiento y la fecha actual , lo primero que hacemos declaramos nuestras variables locales ,
seleccionamos los atributos de nuestra tabla cliente los cuales utilizaremos para calcular y asignar el
resultado, actualizamos nuestra tabla cliente y luego con set= Edad asignamos al atributo edad el
resultado de nuestra operación , en la cual compara y resta la fecha de nacimiento con la fecha actual
(en la cual utilizamos el comando GETDATE() el cual nos da la fecha actual) a como vemos a
continuación e la imagen.

Ahora veremos el registro clientes antes de ejecutar nuestro cursor lo cual muestra en la columna Edad
valores NULL

Una vez ejecutado nuestro cursor podemos observar que nos muestra calcula y muestra la edad de los
clientes.
2- Cursor CurCod_Cliente con este cursor creamos un código para cada cliente utilizamos el comando
lower y anteponemos tres ceros“000” luego concatenamos con + con el Id_Cliente que es un entero
en el cual también se utilizó el comando identity para que el Id_Cliente aumente de 1 en 1 (Id_Cliente
int identity(1,1)) concatenamos y luego sustraemos la primera letra de cada del primer nombre,
segundo nombre, primer apellido y segundo apellido esto con el comando substring
(@Pnombre_cte,1,1) a como observamos acontinuacion

Observemos que antes de ejecutar nuestro cursor el valor del atributo es nulo
Una vez ejecutado nuestro cursor obtenemos el siguiente resultado

3) Cursor CurEdadInstructor: Con este cursor lo que hacemos es calcular la edad de nuestra tabla
Instructor
Declare @Id_Instructor int
Declare @Fecha_Nacimiento date
Declare CurEdadInstructor Cursor for
select Id_Instructor, Fecha_Nacimiento from Instructor --Seleccionamos tanto
la tabla como los atributos a utilizar
Open CurEdadInstructor --Abrimos nuestro cursor
Fetch next from CurEdadInstructor into @Id_Instructor, @Fecha_Nacimiento --
Ubicarnos en el Primer Registro
while @@FETCH_STATUS = 0 -- Si FETCH STATUS retorna 0 significa que el
cursor con -- y que es un cursor valido
Begin
update Instructor --Actualizamos la tabla
set Edad = datediff(year, (@Fecha_Nacimiento), GETDATE()) --con set le asignamos
el resultado de la operacion para calcular la edad
where Id_Instructor = @Id_Instructor
Fetch next from CurEdadInstructor into @Id_Instructor , @Fecha_Nacimiento
end
close CurEdadInstructor --cerramos nuestro cursor
Deallocate CurEdadInstructor
Mostramos los resultados obtenidos en nuestra tala instructor

4) Cursor CurPrecioUnit: Con este cursor lo que hacemos es que pasamos los precios reales de los
productos de nuestra tabla Producto a la tabla detalle producto.
Antes de ejecutar el cursor , nuestra tabla Detalle_Factura se mostraba sin precio en los productos.

Una vez que ejecutamos nuestro cursor obtenemos el siguiente resultado.


6) Cursor CurCalcularSubtotal: con este cursor lo que hacemos es calcular el subtotal de
Detalle_Factura aplicando una operación aritmética , es decir multiplicamos la cantidad del
producto por su precio y le aplicamos el descuento si es que tiene esto por medio de la instrucción

set Subtotal=( @Precio_Unit-@Descuento/100)*Cantidad

Así se mostraba nuestra tabla Detalle_Factura antes de ejecutar nuestro cursor.

Una vez que ejecutamos nuestro cursor podemos obtener el resultado del subtotal en pantalla, el
recuadro en azul nos muestra la aplicación de la operación completa junto con el descuento.
7) Cursor CurCalcula: con este cursor calculamos el costo de la mensualidad en córdobas, osea
dado que el costo de la mensualidad en el gimnasio se cobra en dólares pero en muchas ocasiones
las personas paga su equivalente en córdobas entonces tenemos que convertir el precio de dólares a
córdobas.

Ahora observemos el resultado de la ejecución de nuestro cursor.

Anda mungkin juga menyukai