0% encontró este documento útil (0 votos)
51 vistas36 páginas

Parte de SQL Lab#03

Este documento resume las consultas realizadas a varias tablas de una base de datos llamada "BD_SystemControlGym". Incluye 10 consultas a la tabla Cliente que muestran información como nombres, edades y estados de clientes. También incluye consultas a las tablas Actividad, Factura, Producto, Membresia e Instructor.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
51 vistas36 páginas

Parte de SQL Lab#03

Este documento resume las consultas realizadas a varias tablas de una base de datos llamada "BD_SystemControlGym". Incluye 10 consultas a la tabla Cliente que muestran información como nombres, edades y estados de clientes. También incluye consultas a las tablas Actividad, Factura, Producto, Membresia e Instructor.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 36

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.

Base de datos BD_SystemControlGym


Nuestra base de datos cuenta con 18 tablas (Ver anexos Fig. 1) 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.

En el mismo script va detallado el funcionamiento de cada uno de estas tablas.


Consultas
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'
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.
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
a listaremos las actividades que comienza con la letra z de la tabla SALA

También podría gustarte