1. UNIVERSIDAD NACIONAL DE CAJAMARCA
Facultad de Ingeniería
Escuela Académico Profesional de Ing. Sistemas
Curso:
Base de datos II
Tema:
UPDATE, INSERT, DELETE
Docente:
Aparicio Arteaga, Carlos Enrique
Alumnos:
Celis Perez, Carlos Alberto
Grupo:
B1
Ciclo:
2020 I
"Año del Bicentenario del Perú: 200 años de Independencia"
Cajamarca, abril 2021
2. Ejercicios de UPDATE, INSERT, DELETE:
1. Actualizar el precio delos productosaplicando un descuento del20% a todos
los productos que tengan un stock superior a 30 unidades.
UPDATE Products
set UnitPrice = UnitPrice*0.8
where UnitsInStock > 30
2. Todos los productos que están en la condición de DESCONTINUADOS
pasarlos a la condición de VIGENTES.
UPDATE Products
set Discontinued = 0
Where Discontinued = 1
3. Mover todos los productos pertenecientes a la categoría con código 1, a la
categoría 5. Luego eliminar la categoría 1 de la tabla Categorías.
UPDATE Products
set CategoryID = 5
Where CategoryID = 1
4. Se desea actualizar los productos con stock igual a 0 a un stock de 100
unidades, debido a que llego un embarque con productos.
UPDATE Products
set UnitsInStock = 100
Where UnitsInStock = 0
5. Actualizar el campo UnitPrice” de la tabla “Products”porel valoralmacenado
en el campo UnitPrice de la Tabla “Order Details”
UPDATE P
SET P.UnitPrice = D.UnitPrice
FROM PRODUCTS AS P
INNER JOIN [ORDER DETAILS] AS D
ON P.ProductId = D.ProductId
6. Cambiar el valor del campo COUNTRY a “Perú” y el campo CITY “Cajamarca”
de la Tabla “Suppliers”, a todos los proveedores del país de USA.
UPDATE Suppliers
Set Country='Perú', City='Cajamarca'
Where Country Like'USA'
7. Colocar la fecha de hoy día a todas las órdenes realizadas en el año 1998.
(Revisar la función GetDate())
UPDATE Orders
set OrderDate = getdate ()
Where year (OrderDate) = 1998
8. Insertar un nuevo cliente (customers). Conteste las siguientes preguntas
Select *
From Customers
insert into Customers (CustomerID, CompanyName, ContactName,
Address,
3. city, Country, contactTitle, PostalCode, Phone)
values ('CACP','ConsorcioX', 'Jose', 'Nv.Cajamarca', 'Cajamarca',
'Perú', 'Celis', '143B', 95202592)
a. Elimine el cliente ingresado por su código (CustomerId). ¿Se pudo
eliminar? ¿Por qué?
DELETE
From Customers
Where CustomerID= 'CACP'
Si se pudo eliminar porque era un elemento recién insertado y no
tenía relación con ninguna tabla.
b. Elimine el cliente con código (CustomerId) igual a “ALFKI”. ¿Se pudo
eliminar? ¿Por qué?
DELETE
From Customers
Where CustomerID= 'ALFKI'
No se pudo eliminar puesto que era un elemento ya almacenado en
una tabla.
Ejercicios Stored Procedure
9. Crear un SP que muestre las ordenes realizadas por un empleado, ingresar
como parámetro el código del empleado y el año.
Create proc order_Empleado
@codigo int
as
begin
Select e.EmployeeID, LastName, FirstName, OrderDate
From Orders as o
inner Join Employees as e
on o.EmployeeID = e.EmployeeID
where e.EmployeeID = @codigo
end
exec order_Empleado 5
10. Crear un SP que nos permita ACTUALIZAR EN CASCADA el código de un
Cliente (Customers). Se debe actualizar el nuevo código en las Tablas
Customers y Orders.
UPDATE Customers
Set CustomerID='CACP'
Where CustomerID='ANTON'
Select *
From Orders
Where CustomerID='CACP'
11. Crear un SP que nos permita eliminar los detalles de pedidos (Order Details),
ingresando como parámetro el código de producto (ProductId)
Create proc Eliminar_pedidos
@ID int
As
4. Delete
From [Order Details]
Where ProductID=@ID
12. Crear un SP que permita ingresar un nuevo registro a la tabla “Alumnos1”
Tabla: Alumnos1
CodAlum ---> PK, INT Ident.
NomAlum ---> VARCHAR(30)
ApeAlum ---> VARCHAR(40)
FecNacAlum ---> DATETIME
SexAlum ---> CHAR(1)
create Procedure Alumno1
(@CodAlum int,
@NomAlumn varchar(30),
@ApeAlum varchar(40),
@FecNacAlum datetime,
@SexAlum char(1))
As
insert into Alumno1(@CodAlum,@NomAlumn,@ApeAlum,@FecNacAlum,@SexAlum)
/*ENTERO NO IDENTITY*/
Create proc Alumno1
(@CodAlum int,
@NomAlumn varchar(30),
@ApeAlum varchar(40),
@FecNacAlum datetime,
@SexAlum char(1))
As
insert into Alumno1 values(@CodAlum,@NomAlumn,@ApeAlum,@FecNacAlum,@SexAlum)
/*ENTERO IDENTITY*/
Create proc Alumno1
(@CodAlum int,
@NomAlumn varchar(30),
@ApeAlum varchar(40),
@FecNacAlum datetime,
@SexAlum char(1))
As
insert into Alumno1(NomAlumn,ApeAlum,FecNacAlum,SexAlum)
values(@NomAlumn,@ApeAlum,@FecNacAlum,@SexAlum)
13. Crear la Tabla “Alumnos2”.
Tabla: Alumnos2
CodAlum ---> PK, CHAR(5)
NomAlum ---> VARCHAR(30)
ApeAlum ---> VARCHAR(40)
FecNacAlum ---> DATETIME
SexAlum ---> CHAR(1)
Crear un SP que nos permita insertar un registro. El código de alumno se debe
generar de la siguiente manera: Primer carácter del nombre + Primer carácter del
5. apellido + número correlativo en función del número total de registros empezando
de 001.
create proc SP_Alumno2
(@N varchar(30),
@A varchar(40),
@F datetime,
@S char(1))
As
Declare @C char(5)
Declare @NR int
Select @NR =COUNT(*)
From Alumno2
If(@NR<9)
Set @C= LEFT(@N,1)+LEFT(@A,1)+'00'+LTRIM(Str(@NR+1))
Else if(@NR<99)
Set @C= LEFT(@N,1)+LEFT(@A,1)+'0'+LTRIM(Str(@NR+1))
Else
Set @C= LEFT(@N,1)+LEFT(@A,1)+'0'+LTRIM(Str(@NR+1))
Insert into Alumno2
Values (@C,@N, @A,@f,@S)
Select *
From Alumno2
SP_Alumno2 'Carlos','Celis','06/09/2021','M'
14. Crear la Tabla “Alumnos3”.
Tabla: Alumnos3
CodAlum ---> PK, CHAR(7)
NomAlum ---> VARCHAR(30)
ApeAlum ---> VARCHAR(40)
FecNacAlum ---> DATETIME
SexAlum ---> CHAR(1)
Crear un SP que nos permita insertar un registro. El código de alumno se debe
generar de la siguiente manera: El año de nacimiento + número correlativo en
función del número total de registros empezando en 001.
Create Table Alumno3
(CodAlum CHAR(7) PRIMARY KEY,
NomAlum varchar(30),
ApeAlum varchar(40),
FecNacAlum Datetime,
SexAlum Char(1))
Go
create proc Sp_Insertar
@NomAlum varchar(30),
@ApeAlum varchar(40),
@FecNacAlum datetime,
@SexAlum Char(1)
As
Begin
Declare @Codigo char(7)
Declare @NR int
Select @NR =COUNT(*)
From Alumno3
if(@NR<9)
Set @Codigo= LTRIM(Year(@FecNacAlum))+'00'+LTRIM(@NR+1)
Else if(@NR<99)
Set @Codigo= LTRIM(Year(@FecNacAlum))+'0'+LTRIM(@NR+1)
else
Set @Codigo= LTRIM(Year(@FecNacAlum))+LTRIM(@NR+1)
6. END
Select*
From Alumno3
go
Exec Sp_Insertar 'Pedro','Castel','1999/08/01','M'
15. Crear la Tabla “Alumnos4”.
Tabla: Alumnos4
CodAlum ---> PK, CHAR(8)
NomAlum ---> VARCHAR(30)
ApeAlum ---> VARCHAR(40)
FecNacAlum ---> DATETIME
SexAlum ---> CHAR(1)
Crear un SP que nos permita insertar un registro. El código de alumno se debe
generar de la siguiente manera: Sexo + El año de nacimiento + número correlativo
en función del número total de registros empezando en 001.
Create table Alumno4
(CodAlum CHAR(8) PRIMARY KEY,
NomAlum varchar(30),
ApeAlum varchar(40),
FecNacAlum Datetime,
SexAlum Char(1))
Go
create proc Sp_Insertar4
@NomAlum varchar(30),
@ApeAlum varchar(40),
@FecNacAlum datetime,
@SexAlum Char(1)
As
Begin
Declare @Codigo char(8)
Declare @NR int
Select @NR =COUNT(*)
From Alumno4
if(@NR<9)
Set @Codigo=@SexAlum+LTRIM(Year(@FecNacAlum))+'00'+LTRIM(@NR+1)
else if(@NR<99)
Set @Codigo=@SexAlum+LTRIM(Year(@FecNacAlum))+'0'+LTRIM(@NR+1)
else
Set @Codigo=@SexAlum+LTRIM(Year(@FecNacAlum))+LTRIM(@NR+1)
insert into Alumno4
Values(@Codigo,@NomAlum,@ApeAlum,@FecNacAlum,@SexAlum)
end
Select *
From Alumno4
go
Exec Sp_Insertar4 'Pedro','Castel','1999/08/01','M'
16. Crear la Tabla “Alumnos5”.
Tabla: Alumnos5
CodAlum ---> PK, CHAR(8)
NomAlum ---> VARCHAR(30)
ApeAlum ---> VARCHAR(40)
7. FecNacAlum ---> DATETIME
SexAlum ---> CHAR(1)
Crear un SP que nos permita insertar un registro. El código de alumno se debe
generar de la siguiente manera: Sexo + El año de nacimiento + número correlativo
en función del número total de registros empezando en 001.
Create table Alumno5
(CodAlum CHAR(8) PRIMARY KEY,
NomAlum varchar(30),
ApeAlum varchar(40),
FecNacAlum Datetime,
SexAlum Char(1))
Alter proc Sp_Insertar5
@NomAlum varchar(30),
@ApeAlum varchar(40),
@FecNacAlum datetime,
@SexAlum Char(1)
As
Begin
Declare @Codigo char(8)
Declare @NR int
Select @NR =ISNULL(Max(Right(CodAlum,3)),0)
From Alumno5
if(@NR<9)
Set @Codigo=@SexAlum+LTRIM(Year(@FecNacAlum))+'00'+LTRIM(@NR+1)
else if(@NR<99)
Set @Codigo=@SexAlum+LTRIM(Year(@FecNacAlum))+'0'+LTRIM(@NR+1)
else
Set @Codigo=@SexAlum+LTRIM(Year(@FecNacAlum))+LTRIM(@NR+1)
insert into Alumno5
Values(@Codigo,@NomAlum,@ApeAlum,@FecNacAlum,@SexAlum)
end
Select *
From Alumno5
go
Exec Sp_Insertar5 'Pedro','Castel','1999/08/01','M'
Considerar la posibilidad que eliminar registros, es por eso que debemos cambiar
el count(*) por Max aplicado a los tres últimos caracteres del código de alumno:
Max(right(CodAlum)) o isnull(MAX(RIGHT(CodAlum,3)),0)
17. Crear un Stored Procedure que nos permita seleccionar y mostrar un
empleado aleatoriamente.
Alter Proc SP_Empledo_Aleatorio
As
Begin
Declare @A int
set @A= RAND(1)*10
Select *
From Employees
Where EmployeeID=@A
END
exec SP_Empledo_Aleatorio
8. 18. Crear un Stored Procedure que nos permita seleccionar “N” Clientes
aleatoriamente.
create proc Sp_MostrarEmpleado
As
Declare @A Integer
Set @A=FLOOR(RAND()*10)
Select top(@A)*
From Customers
Exec Sp_MostrarEmpleado