martes, 12 de mayo de 2015

Ejercicios con Insert, Update, y Delete en SQL Server



Hola a todos los seguidores de este interesante manual de TRANSACT SQL.
A continuación vamos a realizar ejercicios con consultas de acción, es decir, utilizaremos Insert, Update y Delete.

El requisito para ejecutar estos ejercicios es tener la base de datos HOSPITAl, la cual puedes descargar desde el indice. 

Empecemos.

1. Dar de alta con fecha actual al empleado Jose Escriche Barrera como programador perteneciente al departamento de informatica.Tendra un salario base de 70000 pts/mes y no cobrara comision, ¿qué dificultad plantea el alta de este empleado? ¿Cómo podria solucionarse ?

INSERT INTO DEPT(DEPT_NO,DNOMBRE,LOC)
VALUES(60,'INFORMATICA','MADRID')

INSERT INTO EMP(EMP_NO,APELLIDO,OFICIO,FECHA_ALT,SALARIO,COMISION,DEPT_NO)
VALUES(8596,'ESCRICHE','PROGRAMADOR','07/02/02',70000,0,60)

2. Se quiere dar de alta un departamento de informática situado en Fuenlabrada (Madrid).

INSERT INTO DEPT(DEPT_NO,DNOMBRE,LOC)
VALUES(70,'INFORMATICA','FUENLABRADA')

3. El departamento de ventas por motivos de peseteros se traslada a Lerida, realizar dicha modificación.

UPDATE DEPT SET LOC='LERIDA' WHERE DNOMBRE='VENTAS'

4. En el departamento anterior se dan de alta dos empleados: Julián Romeral y Luis Alonso. Su salario base es de 80000 pts y cobrarán una comisión del 15% de su salario.

INSERT INTO EMP(DEPT_NO,APELLIDO,SALARIO,COMISION,EMP_NO)
VALUES(30, 'ROMERAL',80000,80000*0.15,7500)

INSERT INTO EMP(DEPT_NO,APELLIDO,SALARIO,COMISION,EMP_NO)
VALUES(30, 'ALONSO',80000,80000*0.15,7600)

5. Modificar la comisión de los empleados de la empresa, de forma que todos tengan un incremento del 10% del salario.
UPDATE EMP SET SALARIO=SALARIO*1.1

6. Incrementar un 5% el salario de los interinos de la plantilla que trabajen en el turno de noche.

UPDATE PLANTILLA SET SALARIO = SALARIO*1.05 WHERE FUNCION='INTERINO'
AND T='N'

7. Incrementar en 5000 pts el salario de los empleados del departamento de ventas y del presidente, tomando en cuenta los que se dieron de alta antes que el presidente de la empresa.

UPDATE EMP SET SALARIO = SALARIO + 5000
FROM EMP AS E
INNER JOIN DEPT AS D
ON E.DEPT_NO = D.DEPT_NO
WHERE FECHA_ALT < (SELECT FECHA_ALT FROM EMP WHERE OFICIO =
'PRESIDENTE')
AND E.OFICIO = 'PRESIDENTE'
OR D.DNOMBRE = 'VENTAS'

8. Se tienen que desplazar cien camas del Hospital SAN CARLOS para un Hospital de Venezuela. Actualizar el número de camas del Hospital SAN CARLOS.

UPDATE HOSPITAL SET NUM_CAMA = NUM_CAMA-100 WHERE NOMBRE='SAN CARLOS'

9. Crear una tabla llamada Mujeres e insertar los enfermos con este sexo.

CREATE TABLE MUJERES
(
Inscripcion INT NOT NULL,
Apellido VARCHAR(50) NULL,
Direccion VARCHAR(50) NULL,
Fecha_Nac VARCHAR(50) NULL,
S VARCHAR(2) NULL,
NSS INT NULL
)
GO
INSERT INTO MUJERES SELECT * FROM ENFERMO WHERE S = 'F'

10. Crear una tabla llamada Empleados e introducir todos los datos de la tabla EMP en ella.

CREATE TABLE EMPLEADOS
(
Emp_No INT NOT NULL,
Apellido VARCHAR(50) NULL,
Oficio VARCHAR(50) NULL,
Dir INT NULL,
Fecha_Alt SMALLDATETIME NULL,
Salario NUMERIC(9,2) NULL,
Comision NUMERIC(9,2) NULL,
Dept_No INT NULL
)
GO
INSERT INTO EMPLEADOS SELECT * FROM EMP

11. Utilizar la tabla anterior. Subir el salario y la comisión en un millón de pesetas y doscientas veinticinco mil pesetas respectivamente a los empleados que se dieron de alta en este año.

UPDATE EMPLEADOS SET SALARIO = SALARIO + 1000000/12,
COMISION = COMISION + 225000/12 WHERE FECHA_ALT > '01/01/02'

12. Borrar de la tabla mujer al enfermo con número de inscripción igual a 64823.

DELETE FROM MUJERES WHERE INSCRIPCION= '64823'

13. Borrar todos los registros de la tabla Mujeres de la forma más rápida.

TRUNCATE TABLE MUJERES

14. Utilizar la tabla Empleados. Borrar todos los empleados dados de alta entre las fechas 01/01/80 y 31/12/82.

DELETE FROM EMPLEADOS WHERE FECHA_ALT BETWEEN '01/01/80' AND '31/12/82'

15. Modificar el salario de los empleados trabajen en la paz y esten destinados a Psiquiatría. Subirles el sueldo 20000 ptas más que al señor Amigo R.

UPDATE PLANTILLA SET SALARIO =
(SELECT SALARIO + 20000 FROM PLANTILLA
WHERE APELLIDO = 'AMIGO R.')
FROM PLANTILLA AS P
INNER JOIN HOSPITAL AS H
ON H.HOSPITAL_COD = P.HOSPITAL_COD
INNER JOIN SALA AS S
ON S.SALA_COD = P.SALA_COD
WHERE H.NOMBRE = 'LA PAZ'
AND S.NOMBRE = 'PSIQUIÁTRICOS'

16. Borrar los empleados cuyo nombre de departamento sea producción.

DELETE FROM EMP
FROM EMP AS E
INNER JOIN DEPT AS D
ON E.DEPT_NO = D.DEPT_NO
WHERE D.DNOMBRE = 'PRODUCCION'




Espero haber ayudado en algo. Hasta la próxima oportunidad!








No hay comentarios:

Publicar un comentario en la entrada