0% encontró este documento útil (0 votos)
144 vistas4 páginas

Ejercicios SQL Server IAC

Este documento presenta un esquema de base de datos para una compañía llamada IAC con tablas para proyectos, empleados, tareas, asignaciones, clientes y registro de horas. Luego propone 28 ejercicios de SQL que involucran crear funciones, procedimientos almacenados, vistas y disparadores para manipular y consultar datos en esta base de datos.
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)
144 vistas4 páginas

Ejercicios SQL Server IAC

Este documento presenta un esquema de base de datos para una compañía llamada IAC con tablas para proyectos, empleados, tareas, asignaciones, clientes y registro de horas. Luego propone 28 ejercicios de SQL que involucran crear funciones, procedimientos almacenados, vistas y disparadores para manipular y consultar datos en esta base de datos.
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/ 4

Ejercicios de SQL Server

Dada la base de datos IAC con el siguiente esquema:

PROYECTOS(cod_proy, cod_cliente, fecha_inicio, tipo)


PERSONAL(cod_func, nombre, fecha_ingreso, salario, hijos)
TAREAS(cod_tarea, descripcion, tipo)
ASIGNACION(cod_func, cod_proy, cod_tarea)
CLIENTES(cod_cliente, nombre, dirección, poblacion, teléfono,email,cod_func)
REGISTRO_HORAS(cod_func, cod_proy, fecha, cant_horas)

CREATE DATABASE IAC;

CREATE TABLE asignacion (


cod_func varchar(3) NOT NULL,
cod_proy varchar(3) DEFAULT NULL,
cod_tarea varchar(3) DEFAULT NULL
);

CREATE TABLE personal (


cod_func varchar(4) NOT NULL,
nombre varchar(30) DEFAULT NULL,
fecha_ingreso date DEFAULT NULL
);

CREATE TABLE proyectos (


cod_proy varchar(3) NOT NULL,
cod_cliente varchar(4) DEFAULT NULL,
fecha_inicio date DEFAULT NULL,
tipo varchar(10) DEFAULT NULL
);

CREATE TABLE registro_horas (


cod_func varchar(3) DEFAULT NULL,
cod_proy varchar(3) DEFAULT NULL,
fecha date DEFAULT NULL,
cant_horas int DEFAULT NULL
);

CREATE TABLE tareas (


Ejercicios de SQL Server

cod_tarea varchar(3) NOT NULL,


descripcion varchar(30) DEFAULT NULL,
tipo varchar(10) DEFAULT NULL
);

ALTER TABLE personal


ADD PRIMARY KEY (cod_func);

ALTER TABLE proyectos


ADD PRIMARY KEY (cod_proy);

ALTER TABLE tareas


ADD PRIMARY KEY (cod_tarea);

ALTER TABLE asignacion


ADD CONSTRAINT FK1 FOREIGN KEY (cod_proy) REFERENCES proyectos (cod_proy);

ALTER TABLE asignacion


ADD CONSTRAINT FK2 FOREIGN KEY (cod_tarea) REFERENCES tareas (cod_tarea);

ALTER TABLE registro_horas


ADD CONSTRAINT FK3 FOREIGN KEY (cod_func) REFERENCES personal (cod_func);

ALTER TABLE registro_horas


ADD CONSTRAINT FK4 FOREIGN KEY (cod_proy) REFERENCES proyectos (cod_proy);
Ejercicios de SQL Server

Realiza instrucciones en SQL que respondan a las siguientes cuestiones haciendo el script y su
ejecución para cada uno de ellos:
1. Crear función que reciba como parámetro "total" o "parcial" y si recibe "total" muestra to-
dos los datos de los clientes y si es "parcial" mostrará el cod_cliente, nombre, direccion y
email.
2. Crear procedimiento llamado "pa_funcionarios_en_proyecto" que seleccione los nombres
de los empleados que trabajen en el proyecto enviado como parámetro.
3. Crear una vista que muestre todos los datos de los clientes que empiezan por "C".
4. Crear un procedimiento llamado "pa_sueldototal" que reciba el código de un empleado y
muestre su nombre, cantidad de hijos y el sueldo total (resultado de la suma del sueldo y
salario por hijo, que es de 80 € si el sueldo es menor a 1200 € y 50 €, si el superior o igual a
1200).
5. Crear un procedimiento o función en la que pasando como parámetro el código de un fun-
cionario aumente su salario en un 1,2% si este tiene más de dos hijos, en caso contrario no
deberá cambiar el salario.
6. Crear un procedimiento que añada un nuevo tipo de tarea a un empleado que pasamos
como parámetro. Una vez añadido deberá mostrar el nombre del funcionario y los tipos de
tareas que realiza.
7. Crear un procedimiento que reciba el código del funcionario y elimine de la tabla asigna -
ción los registros que coincidan con dicho código.
8. Cree una función que nos devuelva el número de proyectos distintos en las que ha partici-
pado un empleado que pasamos por código de funcionario
9. Cree un procedimiento almacenado llamado "pa_proyectos_clientes" que seleccione los
nombres y cód. de los clientes, códigos del funcionario y nombre, así como el código del
proyecto y el tipo de proyecto para un cliente que pasamos como parámetro.
10. Dada la tabla copiaProyectos con la misma estructura que la tabla proyectos, realizar un
trigger que genere una copia exacta de todos los registros de la tabla proyectos en copia-
Proyectos cada vez que se realice algún tipo de alteración de la tabla proyectos
11. Desencadenador que impida cambiar el nombre de las denominaciones de los proyectos
12. Desencadenador que impida la eliminación de un proyecto en el que han trabajado em -
pleados en el día en que se intenta ejecutar la orden de eliminación. Usar la función que
nos devuelve el día actual.
13. Desencadenador que impida que el cliente CEPSA pueda solicitar proyectos de tipo docen -
te.
14. Disparador que impida trabajar en más de una vez en un proyecto en el que ha trabajado
en ese día.
15. Establecer una regla que impida que se asigne un empleado que ya trabaja para un cliente
al proyecto que es de tipo Investigación.
16. Función que muestre los años que llevan trabajando en la empresa el personal.
17. Función que muestre para un proyecto indicado la relación de personal (código y nombre)
que ha trabajado en él.
18. Función que reciba los parámetros "Clientes", "Personal" o "Proyectos" para que muestre
todos los datos de los Clientes si pones Clientes, todos los datos de personal si has puesto
Personal y de los proyectos si has puesto Proyectos
19. Generar una función que indique el número de tareas que ha realizado un empleado en un
día indicado, se deberá mostrar el nombre del empleado y el número de tareas distintas
que ha realizado.
20. Vista que muestre la cantidad de proyectos, agrupados por tipo y por cliente.
21. SQL Subconsultas: Vista que muestre los proyectos en los cuales trabajan al menos dos
empleados que han trabajado en proyectos del cliente ULL
22. Vista que muestre solamente los empleados que actualmente se encuentran trabajando
en proyectos del cliente CEPSA.
Ejercicios de SQL Server

23. Vista que muestre todos los clientes que NO han encargado ningún proyecto en el que tra -
baje el empleado de personal Pedro Marrero Domínguez.
24. Procedimiento almacenado "pa_actualizar_proyecto" enviando en primer lugar el paráme-
tro @nuevoproyecto y en segundo lugar @proyectoanterior (parámetros por código de
proyecto) haga una reasignación de los funcionarios del proyecto anterior en el que esta-
ban trabajando y los asigne a un nuevo proyecto.
25. Procedimiento que facilitando el cod_func nos diga en qué fecha ingreso en el IAC y los
años y meses que lleva trabajando.
26. Procedimiento que retorne los empleados y los años que llevan trabajando en el IAC.
27. Realizar un procedimiento en el que indicando la tarea (Desarrollo, Análisis, ...) y la fecha
nos muestre la relación de personal (Código y nombre) así como el código del proyecto en
el que trabajaron ese día.
28. Vistas: Cree la vista "vi_proyecto" que muestre el código de proyecto, tipo, empleados y
tipo de tarea que desarrolla cada uno de los empleados que trabajan en ese proyecto.

También podría gustarte