Tablas Ejercicio SQL1-P
Tablas Ejercicio SQL1-P
Ejercicios UT4 -2
“ Creacción y modificiacón de bases de datos y tablas
y consultas en Sql Server y MySql.”
Sergio Santana Vega 2ºAsir B Semipresencial.
2
1. Crear la BD siguiente llamándola empresa más las iniciales del alumno (juan carrasco ramos empresajucara).
3
a) Ponerle los parámetros necesarios para configurar el fichero de datos y transacciones según se explicó en clase.
b) Además, crear las tablas correspondientes con las restricciones que creas necesarias. Este ejercicio hay que realizarlo en SQL Server con instrucciones escritas
como una consulta en el managament studio. Realizar capturas de pantalla de la instrucción y su 4 resultado después de ejecutarla.
EN TODOS ESTOS EJERCICIOS MOSTRAR LA INSTRUCCIÓN SI ES ESCRITA EN UNA CONSULTA Y EL RESULTADO DE LA EJECUCIÓN.
SI ES EN ENTORNO GRÁFICO MOSTRAR CAPTURA DE PANTALLA DE LA INSTRUCCIÓN Y EL RESULTADO DE LA EJECUCIÓN.
EN TODOS LOS EJERCICIOS HAY QUE CONTROLAR EL ORDEN DE CREACIÓN DE LA TABLAS 8
o Esto es muy importante si queremos que no se produzcan errores
Hay que tener en cuenta que numde de la tabla temple está relacionado con el campo numde de la tabla tdepto
Constrain foreign key (numde) references Tdepto(numde)
El campo direc de la tabla tdepto depende del campo numemp de la tabla temple (podríamos utilizar un trigger para este control)
También se podría utilizar un trigger para poder controlar en la tabla tdepto que un director solo puede ser en propiedad para un único departamento
Crear la BD y tablas siguientes poniéndole por nombre Instituto más las iniciales del alumno. Asimismo crear las tablas de la
misma con las constraints que se especifican. Realizar el ejercicio desde el entorno gráfico de SQL Server y capturar pantallas
del proceso
Se desea tener una base de datos con la siguiente información acerca de los alumnos de una academia de idiomas
donde se imparten varios cursos:
Información acerca de los alumnos, que constará de su nombre y apellidos, un código único para cada alumno, su
dirección, fecha de nacimiento y sexo (‘H’ o ‘M’).
Estos alumnos estarán matriculados en un sólo curso cada uno. Cada curso tendrá un nombre, un código único
que lo identifica, el número máximo de alumnos recomendado, un profesor, la fecha de inicio y de finalización del
curso y el número de horas del curso.
Los profesores tendrán una ficha en la academia donde se especifican sus datos personales y los datos del
contrato. Es decir, nombre, DNI, dirección, titulación, cuota por hora.
CREACION DE LA BASE DE
9
DATOS INSTITUTOSESAVE
Indicaremos el nombre de la base de datos, en este caso INSTITUTOSESAVE. El sistema, automáticamente, asignará el
nombre del archivo general.mdb y el.log de respaldo. Podremos indicar en ambos, el tamaño inicial, el crecimiento, el
tamaño máximo y el destino donde se guardarán ambos archivos.
Se pide:
a) Generar las siguientes tablas para guardar esta información
1
1
1
2
Igualmente marcamos el campo GANA como ‘not null’ para impedir que se quede vacío.
Dos cursos no pueden llamarse igual. Lo mismo les pasa a los profesores.
1
5
Podemos identificar las tuplas de las tablas CURSOS mediante el atributo CODIGO y PROFESORES y ALUMNOS usando el DNI.
1
6
Cumplir la relación normal entre fecha comienzo y fecha fin (orden cronológico). Se podría realizar con un trigger.
Tabla CURSOS
NOMBRE_CURSO COD_CUR DNI_PRO MAX_A FECHA_I FECHA_F NUM_HOR
Inglés Básico 1 43215643 15 01-NOV-00 22-DIC-00 120
Administración Linux 2 32432455 01-SEPT- 80
00
Tabla ALUMNOS
NOMBRE APELLID APELLID DNI DIRECCIO SE FECHA_NA CUR
Lucas Manilva López 123523 Alhamar 3 V 01-NOV- 1
Antonia López Alcantara 2567567 Maniquí 21 M 1979 2
Manuel Alcantara Pedrós 3123689 Julian 2 2
José Pérez Caballar 4896765 Jarcha 5 V 3-FEB-1977 1
1
8
c) Insertar la siguiente tupla en ALUMNOS:
NOMB APELLID APELLID DNI DIREC SE FECHA_NA CURSO 1
Sergio Navas Retal 123523 P 9
En esta imagen observamos que no se permite la introducción de edades mayores de 65 años en el campo
edad.
2
2
No se puede añadir un curso si su número de alumnos máximo es menor que 10.
Imagen del error que nos da si ingresamos menos alumnos que 10 en campo MAX_ALU porque está activa la
restricción.
El número de horas de los cursos debe ser mayor que 100.
2
4
Imagen donde se observa que introducimos el carácter W y , al no haber restricción alguna, se acepta.
g) Se dice que cada alumno ha de estar matriculado en un solo curso. ¿Esto quiere decir que el atributo CURSO de la tabla ALUMNOS ha de ser UNIQUE? Pruebe a
introducir la restricción y ver si confirma esta hipótesis.
'ALUMNOS' table
- Unable to create index 'IX_ALUMNOS'.
La instrucción CREATE UNIQUE INDEX terminó porque se encontró una clave
duplicada para el nombre de objeto 'dbo.ALUMNOS' y el nombre de índice
'IX_ALUMNOS'. El valor de la clave duplicada es (1 ).
Se terminó la instrucción
Imagen
donde
Se hace Click en la tabla y se señala editar las 200 filas por arriba.
n) Crear una tabla de uso temporal llamada NOMBRE DE ALUMNOS que tenga un solo atributo (NOMBRE_COMPLETO) de tipo cadena de caracteres y con el
contenido de la tabla alumnos en esos campos. Observe que no hay restricción de clave primaria para esta tabla.
2. Se dispone de la tabla PERSONAS con los datos de aquellos empleados que trabajan en una serie de hospitales. La Base de Datos la llamaremos Hospital
+ nombre alumno.
TABLA PERSONAS
3
4
Ejecuta el siguiente script para cargar los datos (cambia el nombre de la base de datos y la tabla). Realizar esta práctica con el entorno gráfico de mysql (phpmyadmin).
e) Seleccionar los datos de aquellas personas que vivan en MURCIA y tengan un salario superior a los 1500 euros.
3
9
f) Mostrar los datos de las personas que vivan en MURCIA, tengan un salario superior a los 1500 euros y sean DIRECTORES.
g) Mostrar los datos de las personas cuya función sea MÉDICO ordenados por apellidos descendentemente.
4
0
h) Mostrar los datos de todas las localidades que hay en la tabla personas sin repeticiones (debes emplear la cláusula DISTINCT)
i) Mostrar los datos de las personas que tengan un salario superior a 1500 euros y sean médicos. Ordenar la salida por salario descendentemente.
4
1
k) Mostrar los datos de las personas que tengan una M en el apellido y cuya función sea CONSERJE
4
2
l) Mostrar aquellas personas que tengan un salario entre 1500 y 2000 euros.
m) Seleccionar los datos de aquellas personas cuya función sea MÉDICO o DIRECTOR (utilizar el operador IN)
4
3
n) Obtener los datos de aquellas personas cuya función no sea CONSERJE (utilizar el operador NOT IN) y tengan un salario superior a los 1500 euros,
ordenados por apellido descendentemente.
o) Mostrar los datos de las personas que sean de MURCIA o CARTAGENA y que pertenezcan al hospital número 1.
4
4
p) Obtén los apellidos en mayúsculas de las personas que trabajen en el hospital número 1.
4
5
q) Con una consulta devuelve los apellidos de todas las personas. Al lado debe aparecer la longitud de cada apellido.
s) Obtener los datos de las personas que trabajen en los hospitales 1 ó 2 y tengan un salario superior a 1500 euros.
t) Visualizar los datos de aquellas personas que no trabajen en el hospital número 2 y que sean de MURCIA.
4
7
3. Crear la base de datos EmpresaPrueba + nombre alumno. Se disponen de las siguientes tablas con los siguientes datos.
Ejecuta el siguiente script para cargar los datos (cambia el nombre de la base de datos y las tablas). Realizar este ejercicio desde la línea de comandos de mysql.
oficio VARCHAR(30),
dir INTEGER,
fecha_alt DATE,
salario INTEGER,
comision INTEGER,
dept_no INTEGER);
dept_no INTEGER,
dnombre VARCHAR(30),
loc VARCHAR(30));
(40,'PRODUCCIÓN','BILBAO');
El campo salario hay que multiplicarlo por 100 porque así es como está almacenado en la tabla.
f) Datos de los empleados ordenados por número de departamento descendentemente y dentro de cada departamento ordenados por apellido
ascendentemente.
5
4
g) Mostrar los datos de los empleados cuyo salario sea mayor que 2000000.
k) Seleccionar los empleados cuyo oficio sea ʻVENDEDORʼ. Mostrar los datos ordenados por apellido.
l) Mostrar los empleados cuyo departamento sea 10 y cuyo oficio sea ʻANALISTAʼ. Ordenar el resultado por apellido.
5
7
m) Mostrar los empleados que tengan un salario mayor que 200000 o que pertenezcan al departamento número 20.
n) Ordenar los empleados por oficio, y dentro de oficio por nombre.
5
8
o) Seleccionar de la tabla EMPLE los empleados cuyo apellido empiece por ʻAʼ.
p) Seleccionar de la tabla EMPLE los empleados cuyo apellido termine por ʻZʼ.
5
9
q) Seleccionar de la tabla EMPLE aquellas filas cuyo APELLIDO empiece por ʻAʼ y el OFICIO tenga una ʻEʼ en cualquier posición.
r) Seleccionar los empleados cuyo salario esté entre 100000 y 200000. Utilizar el operador BETWEEN.
s) Obtener los empleados cuyo oficio sea ʻVENDEDORʼ y tengan una comisión superior a 100000.
6
0
t) Seleccionar los datos de los empleados ordenados por número de departamento, y dentro de cada departamento ordenados por apellido.
u) Número y apellidos de los empleados cuyo apellido termine por ʻZʼ y tengan un salario superior a 300000.
6
1
w) Datos de los empleados cuyo oficio sea ʻEMPLEADOʼ, tengan un salario superior a 100000 y pertenezcan al departamento número 10.
z) Mostrar los apellidos de los empleados cuyo oficio sea ʻVENDEDORʼ, ʻANALISTAʼ o ʻEMPLEADOʼ.
aa) Mostrar los apellidos de los empleados cuyo oficio no sea ni ʻANALISTAʼ ni ʻEMPLEADOʼ, y además tengan un salario mayor de 200000.
6
3
bb) Seleccionar de la tabla EMPLE los empleados cuyo salario esté entre 2000000 y 3000000 (utilizar BETWEEN).
cc) Seleccionar el apellido, salario y número de departamento de los empleados cuyo salario sea mayor que 200000 en los departamentos 10 ó 30.
dd) Mostrar el apellido y número de los empleados cuyo salario no esté entre 100000 y 200000 (utilizar BETWEEN).
6
4
gg) Mostrar el apellido y la longitud del apellido (función LENGTH) de todos los empleados, ordenados por la longitud de los apellidos de los empleados
descendentemente.
ii) Mostrar los datos de los empleados que hayan sido contratados en el año 1992.
jj) Mostrar los datos de los empleados que hayan sido contratados en el mes de febrero de cualquier año (función MONTHNAME).
6
7
kk) En cada departamento mostrar el apellido del empleado que tiene el salario mayor.
ll) Mostrar los datos de los empleados cuyo apellido empiece por 'A' y hayan sido contratados en el año 1990.
mm)Mostrar los datos de los empleados del departamento 10 que no tengan comisión.
6
8