Вы находитесь на странице: 1из 12

EXAMEN

Curso: SQL-Implementacion
Docente: Flores Ventura, Fredy Bernando
Integrantes:
 Carrillo Vilchez, Jose Manuel

2019
Creacion de la base de Datos:
--CREACIÓN DE LA BASE DE DATOS
CREATE DATABASE BDTFINAL_CarrillVilchezJoseManuel

--USE LA BASE DE DATOS


Use BDTFINAL_CarrillVilchezJoseManuel

--SELECT :MOSTRAR,SELECCIONAR,VISUALIZAR,REPOTEAR
--MOSTRAR EL NOMBRE
Select name
--De todas las Bases del Sistema
from sys.databases

Script de tipos de datos a usar:


--CREACIÓN DE LA TABLA AREA
/*
DEPARTAMENTO LABORAL

*/
CREATE TABLE AREA(--INICIO DE LA TABLA
CODAREA int Primary key NOT NULL,--CODIGO AREA
DESCRI VARCHAR(MAX),--DECRIPCION
ESPROD VARCHAR(MAX),--ESTADO PRODUCCION
ESTADO VARCHAR(MAX) check(ESTADO IN('OCUPADO','LIBRE','PEDIENTE'))--ESTADO
)--FIN DE LA TABLA

--MOSTAR LAS TABLAS QUE TIENE EL SISTEMA


Select name
from sys.tables

--MOTRAR LA INSERCION
Select*
from AREA

--INSERCION TODAS LAS COLUMNAS(*)


INSERT AREA VALUES(001,'SE NECESITA EMPLEADO EN EL ALMACEN','AREA DE
ALMACEN','LIBRE')--1
INSERT AREA VALUES(002,'CAMBIO EN PERSONAL DE VENTAS','AREA DE VENTAS','PEDIENTE')--
2
INSERT AREA VALUES(003,'CAMBIO DEL PERSONAL DE INFORMATICA','AREA DE
INFORMATICA','PEDIENTE')--3
INSERT AREA VALUES(004,'SOLO SE NECESITA UN PERSONAL EN EL AREA DE
ADMINISTRACION','AREA DE ADMINISTRACIO','LIBRE')--4
INSERT AREA VALUES(005,'SE NECESITA PERSONAL EN AREA DE LIMPIEZA','AREA DE
LIMPIEZA','PEDIENTE')--5

--ELIMINAR TABLA DE AREA

--DROP TABLE AREA

--AYUDA PARA VER LAS CARACTERISTICAS


SP_HELP AREA
--MOTRAR LA TABLA AREA
Select*
from AREA

---PROCEDIMIENTO ALMACENADOS DE UN TABLA AREA INSERTANDO


CREATE PROC AREAALMACENADO
--PARAMETROS
@CODAREA INT,
@DESCRI VARCHAR(MAX),
@ESPROD VARCHAR(MAX),
@ESTADO VARCHAR(MAX)
AS
BEGIN
--INSERTANDO
INSERT AREA(CODAREA,DESCRI,ESPROD,ESTADO)
VALUES (@CODAREA,@DESCRI,@ESPROD,@ESTADO)--INGRESAR

--ENIVAR MENSAJE

END

--EJECTUAMOS
EXEC AREAALMACENADO 006,'SE NECESITA DOS EMPLEADO EN EL ALMACEN','AREA DE
ALMACEN','OCUPADO'--1
EXEC AREAALMACENADO 008,'CAMBIO EN PERSONAL DE VENTAS','AREA DE VENTAS','OCUPADO'--2
EXEC AREAALMACENADO 009,'CAMBIO DEL PERSONAL DE CONTABILIDAD','AREA DE
CONTABILIDAD','PEDIENTE'--3
EXEC AREAALMACENADO 010,'SOLO SE NECESITA UN PERSONAL EN EL AREA DE
ADMINISTRACION','AREA DE ADMINISTRACIO','LIBRE'--4
EXEC AREAALMACENADO 011,'SE NECESITA PERSONAL EN AREA DE LIMPIEZA','AREA DE
LIMPIEZA','PEDIENTE'--5

--MOSTRAR LA TABLA AREA


SELECT*
FROM AREA

---PROCEDIMIENTO ALMACENADOS DE UN TABLA AREA ACTUALIZANDO


CREATE PROC AREACTUALIZANDO

@CODAREA INT,
@DESCRI VARCHAR(MAX)

AS
BEGIN
--ACTUALIZAR CON PROCEDIMIENTO DE LA TABLA
UPDATE AREA
SET DESCRI=@DESCRI
WHERE CODAREA=@CODAREA
--ENIVAR MENSAJE

END
--EJECUTAMOS EL PROCEDIMIENTO ALMACENADO
EXECUTE AREACTUALIZANDO 06,'VACIO'

--MOSTAR LA TABLA AREA


SELECT *
FROM AREA

--CREACIÓN DE LA TABLA AFP


/*
REGISTRO DE AFP.s

*/

--TIPOS DE DATOS PERSONALIZADOS(ESTANDARES) TABLA AFP


--CREAR UN TIPO DE DATOS PARA EL CODIGO AFP BASADO NUMERO
Create type codafp
from int
--CREAR UN TIPO DE DATOS PARA LA DESCRIPCIÓN DE AFP BASADO A TEXTO DE 50
Create type descripcion
from varchar(50)
--CREAR UN TIPO DE DATOS PARA LA COMISION_FIJA DE AFP BASADO A NUMERO
Create type comisionfija
from int
--CREAR UN TIPO DE DATOS PARA COMISION_VARIABLE DE AFP BASADO A NUMERO
Create type comisionvariable
from int
--CREAR un TIPO DE DATOS PARA AFP BASADO A TEXTO DE 1
Create type estado
from varchar(50)

CREATE TABLE AFP


(--INICIO DE LA TABLA
CODAFP codafp Primary Key NOT NULL,--CODIGO AFP
DESCRI descripcion check(DESCRI
IN('HABITAT','INTEGRA','PRIMA','PROFUTURO','HORIZONTE')),--DESCRIPCION
COMIFIJA comisionfija NOT NULL,--COMISION FIJA
COMIVARI comisionvariable NOT NULL,--COMISION VARIABLE
ESTADO estado check(ESTADO IN('PEDIENTE','VIGENTE','LIBRE'))--ESTADO
)--FIN DE LA TABLA

--MOTRAR LA TABLA AFP


Select*
from AFP

--INSERCION TODAS LAS COLUMNAS(*)


INSERT AFP VALUES(001,'HABITAT',16,17,'VIGENTE')--1
INSERT AFP VALUES(002,'INTEGRA',14,13,'LIBRE')--2
INSERT AFP VALUES(003,'PRIMA',15,11,'PEDIENTE')--3
INSERT AFP VALUES(004,'PROFUTURO',12,19,'VIGENTE')--4
INSERT AFP VALUES(005,'HORIZONTE',14,18,'PEDIENTE')--5

--MOTRAR LA TABLA AFP


Select*
from AFP
--CREACION DE LA TABLA TRABAJADORES
/*
PERSONAL DE LA EMPRESA
*/

--TIPOS DE DATOS PERSONALIZADOS(ESTANDARES) TABLA TRABAJADORES

--CREAR UN TIPO DE DATOS PARA EL CODIGO TRABAJADORES BASADO NUMERO


Create type codtrabajadores
from int
--CREAR UN TIPO DE DATOS PARA EL APELLIDO PATERNO BASADO TEXTO A 50
Create type paterno
from varchar(50)
--CREAR UN TIPO DE DATOS PARA EL APELLIDO MATERNO BASADO TEXTO A 50
Create type materno
from varchar(50)
--CREAR UN TIPO DE DATOS PARA EL NOMBRE BASADO TEXTO A 50
Create type nombre
from varchar(50)
--CREATE UN TIPO DE DATOS PARA EL TIPO BASADO TEXTO A 1
Create type tipo
from varchar(30)
--CREARE UN TIPO DE DATOS PARA CTAS DE LOS BANCOS DE CADA TRABAJADOR BASADO A TEXTO
A 20
create type ctabanco
from varchar(20)
--CREATE UN TIPO DE DATOS PARA EL BASICO BASADO NUMERO
Create type basico
from int

CREATE TABLE TRABAJADORES


(--INICIO DE LA TABLA
CODTRA codtrabajadores Primary Key,--CODIGO TRABAJADORES
CODAFP codafp ,--CODIGO DE LA FAP
PAPTRA paterno NOT NULL unique,--PATERNO
AMATRA materno NOT NULL unique,--MATERNO
NOMTRA nombre NOT NULL unique,--NOMBRE
TIPO tipo CHECK(TIPO IN('PERMANENTE','TEMPORAL')),--TIPO
CTABANCO ctabanco NOT NULL,-- CTAS DE LOS BANCOS DE CADA TRABAJADOR
BASICO basico,--BASICO
ESTADO estado CHECK(ESTADO IN('CONTRATADO','EVENTUAL')) not null--ESTADO
)--FIN DE LA TABLA

--MOTRAR LA TABLA TRABAJADORES


Select*
from TRABAJADORES

--ADICIONAR UNA RELACION


ALTER TABLE TRABAJADORES--QUE OBJETO
ADD FOREIGN KEY (CODAFP) REFERENCES AFP--QUE ACCION

--MOTRAR LA TABLA TRABAJADORES


Select*
from TRABAJADORES

--INSERCION TODAS LAS COLUMNAS(*)


INSERT TRABAJADORES VALUES(001,004,'DE LA CRUZ','SALAZAR','SAM
MARTIN','TEMPORAL','202811-6',500,'EVENTUAL')--1
INSERT TRABAJADORES VALUES(002,005,'VILCHEZ','VILLANUEVA','CARLOS
VICTOR','TEMPORAL','123456-2',1000,'CONTRATADO')--2
INSERT TRABAJADORES VALUES(003,002,'TORRES','HUAMANSISA','RODRIGO
GONZALES','PERMANENTE','987654-0',144,'EVENTUAL')--3
INSERT TRABAJADORES VALUES(004,001,'PACSI','CHUQILLANQUI','ANABEL
SHEYLA','TEMPORAL','125678-6',122,'CONTRATADO')--4
INSERT TRABAJADORES VALUES(005,003,'HUAMAN','CALVES','JOSE
MANUEL','PERMANENTE','654411-9',300,'EVENTUAL')--5

--MOTRAR LA TABLA TRABAJADORES


Select*
from TRABAJADORES

--CREACION DE LA TABLA REG_RES_LABORADAS


/*
REGISTRO DE HORAS LABORADAS

*/
--TIPOS DE DATOS PERSONALIZADOS(ESTANDARES) TABLA TRABAJADORES

--CREAR UN TIPO DE DATOS PARA REG_RES_LABORADAS BASADO A NUMERO


Create type reglaboradas
from int

--CREAR UN TIPO DE DATOS PARA NMES BASADO A TEXTO A 30


Create type nmes
from varchar(30)

--CREAR UN TIPO DE DATOS PARA HRS_LABORADAS BASADO A HORA


Create type hrslaboradas
from time

--CREAR UN TIPO DE DATOS PARA HRS_EXTRAS BASADO A HORA


Create type hrsextras
from time

CREATE TABLE REG_RES_LABORADAS


(--INICIO DE LA TABLA
REGLAB reglaboradas Primary Key,--REG_RES_LABORADAS
AÑO date CHECK(AÑO <=getdate()),--AÑO
NMES nmes, --NMES
HRSLAB hrslaboradas CHECK(HRSLAB>='01:00:00' AND HRSLAB<='18:00:00'),--HRS_LABORADAS
HRSEXT hrsextras CHECK(HRSEXT>='01:00:00' AND HRSEXT<='18:00:00'),--HRS_EXTRAS
ESTADO estado check(ESTADO IN('FALTO','LLEGO TARDE','SUSPENDIDO','DESPEDIDO','LLEGO
TEMPRANO'))-- ESTADO
)--FIN DE LA TABLA
--MOTRAR LA TABLA REG_RES_LABORADAS
Select*
from REG_RES_LABORADAS

--INSERCION TODAS LAS COLUMNAS(*)


INSERT REG_RES_LABORADAS VALUES(001,'06-12-
2011','ENERO','01:23:44','01:55:55','LLEGO TARDE')--1
INSERT REG_RES_LABORADAS VALUES(002,'03-15-
2012','MARZO','06:30:55','02:55:55','LLEGO TEMPRANO')--2
INSERT REG_RES_LABORADAS VALUES(003,'04-16-
2019','DICIEMBRE','04:13:24','03:04:11','FALTO')--3
INSERT REG_RES_LABORADAS VALUES(004,'03-12-
2014','ABRIL','02:23:44','01:03:20','FALTO')--4
INSERT REG_RES_LABORADAS VALUES(005,'01-11-
2013','FEBRERO','03:11:03','01:55:30','DESPEDIDO')--5

--MOTRAR LA TABLA REG_RES_LABORADAS


Select*
from REG_RES_LABORADAS

--CREACION DE LA TABLA PRESTAMOS


/*
REGISTRO DE PRESTAMOS A PERSONA

*/

--TIPOS DE DATOS PERSONALIZADOS(ESTANDARES) TABLA PRESTAMOS

--CREAR UN TIPO DE DATOS PARA CODPRESTAMOS BASADO A NUMERO


Create type codprestamos
from int
--CREAR UN TIPO DE DATOS PARA CODTRABAJADOR BASADO A NUMERO
Create type codtrabajador
from int

--CREAR UN TIPO DE DATOS PARA FECHA BASADO A FECHA


Create type fecha
from DATE
--CREAR UN TIPO DE DATOS PARA Monto BASADO A MONEDA
Create type monto
from int

CREATE TABLE PRESTAMOS


(--INICIO DE LA TABLA
CODPRE codprestamos Primary key ,
CODTRA codtrabajadores,
AÑO date CHECK(AÑO <=getdate()),--AÑO
MES nmes ,--MES
FECHA fecha,--FECHA
MONTO monto,--MONTO
ESTADO estado-- ESTADO
)--FIN DE LA TABLA
--MOTRAR LA TABLA
Select*
from PRESTAMOS

--ADICIONAR UNA RELACION


ALTER TABLE PRESTAMOS --QUE OBJETO
ADD FOREIGN KEY (CODTRA)references TRABAJADORES--QUE ACCION

--CON RESTRINCIONES
--ADICIONAR UN CHECK
ALTER TABLE PRESTAMOS--QUE OBJETO
ADD CONSTRAINT ESTADO CHECK(ESTADO
IN('DEUDA','DEUDOR','AMORTIZACION','HABILITADO'))-- ESTADO

--MOTRAR LA TABLA
Select*
from PRESTAMOS

--INSERCION TODAS LAS COLUMNAS(*)


INSERT PRESTAMOS VALUES(006,003,'12-01-12','JUNIO','04-11-2016',1000,'DEUDOR')--1
INSERT PRESTAMOS VALUES(007,004,'11-15-16','ABRIL','09-01-2012',123,'DEUDA')--2
INSERT PRESTAMOS VALUES(008,005,'01-11-11','MARZO','03-01-2013',125,'HABILITADO')--3
INSERT PRESTAMOS VALUES(009,002,'11-13-14','FEBRERO','04-11-
2012',400,'AMORTIZACION')--4
INSERT PRESTAMOS VALUES(010,001,'01-12-12','ENERO','03-03-2013',5300,'DEUDA')--5

--MOTRAR LA TABLA
Select*
from PRESTAMOS

--CREACION DE LA TABLA PLANILLA


/*

*/

--TIPOS DE DATOS PERSONALIZADOS(ESTANDARES) TABLA PLANILLA


--CREAR UN TIPO DE DATOS PARA CODIGO PLANILLA BASADO EN CODIGO
Create type planilla
from int

--CREAR UN TIPO DE DATOS PARA BASICO_CALCULADO BASADO A NUMERO


Create type basicocalculado
from INT

--CREAR UN TIPO DE DATOS HRS_LAB BASADO A NUMERO


Create type hrslabasado
from int

--CREAR UN TIPO DE DATOS PAGO_HRS_EXTRAS BASADO A NUMERO


Create type pagoextras
from int
--CREAR UN TIPO DE DATOS PARA HRS_EXT BASADO A NUMERO
Create type hrsext
from int

--CREAR UN TIPO DE DATOS PARA BONIFICACION BASADO A NUMERO


Create type bonificacion
from int

--CREAR UN TIPO DE DATOS PARA TOTAL_INGRESO BASADO A NUMERO


Create type totalingreso
from int

--CREAR UN TIPO DE DATOS PARA PRESTAMO BASADO A NUMERO


Create type prestamo
from int
--CREAR UN TIPO DE DATOS PARA AFP_COMFIJA BASADO A NUMERO
Create type afpcomfija
from int
--CREAR UN TIPO DE DATOS PARA AFP_COMVAR BASADO A NUMERO
Create type afpcomvar
from int
--CREAR UN TIPO DE DATOS PARA FONDO BASADO A NUMERO
Create type fondo
from int
--CREAR UN TIPO DE DATOS PARA TOTAL DESCUENTO BASADO A NONEDA
Create type totaldescuento
from int

--CREAR UN TIPO DE DATOS PARA TOTAL PAGO BASADO A NOMEDA


Create type total
from INT

CREATE TABLE PLANILLA


(--INICIO DE LA TABLA
CODPLA planilla Primary KEY,--CODIGO DE LA PLANILLA
CODTRA codtrabajadores,--CODIGO TRABAJADORES
AÑO DATE CHECK(AÑO <=GETDATE()),--AÑO
MES nmes ,--MES
BASICO basicocalculado,--BASICO
HRSLAB hrslabasado ,--HRS_LAB
HRSEXT hrsext ,--HRS_EXT
BASCAL AS CASE HRSLAB
WHEN HRSLAB THEN
BASICO*HRSLAB/240 END,--BASICO_CALCULADO

PAGEXT AS CASE BASICO


WHEN BASICO THEN
BASICO*HRSEXT/240*1.5 END,--PAGO_HRS_EXTRAS

BONIFI bonificacion, --BONIFICION


TOTTAL totalingreso,
AFPCOMF afpcomfija, --AFP_COMFIJA
AFPCOMV afpcomvar, --AFP_COMVAR
FONDO fondo,
TOTAING totalingreso,--FONDO
TOTDSC totaldescuento,
TOTAL total
)--FIN DE LA TABLA
GO

DROP TABLE PLANILLA


--MOSTRARLA TABLA PLANILLA
SELECT*
FROM PLANILLA

--ADICIONAR UNA RELACION


alter table PLANILLA--QUE OBJECT
add foreign key(CODTRA) REFERENCES TRABAJADORES --QUE ACCION

--INSERCION TODAS LAS COLUMNAS(*)


INSERT PLANILLA
(CODPLA,CODTRA,AÑO,MES,BASICO,HRSLAB,HRSEXT,BONIFI,TOTTAL,AFPCOMF,AFPCOMV,FONDO,TOTA
ING,TOTDSC,TOTAL)VALUES(001,004,'04-11-
2011','ENERO',23,11,1,500,555,34,23,12,123,123,135)--1

--MOSTRAR LAS TABLA DE PLANILLA

SELECT*
FROM PLANILLA

--CREACION DE LA TABLA RPTBANCO


/*
LISTA DE DEPOSITOS EN BANCOS

*/

--TIPOS DE DATOS PERSONALIZADOS(ESTANDARES) TABLA RPTBANCO

--CREAR UN TIPO DE DATOS PARA CODRPTBANCO BASADO A NUMERO


Create type codrptbanco
from int
--CREAR UN TIPO DE DATOS PARA DEPOSITO BASADO A NUMERO
Create type deposito
from int

CREATE TABLE RPTBANCO


(--INICIO DE LA TABLA
CODBAN codrptbanco Primary KEY,--CODRPTBANCO
CODPLAN planilla,--CODIGO DE PLANILLA
CODTRA codtrabajadores,--CODIGO DE TRABAJADOR
AÑO date check (año<=getdate()),--ANNO
MES nmes,--MES
CTABAN ctabanco,--CTABANCO
DEPOSITO deposito unique,--DEPOSITO
ESTADO estado--ESTADO
)--FIN DE LA TABLA

---PROCEDIMIENTO ALMACENADOS DE UN TABLA BANCO INSERTANDO


CREATE PROC BANCO
--PARAMETROS
@CODIGPBANCO INT,
@CODPLA INT,
@CODTA INT,
@AÑOS DATE,
@MES VARCHAR(30),
@CTABAN VARCHAR(30),
@DEPOSITO INt,
@ESTADO VARCHAR(50)
AS
BEGIN
--INSERTANDO
INSERT RPTBANCO(CODBAN,CODPLAN,CODTRA,AÑO, MES, CTABAN, DEPOSITO,
ESTADO)
VALUES
(@CODIGPBANCO,@CODPLA,@CODTA,@AÑOS,@MES,@CTABAN,@DEPOSITO,@ESTADO)--INGRESAR

--ENIVAR MENSAJE

END

--EJECTUAMOS
EXEC BANCO 001,004,001,'01-07-2013','JULIO','00002234-13',123422,'COBRO'--1
EXEC BANCO 002,001,005,'01-07-2016','MAYO','03202234-13',424084,'PEDIENTE'--1
EXEC BANCO 003,002,002,'01-07-2012','ABRIL','44444444-13',322422,'COBRO'--1
EXEC BANCO 004,001,004,'01-07-2015','MARZO','22222224-13',399422,'NO COBRO'--1
EXEC BANCO 005,005,003,'01-03-2013','ENERO','00444434-13',134422,'PEDIENTE'--1

--MOSTRAR LA TABLA RPTBANCO


SELECT*
FROM RPTBANCO

--MOSTRAR LA TABLA RPTBANCO


SELECT*
FROM RPTBANCO

---PROCEDIMIENTO ALMACENADOS DE UN TABLA BANCO


CREATE PROC BANCOACTUALIZAR

--PARAMETROS
@CODBANCO INT,
@ESTADO VARCHAR(50)
AS
BEGIN
--ACTUALIZAR CON PROCEDIMIENTO DE LA TABLA
UPDATE RPTBANCO
SET ESTADO=@ESTADO
WHERE CODBAN=@CODBANCO
--ENIVAR MENSAJE

END

--EJECUTAMOS EL PROCEDIMIENTO ALMACENADO


EXECUTE BANCOACTUALIZAR 04,'COBRO'
--ELIMINAR PROCEDIMIENTO ALMACENADO
--DROP PROCEDURE IF EXISTS BANCOACTUALIZAR

--MOSTRAR LAS TABLAS


SELECT *
FROM RPTBANCO

--Cambiar language
--set language Spanis

use BDTFINAL_CarrillVilchezJoseManuel
--Crear un reporte que permita mostrar que empleados han realizado más prestamos en
el año 2017
--Mostrar la Tabla Empleados
SELECT*
FROM PRESTAMOS
WHERE YEAR (AÑO)=2017
ORDER BY 3 DESC

--De qué área son los empleados que tienen más horas extras?
SELECT*
FROM REG_RES_LABORADAS
WHERE HRSEXT='06:00:00'
ORDER BY 4 DESC
--- De qué área son los empleados que más solicitan prestamos?
SELECT*
FROM PRESTAMOS
WHERE MONTO>=500
ORDER BY 2,1 DESC

--Que empleado nunca solicito préstamo?


SELECT*
FROM PRESTAMOS
WHERE AÑO IS NOT NULL