PRACTICA
Dada la siguiente base de datos:
CREATE DATABASE PRACTICA1SQLavanzado
GO
USE PRACTICA1SQLavanzado
GO
CREATE TABLE CARGO(
CODC VARCHAR(3) NOT NULL,
NOMCARGO VARCHAR(15),
SUELDO INT
PRIMARY KEY(CODC)
)
CREATE TABLE EMPLEADO(
CODE VARCHAR(3) NOT NULL,
NOMEMP VARCHAR(15),
APEEMP VARCHAR(15)
PRIMARY KEY (CODE)
)
CREATE TABLE ASIGNACION(
CODE VARCHAR(3) NOT NULL,
CODC VARCHAR(3) NOT NULL,
FECHAA DATE
FOREIGN KEY(CODE) REFERENCES EMPLEADO(CODE),
FOREIGN KEY(CODC) REFERENCES CARGO(CODC)
)
USE PRACTICA1SQLavanzado
GO
INSERT INTO CARGO VALUES('C1','SECRETARIA',5000)
INSERT INTO CARGO VALUES('C2','TECNICO I',2000)
INSERT INTO CARGO VALUES('C3','TECNICO II',2500)
INSERT INTO EMPLEADO VALUES('E1','JUANA','PARISACA')
INSERT INTO EMPLEADO VALUES('E2','RAMON','MENDEZ')
INSERT INTO EMPLEADO VALUES('E3','MARIA','GOMEZ')
INSERT INTO EMPLEADO VALUES('E4','ALVARO','MARTINEZ')
INSERT INTO EMPLEADO VALUES('E5','ELOY','SANTOS')
INSERT INTO ASIGNACION VALUES('E1','C1','01-02-2012')
INSERT INTO ASIGNACION VALUES('E2','C2','10-03-2012')
INSERT INTO ASIGNACION VALUES('E3','C3','01-22-2013')
INSERT INTO ASIGNACION VALUES('E4','C3','06-30-2015')
INSERT INTO ASIGNACION VALUES('E5','C2','04-15-2015')
select * from cargo
select * from empleado
select * from asignacion
[Link] una función que devuelva el monto que se paga a un
determinado cargo.
create function dbo.ejer1(@codc varchar(3)) returns decimal
as
begin
declare @monto decimal
select @monto=SUELDO
from CARGO
return @monto
end
go
print 'El sueldo ' +str(dbo.ejer1('c1'))
[Link] una función que devuelva un nuevo código de un empleado
formado por las dos primeras letras de su nombre más la cantidad de
caracteres de su nombre más las dos primeras letras de su apellido y la
cantidad de caracteres de su apellido.
CREATE FUNCTION DBO.codigo2(@id varchar(3))
RETURNS varchar(200)
AS
BEGIN
declare @codem varchar(200)
SELECT @codem = SUBSTRING(NOMEMP, 1, 2) + trim(str(len(NOMEMP)))
+SUBSTRING(APEEMP, 1, 2)+trim(str(len(APEEMP)))
from EMPLEADO
where CODE = @id
RETURN @codem
END
print DBO.codigo2 ('E1')
print 'el codigo es: '+ dbo.codigo2('E1')
[Link] una función que devuelva una tabla con el nombre de los cargos y la cantidad
de empleados en cada cargo
Create function dbo.E3 ()
returns table
as
return (select NOMCARGO, count (CODE) as 'cantidad' from CARGO c inner join
ASIGNACION a on [Link]=[Link]
group by NOMCARGO
)
go
select * from dbo.E3()
5.
alter procedure backcuppractica
as
begin
drop table copia_cargo
select * into copia_cargo from CARGO
drop table copia_empleado
select * into copia_empleado from EMPLEADO
drop table copia_asignacion
select * into copia_asignacion from ASIGNACION
end
go
exec backcuppractica