0% encontró este documento útil (0 votos)
41 vistas16 páginas

Ejercicio 1

Este documento describe un ejercicio de base de datos que involucra la creación de tablas, cursores, vistas y procedimientos almacenados. Se crea una tabla llamada "Productos" y se insertan registros de ejemplo. Luego, se usan cursores para actualizar columnas en función de los grupos. Un procedimiento almacenado lista los productos agrupados por categoría utilizando cursores anidados. Finalmente, una vista devuelve el top 10 de productos ordenados por existencias.
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)
41 vistas16 páginas

Ejercicio 1

Este documento describe un ejercicio de base de datos que involucra la creación de tablas, cursores, vistas y procedimientos almacenados. Se crea una tabla llamada "Productos" y se insertan registros de ejemplo. Luego, se usan cursores para actualizar columnas en función de los grupos. Un procedimiento almacenado lista los productos agrupados por categoría utilizando cursores anidados. Finalmente, una vista devuelve el top 10 de productos ordenados por existencias.
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/ 16

Ejercicio 

#1: (Valor 5 Puntos)


Utilizando Procedimientos Almacenados, Cursores y Vistas, desarrollar cada uno
de los Items que se le plantean:
1) Crear la tabla con los siguientes campos e ingresar los registros de la imagen.
La tabla debe llevar alguno de su nombre ejemplo: ( PRODUCTOS_PEDRO,
PRODUCTOS_MARIA)

CREATE TABLE Productos(


Id_Producto int not null,
Producto_Royer varchar(50) not null,
Grupo varchar(50) not null,
Proveedor varchar(50) not null,
Existencia bit not null,
Observaciones varchar(100) not null,
Id_Proveedor int not null,
Cantidad_Exist int not null
);

INSERT INTO Productos VALUES (112547,'Carpetas','Papeleria','Papelería


Jimenez',0,'Tamaño folio',12,0);
INSERT INTO Productos VALUES (124584,'DVD','Informatica','Cartones Lamar',1,'Caja
de 200',23,10);
INSERT INTO Productos VALUES (345672,'Limpiasuelos','Drogueria','Droguería
Peste',1,'Productos para limpieza',20,10);
INSERT INTO Productos VALUES (365478,'Lápices','Papeleria','Papelería
Jimenez',0,'Sin observaciones',12,0);
INSERT INTO Productos VALUES (435642,'Imanes','Ferreteria','Ferretería
Terracota',0,'Imanes para pizarra',15,0);
INSERT INTO Productos VALUES (435675,'Calculadoras','Electronica','Electrónica
Pepito',1,'Calculadoras solares',35,10);
INSERT INTO Productos VALUES (478561,'Bolígrafos','Papeleria','Papelería
Jimenez',1,'Azules',12,10);
INSERT INTO Productos VALUES (547850,'Bolígrafos logotipo','Papeleria','Imprenta
Alienígena',0,'100 hojas cuadriculadas',13,0);
INSERT INTO Productos VALUES (547853,'Pegatinas logotipo','Serigrafia','Imprenta
Alienígena',0,'paquetes de 100',13,0);
INSERT INTO Productos VALUES (567840,'Cinta adhesiva','Papeleria','Papelería
Jimenez',1,'Transparente',12,10);
INSERT INTO Productos VALUES (647851,'Tripticos publicidad','Papeleria','Imprenta
Alienígena',1,'Sin observaciones',13,10);
INSERT INTO Productos VALUES (854756,'Memorías USB','Informatica','Cartones
Lamar',1,'4 GB',23,10);
INSERT INTO Productos VALUES (909392,'Limpiacristales','Drogueria','Droguería
Peste',1,'Productos de limpieza',20,10);
INSERT INTO Productos VALUES (985683,'Alarmas
vigilancia','Electronica','Electrónica Pepito',1,'Sin observaciones',35,10);
INSERT INTO Productos VALUES (987056,'Ambientador','Drogueria','Droguería
Peste',1,'Ambientador eléctrico',20,10);
INSERT INTO Productos VALUES (987451,'Pegatinas
impresora','Informatica','Cartones Lamar',0,'Blancas',23,0);

select * from Productos


2) Agregue la columna "Cantidad_Exist"
3) Cree un cursor que recorra la columna "Existencias", si el valor es verdadero
actualice la columna Cantidad_Exist con los siguientes montos según el campo
llamado "Grupo" de la siguiente manera:
 ----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
select * from Productos

declare
@existencia bit,
@tipo varchar(50),
@id int

declare CursorExistencias cursor


for select Id_Producto,Existencia,Grupo from Productos

open CursorExistencias
fetch next from CursorExistencias into @id,@existencia,@tipo
while (@@FETCH_STATUS = 0)
begin
if @existencia = 1
begin
if @tipo = 'Papeleria'
begin
update Productos set Cantidad_Exist = 100
where Id_Producto = @id;
end
else if @tipo = 'Electronica'
begin
update Productos set Cantidad_Exist = 250
where Id_Producto = @id;
end
else if @tipo = 'Ferreteria'
begin
update Productos set Cantidad_Exist = 150
where Id_Producto = @id;
end
else if @tipo = 'Informatica'
begin
update Productos set Cantidad_Exist = 210
where Id_Producto = @id;
end
else if @tipo = 'Serigrafia'
begin
update Productos set Cantidad_Exist = 175
where Id_Producto = @id;
end
else if @tipo = 'Drogueria'
begin
update Productos set Cantidad_Exist = 200
where Id_Producto = @id;
end
end
else
begin
if @tipo = 'Papeleria'
begin
update Productos set Cantidad_Exist = 10, Existencia = 1
where Id_Producto = @id;
end
else if @tipo = 'Electronica'
begin
update Productos set Cantidad_Exist = 25, Existencia = 1
where Id_Producto = @id;
end
else if @tipo = 'Ferreteria'
begin
update Productos set Cantidad_Exist = 15, Existencia = 1
where Id_Producto = @id;
end
else if @tipo = 'Informatica'
begin
update Productos set Cantidad_Exist = 20, Existencia = 1
where Id_Producto = @id;
end
else if @tipo = 'Serigrafia'
begin
update Productos set Cantidad_Exist = 15, Existencia = 1
where Id_Producto = @id;
end
else if @tipo = 'Drogueria'
begin
update Productos set Cantidad_Exist = 30, Existencia = 1
where Id_Producto = @id;
end
end

fetch next from CursorExistencias into @id,@existencia,@tipo


end

close CursorExistencias

deallocate CursorExistencias
4) Crear un procedimiento almacenado y dentro de este un Cursor que liste los
datos ordenados por grupos, se debe presentar de la siguiente forma (Titulo del
grupo seguido de cada producto con sus respectivos datos):
select * from Productos

--insico 4 procedimiento almacenado


CREATE PROCEDURE SP_ListarProductos

AS
BEGIN

declare CursorListarProductos cursor


for select distinct Grupo from Productos

open CursorListarProductos
declare
@producto varchar(50),
@tipo varchar(50),
@proveedor varchar(50),
@observaciones varchar(100),
@cantidad int

fetch next from CursorListarProductos into @tipo


while (@@FETCH_STATUS = 0)
begin
print '---------------------------------------------------'
print 'Grupo: ' + @tipo
print '---------------------------------------------------'

declare CursorProductos cursor


for select Producto_Royer,Proveedor,Observaciones,Cantidad_Exist from
Productos
where Grupo = @tipo
open CursorProductos
fetch next from CursorProductos into @producto, @proveedor,
@observaciones, @cantidad
while (@@FETCH_STATUS = 0)
begin
if @tipo = 'Papeleria'
begin
print 'Producto: ' + @producto
print 'Proveedor: ' + @proveedor
print 'Observaciones: ' + @observaciones
print 'Existencias: ' + CONVERT(varchar(5),@cantidad)
end
else if @tipo = 'Electronica'
begin
print 'Producto: ' + @producto
print 'Proveedor: ' + @proveedor
print 'Observaciones: ' + @observaciones
print 'Existencias: ' + CONVERT(varchar(5),@cantidad)
end
else if @tipo = 'Ferreteria'
begin
print 'Producto: ' + @producto
print 'Proveedor: ' + @proveedor
print 'Observaciones: ' + @observaciones
print 'Existencias: ' + CONVERT(varchar(5),@cantidad)
end
else if @tipo = 'Informatica'
begin
print 'Producto: ' + @producto
print 'Proveedor: ' + @proveedor
print 'Observaciones: ' + @observaciones
print 'Existencias: ' + CONVERT(varchar(5),@cantidad)
end
else if @tipo = 'Serigrafia'
begin
print 'Producto: ' + @producto
print 'Proveedor: ' + @proveedor
print 'Observaciones: ' + @observaciones
print 'Existencias: ' + CONVERT(varchar(5),@cantidad)
end
else if @tipo = 'Drogueria'
begin
print 'Producto: ' + @producto
print 'Proveedor: ' + @proveedor
print 'Observaciones: ' + @observaciones
print 'Existencias: ' + CONVERT(varchar(5),@cantidad)
end

print ''
fetch next from CursorProductos into @producto, @proveedor,
@observaciones, @cantidad
end
close CursorProductos
deallocate CursorProductos

print '---------------------------------------------------'
print '---------------------------------------------------'
fetch next from CursorListarProductos into @tipo
end

close CursorListarProductos
deallocate CursorListarProductos

END

execute SP_ListarProductos
5) Crear una Vista que retorne como parámetro de salida un top 10 de la tabla
creada ordenado por existencias
Id---Producto – Grupo—Proveedor – existencias
Ordenado de mayor a menor en Existencias

--vista del top 10 de productos con más existencia


create view Top_Productos
as select top 10 Id_Producto,Producto_Royer,Grupo,Proveedor,Cantidad_Exist
from Productos order by Cantidad_Exist desc

select * from Top_Productos


En esta base de datos se pueden observar las tablas, vistas y
procedimientos almacenados creados.
Ejercicio # 2: Seguridad en Base de Datos
Roles de Bases de datos:

Ejercicio 1: Crear un rol de servidor con alguno de sus apellidos (Lopez)


autorizado a bulkadmin
create server role Rosales authorization bulkadmin

Ejercicio 2: Crear un rol de servidor llamado Estudiantes autorizado a


Setupadmin
create server role Estudiantes authorization Setupadmin
Ejercicio 3: Crear un rol de servidor su Primer Nombre autorizado al Rol
Estudiantes Creado anteriormente, el Script debe comprobar que el rol no
existe.

use master
if not exists (select name, type_desc from sys.server_principals where type = 'R'
and name ='Royers')
Begin
Create server role Royers authorization Estudiantes
End
go

Ejercicio 4: Listar los roles de servidor


select name, type_desc from sys.server_principals where type = 'R'

go
Ejercicio 5: Modificar el Rol de Estudiantes y llamarlo ahora “Alumnos”

Ejercicio 6: Eliminar el Rol creado con su Apellido


use Northwind
go
Drop server role Rosales
go
Inicio de Sesión:
Ejercicio 7: Crear Inicio de sesión con sus iniciales (Jose Ramon Lopez -
“JRL” ) y colocar una contraseña a su elección.
CREATE LOGIN RGMR with password = 'royer1', DEFAULT_DATABASE = Northwind

Ejercicio 8: Hacer miembro de Sysadmin al inicio de sesión de las iniciales


use master
Alter server role sysadmin add member RGMR
go

Podemos comprobar usando el siguiente código.

use master
go
sp_helpsrvrolemember sysadmin
go
Ejercicio 9: Crear un Inicio de Sesión con el semestre que cursa actualmente y
comprobar si existe y hacerlo miembro del rol de servidor Estudiantes
CREATE LOGIN [noveno semestre] with password = 'umg123'

use master
Alter server role Estudiantes add member [noveno semestre]
go

Rol de Base de Datos:


Ejercicio 10: Crear un Rol de Base de Datos llamado “Auditoria”
create server role Auditoria
Ejercicio 11: Hacer miembro el Rol Auditoria de db_securityadmin
 
create server role Auditoria

use master
Alter server role securityadmin add member Auditoria
go

sp_helpsrvrolemember securityadmin

go

Usuarios de Base de Datos:


Ejercicio 12: Crear un usuario para Northwind llamado Developer en base al
login de sus inciales.  Asignar permisos de Lectura, Inserción y Actualización
en toda la BD

CREATE LOGIN Developer with password = 'umg1'

USE Northwind

CREATE USER Developer FOR LOGIN Developer

ALTER ROLE db_datareader ADD member Developer


ALTER ROLE db_datawriter ADD member Developer

ALTER ROLE db_securityadmin ADD member Developer


Ejercicio 13: Usando la BD de Northwind denegar los permisos en la tabla
Categories de listado, inserción, modificación y eliminación.
use master
go
Create login Developer with password = 'umg1'
go
use Northwind
create user Developer from login Developer
go
Deny Select, insert, Update, Delete to Categorias

También podría gustarte