100% encontró este documento útil (2 votos)
805 vistas68 páginas

Tablas Ejercicio SQL1-P

Este documento describe los pasos para crear una base de datos y tablas en SQL Server para almacenar información sobre alumnos, cursos y profesores de una academia. Incluye instrucciones para crear la base de datos "InstitutoSergioVega", las tablas Alumnos, Cursos y Profesores con las restricciones correspondientes, e insertar registros de ejemplo en las tablas.

Cargado por

spinet_e
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
100% encontró este documento útil (2 votos)
805 vistas68 páginas

Tablas Ejercicio SQL1-P

Este documento describe los pasos para crear una base de datos y tablas en SQL Server para almacenar información sobre alumnos, cursos y profesores de una academia. Incluye instrucciones para crear la base de datos "InstitutoSergioVega", las tablas Alumnos, Cursos y Profesores con las restricciones correspondientes, e insertar registros de ejemplo en las tablas.

Cargado por

spinet_e
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/ 68

1

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.

c) Insertar los registros en las tablas.


5
6
7

 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

 La fecha de ingreso debe ser posterior a la fecha de nacimiento (trigger)


 La fecha de nacimiento en el registro de temple de MORA, VALERIANA es 26-02-67
 El campo depde de la tabla depto depende de otro departamento de dicha tabla (relacionada consigo mismo) numde.
Constraint foraign key depde references Tdepto(numde).

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

DDL Práctica BASES DE DATOS SQL (Definición)

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

Haciendo click en la base de


datos general con la que
vamos trabajar y,
posteriormente, click derecho
para añadir la nueva base de
datos. Pondremos
1
0

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

TABLA ALUMNOS TABLA CURSOS TABLA PROFESORES


Column Name Column Name Column Name
------------------ ------------------ ------------------
NOMBRE NOMBRE_CURSO NOMBRE
APELLIDO1 COD_CURSO APELLIDO1
APELLIDO2 DNI_PROFESOR APELLIDO2
DNI MAXIMO_ALUMNOS DNI
DIRECCION FECHA_INICIO DIRECCION
SEXO FECHA_FIN TITULO
FECHA_NACIMIENTO NUM_HORAS GANA
CURSO
En las definiciones establecer las siguientes restricciones:
1
3
 No es posible dar de alta un alumno si no se matricula en un curso.

 La información del número de horas del curso es


imprescindible para almacenarlo.
Para marcar como imprescindible el
campo lo pondremos como ‘not
null’. Con esto conseguimos que , al
dar de alta un curso, no podamos
dejarlo vacío.
 El campo GANA de la tabla PROFESORES no puede estar en ningún caso vacío.
1
4

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.

 Los valores para el atributo sexo son sólo M y H (en mayúsculas).

Esta restricción se hace con


un CHECK sexo in (‘H’,’M’)
para limitar los caracteres
que pueden grabarse en
este campo.

 Se ha de mantener la regla de integridad de referencia.


NOTA: Algunos ejercicios tienen errores que debe probar (para ver el tipo y mensaje del error) y corregir.
b) Insertar las siguientes tuplas:
Tabla PROFESORES 1
NOMB APELLID APELLIDO DNI DIRECCION TITULO GANA 7
Juan Arch López 32432455 Puerta Negra, 4 Ing. 7500
María Oliva Rubio 43215643 Juan Alfonso 32 Informática
Lda. Fil. 5400
Inglesa

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 la imagen observamos que no se puede


insertar la tupla tal como está indicada en el
ejercicio. Esto se debe a que el campo CURSO
está marcado como ‘not null’ y por lo tanto
no puede estar vacío.

d)Añadir el campo edad de tipo numérico a la tabla PROFESORES.


2
0

e) Añadir las siguientes restricciones:


 La edad de los profesores está entre 18 y 65 años.
Imagen del cuadro donde se selecciona la constraint Check .
CHECK(EDAD>18 AND EDAD>65).
La edad está entre 18 y 65.
En esta imagen observamos como da error al introducir la edad de profesores
2
de menos de 18 años.
1

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 de la pantalla donde se añade el check del campo max_alumnos. ([MAX_ALU]>=(10))


2
3

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 del check que se ha de añadir para que el


número de horas sea mayor que 100.
NUM_HORAS>100

f) Eliminar la restricción que controla los valores permitidos para el atributo


sexo.

Imagen donde consta la restricción del check del campo sexo. Le


damos a delete y se borra permitiendo la introducción de cualquier
carácter.
2
5

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

No es posible grabar la restricción ‘UNIQUE’ ya que hay


campos duplicados.
h) Eliminar la restricción
2
6 de tipo NOT NULL del
atributo GANA.

Imagen
donde

observamos que consta la restricción ‘ALLOW NULL’.


2
7
Imagen donde se observa ya que no se aceptan ‘NULL’. 2
8

i) Insertar restricción no nula en el campo FECHA_INICO de CURSOS.

Cambiar la clave primaria de Profesor al nombre y apellidos.

Se marcan los campos que se quieren


poner como Primay key y se hace click
con el derecho. Nos dará una
advertencia y esta es que antes de
proceder al cambio de Primary Key, hay
que eliminar las relaciones…
2
9

j) Insertar las siguientes tuplas en alumnos:


NOMB APELLIDO APELLIDO DNI DIRECCION TITULO GANA
Juan Arch López 32432455 Puerta Negra, 4 Ing. NULL
Informática

Se hace Click en la tabla y se señala editar las 200 filas por arriba.

El resultado queda así.


3
0

NOMBR APELLIDO APELLIDO DNI DIREC SE FECHA_NA CUR


María Jaén Sevilla 7896 Martos19 M 10-MAR-1977 3
78 5

k) La fecha de nacimiento de Antonia López está equivocada. La verdadera es 23 de diciembre de 1976.

l) Cambiar a Antonia López al curso de código 5.


3
1

m) Eliminar la profesora Laura Jiménez


3
2

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.

o) Borrar las tablas


Se seleccionan las tablas que deseamos eliminar , click con el botón derecho3 y damos a delete. Esta
acción no se puede revertir. 3

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).

create database hospital;


create table personas(
cod_hospital integer,
dni integer primary key,
nombre varchar(30),
apellidos varchar(50),
funcion varchar(30),
salario integer,
loc varchar(20));

insert into personas values(1,12345678,'García Hernández', 'Eladio','CONSERJE',1200,'LORCA');


insert into personas values(1,87654321,'Fuentes Bermejo', 'Carlos','DIRECTOR',2000,'MURCIA');
insert into personas values(2,55544433,'González Marín', 'Alicia','CONSERJE',1200,'MURCIA');
insert into personas values(1,66655544,'Castillo Montes', 'Pedro','MEDICO',1700,'MURCIA');
insert into personas values(2,22233322,'Tristán García', 'Ana','MEDICO',1900,'MURCIA');
insert into personas values(3,55544411,'Ruiz Hernández', 'Caridad','MEDICO',1900,'LORCA');
insert into personas values(3,99988333,'Serrano Díaz', 'Alejandro','DIRECTOR',2400,'CARTAGENA');
insert into personas values(4,33222111,'Mesa del Castillo', 'Juan','MEDICO',2200,'LORCA');
insert into personas values(2,22233333,'Martínez Molina', 'Andrés','MEDICO',1600,'CARTAGENA');
insert into personas values(4,55544412,'Jiménez Jiménez', 'Dolores','CONSERJE',1200,'MURCIA');
insert into personas values(4,22233311,'Martínez Molina','Gloria','MEDICO',1600,'MURCIA');
3
5

Realiza las siguientes consultas en SQL.


a) Mostrar todos los datos de todas las personas. 3
6

b) Obtén el DNI, apellidos y función de todas las personas.


3
7

c) Mostrar los apellidos de las personas que vivan en LORCA.


d) Mostrar los apellidos de las personas que vivan en MURCIA o LORCA
3
8

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

j) Seleccionar aquellas personas cuyo apellido comience por M.

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.

r) Obtener los apellidos y localidad en minúscula de todas aquellas personas que no


trabajen en el hospital número 1.
4
6

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.

TABLA EMPLE TABLA DEPART.

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.

drop database empresaprueba;


//Poner la instrucción para que borre la base de datos y tablas sólo //si existen, así no da error
create database empresaprueba; 4
8
drop table emple;

create table emple(emp_no INTEGER PRIMARY KEY,

apellido VARCHAR(50) NOT NULL,

oficio VARCHAR(30),

dir INTEGER,

fecha_alt DATE,

salario INTEGER,

comision INTEGER,

dept_no INTEGER);

drop table depart;

create table depart(

dept_no INTEGER,

dnombre VARCHAR(30),

loc VARCHAR(30));

INSERT INTO emple VALUES (7369,'SÁNCHEZ','EMPLEADO',7902,'1990/12/17',


1040,NULL,20);
INSERT INTO emple VALUES (7499,'ARROYO','VENDEDOR',7698,'1990/02/20',
1500,390,30);
INSERT INTO emple VALUES (7521,'SALA','VENDEDOR',7698,'1991/02/22',
1625,650,30);
INSERT INTO emple VALUES (7566,'JIMÉNEZ','DIRECTOR',7839,'1991/04/02',
2900,NULL,20);
INSERT INTO emple VALUES (7654,'MARTÍN','VENDEDOR',7698,'1991/09/29',
1600,1020,30);
INSERT INTO emple VALUES (7698,'NEGRO','DIRECTOR',7839,'1991/05/01',
3005,NULL,30);
INSERT INTO emple VALUES (7782,'CEREZO','DIRECTOR',7839,'1991/06/09',
2885,NULL,10); 4
INSERT INTO emple VALUES (7788,'GIL','ANALISTA',7566,'1991/11/09', 9
3000,NULL,20);
INSERT INTO emple VALUES (7839,'REY','PRESIDENTE',NULL,'1991/11/17',
4100,NULL,10);
INSERT INTO emple VALUES (7844,'TOVAR','VENDEDOR',7698,'1991/09/08',
1350,0,30);
INSERT INTO emple VALUES (7876,'ALONSO','EMPLEADO',7788,'1991/09/23',
1430,NULL,20);
INSERT INTO emple VALUES (7900,'JIMENO','EMPLEADO',7698,'1991/12/03',
1335,NULL,30);
INSERT INTO emple VALUES (7902,'FERNÁNDEZ','ANALISTA',7566,'1991/12/03',
3000,NULL,20);
INSERT INTO emple VALUES (7934,'MUÑOZ','EMPLEADO',7782,'1992/01/23',
1690,NULL,10);

INSERT INTO depart VALUES (10,'CONTABILIDAD','SEVILLA');


INSERT INTO depart VALUES (20,'INVESTIGACIÓN','MADRID');
INSERT INTO depart VALUES (30,'VENTAS','BARCELONA');
INSERT INTO depart VALUES

(40,'PRODUCCIÓN','BILBAO');

Cambio a la base de datos creada anteriormente.


Creación de la base de datos Empresasesave
5
0

Insertando datos en la tabla values

Añadiendo los valores a la tabla values


Creación de la taba depart.

Creación de la tabla emple

Visualizando la tabla depart completa.


5
1

Visualizando la tabla emple completa.

 El campo salario hay que multiplicarlo por 100 porque así es como está almacenado en la tabla.

Realizar las siguientes consultas:


a) Mostrar el apellido, oficio y número de departamento de cada empleado.
5
2

b) Mostrar el número, nombre y localización de cada departamento.

c) Mostrar todos los datos de todos los empleados.


d) Datos de los empleados ordenados por apellidos.
5
3

e) Datos de los empleados ordenados por número de departamento descendentemente.

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.

h) Mostrar los datos de los empleados cuyo oficio sea ʻANALISTAʼ.


5
5

i) Seleccionar el apellido y oficio de los empleados del departamento número 20.

j) Mostrar todos los datos de los empleados ordenados por apellido.


5
6

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

v) Datos de los departamentos cuya localización empiece por ʻBʼ.

w) Datos de los empleados cuyo oficio sea ʻEMPLEADOʼ, tengan un salario superior a 100000 y pertenezcan al departamento número 10.

x) Mostrar los apellidos de los empleados que no tengan comisión.


6
2
y) Mostrar los apellidos de los empleados que no tengan comisión y cuyo apellido empiece por ʻJʼ.

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

ee) Obtener el apellido de todos los empleados en minúscula.

ff) En una consulta concatena el apellido de cada empleado con su oficio.


6
5

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.

hh) Obtener el año de contratación de todos los empleados (función YEAR).


6
6

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

También podría gustarte