Mysql Academia

6
DDL Práctica Base Datos SQL (Definición) use master go create database academia on (Name=Academia_data, filename='C:\......\mssql\data\academia_data.mdf', size=10, maxsize=100, filegrowth=5) LOG ON (Name=Academia_log, filename='C:\.......\mssql\data\academia_log.ldf', size=10, maxsize=25, filegrowth=5) 1. Generamos las tablas Alumnos, Cursos y Profesores use academia create table profesores ( nombre char(20) unique not null, apellido1 char(20), apellido2 char(20), dni char(9) primary key, direccion char(40), titulo char(40), gana integer not null ); create table cursos ( nombre_curso char(20) unique not null, cod_curso smallint primary key, dni_profesor char(9), maximo_alumnos smallint, fecha_inicio date, fecha_fin date, num_horas int check (num_horas>0) foreign key(dni_profesor) references profesores(dni), check (fecha_fin>fecha_inicio) ); create table alumnos ( nombre char(20), apellido1 char(20), apellido2 char(20), dni char(9) primary key,

Transcript of Mysql Academia

Page 1: Mysql Academia

DDL Práctica Base Datos SQL (Definición)

use mastergocreate database academia on(Name=Academia_data,filename='C:\......\mssql\data\academia_data.mdf',size=10,maxsize=100,filegrowth=5)LOG ON(Name=Academia_log,filename='C:\.......\mssql\data\academia_log.ldf',size=10,maxsize=25,filegrowth=5)

1. Generamos las tablas Alumnos, Cursos y Profesoresuse academiacreate table profesores(nombre char(20) unique not null, apellido1 char(20),apellido2 char(20),dni char(9) primary key,direccion char(40),titulo char(40),gana integer not null);

create table cursos(nombre_curso char(20) unique not null,cod_curso smallint primary key,dni_profesor char(9),maximo_alumnos smallint,fecha_inicio date,fecha_fin date,num_horas int check (num_horas>0)foreign key(dni_profesor) references profesores(dni),check (fecha_fin>fecha_inicio));

create table alumnos( nombre char(20), apellido1 char(20),apellido2 char(20),dni char(9) primary key,direccion char(40),sexo char(1) check (sexo='H' or sexo='M'),fecha_nacimiento date, curso smallint not null,foreign key(curso) references cursos(cod_curso))

2. Insertamos datos en las tres tablas:

Page 2: Mysql Academia

Profesoresinsert into profesores (nombre, apellido1, apellido2, dni, direccion, titulo, gana)values ('Juan', 'Arch', 'Lopez', '32432455', 'Puerta Negra, 4', 'Ing. Informática', 7500);insert into profesores (nombre, apellido1, apellido2, dni, direccion, titulo, gana)values ('María', 'Oliva', 'Rubio', '43215643', 'Juan Alfonso, 32', 'Lda. Fil. Inglesa', 5400);

Cursosinsert into cursos (nombre_curso, cod_curso, dni_profesor, maximo_alumnos, fecha_inicio, fecha_fin, num_horas)values ('Inglés Básico', 1, '43215643', 15, '01/11/2000', '22/12/2000', 120);insert into cursos (nombre_curso, cod_curso, dni_profesor, fecha_inicio, num_horas)values ('Administración Linux', 2, '32432455', '01/09/2000', 120);

Alumnosinsert into alumnos (nombre, apellido1, apellido2, dni, direccion, sexo, fecha_nacimiento, curso)values ('Lucas', 'Manilva', 'López', '123523','Alhamar 3', 'V', '01/11/1979', 1);Mens. 547, Nivel 16, Estado 0, Línea 1Instrucción INSERT en conflicto con la restricción CHECK "CK__alumnos__sexo__117F9D94". El conflicto ha aparecido en la base de datos "academia", tabla "dbo.alumnos", column 'sexo'.Se terminó la instrucción.

Corrección del valor sexo:insert into alumnos (nombre, apellido1, apellido2, dni, direccion, sexo, fecha_nacimiento, curso)values ('Lucas', 'Manilva', 'López', '123523','Alhamar 3', 'H', '01/11/1979', 1);

insert into alumnos (nombre, apellido1, apellido2, dni, direccion, sexo, curso)values ('Antonia', 'López', 'Alcántara', '2567567','Maniqui 21', 'M', 2);

insert into alumnos (nombre, apellido1, apellido2, dni, direccion, sexo, curso)values ('Manuel', 'Alcántara', 'Pedrós', '3123689','Julián, 2', 'H', 2);

insert into alumnos (nombre, apellido1, apellido2, dni, direccion, sexo, fecha_nacimiento, curso)values ('José', 'Pérez', 'Caballar', '4896765','Jarcha 5', 'V', '03/02/1977', 1);Mens. 547, Nivel 16, Estado 0, Línea 1Instrucción INSERT en conflicto con la restricción CHECK "CK__alumnos__sexo__117F9D94". El conflicto ha aparecido en la base de datos "academia", tabla "dbo.alumnos", column 'sexo'.Se terminó la instrucción.

Corrección del valor sexo:

Page 3: Mysql Academia

insert into alumnos (nombre, apellido1, apellido2, dni, direccion, sexo, fecha_nacimiento, curso)values ('José', 'Pérez', 'Caballar', '4896765','Jarcha 5', 'H', '03/02/1977', 1);

3.insert into alumnos (nombre, apellido1, apellido2, dni, sexo)values ('Sergio', 'Navas', 'Retal', '123523', 'P');Mens. 547, Nivel 16, Estado 0, Línea 1Instrucción INSERT en conflicto con la restricción CHECK "CK__alumnos__sexo__117F9D94". El conflicto ha aparecido en la base de datos "academia", tabla "dbo.alumnos", column 'sexo'.Se terminó la instrucción.Mens. 515, Nivel 16, Estado 2, Línea 1No se puede insertar el valor NULL en la columna 'curso', tabla 'academia.dbo.alumnos'. La columna no admite valores NULL. Error de INSERT.Se terminó la instrucción.Mens. 2627, Nivel 14, Estado 1, Línea 1Infracción de la restricción PRIMARY KEY 'PK__alumnos__D87608A60F975522'. No se puede insertar una clave duplicada en el objeto 'dbo.alumnos'.Se terminó la instrucción.

Corrección del valor sexo, dni y cursoinsert into alumnos (nombre, apellido1, apellido2, dni, sexo, curso)values ('Sergio', 'Navas', 'Retal', '123524', 'H', 1);

4. Añadimos el campo edad de tipo numérico a la tabla profesoresalter table profesores add edad smallint;

5. Añadir restriccionesalter table profesores add constraint CK_edad check (edad>=18 and edad<=65);

alter table cursosadd constraint CK_maximo_alumnos check (maximo_alumnos>=10);

alter table cursosadd constraint CK_num_horas check (num_horas>100);

6. Eliminar restricción que controla los valores permitidos para el atributo sexo.alter table alumnos drop constraint CK__alumnos__sexo__117F9D94;

7. Probar restricción en tabla alumnos en no poner cursoinsert into alumnos (nombre, apellido1, apellido2, dni, direccion, sexo) values ('Diego', 'Prieto', 'Huber', '52364970L','Jose Gomez 1', 'H');Mens. 515, Nivel 16, Estado 2, Línea 1No se puede insertar el valor NULL en la columna 'curso', tabla 'academia.dbo.alumnos'. La columna no admite valores NULL. Error de INSERT.Se terminó la instrucción.

8. Eliminar restricción not null del atributo ganaalter table profesores alter column gana integer null;

9. Inserción restricción no nula en el campo fecha_inicio de cursosalter table cursos add constraint CK_fecha_inicio check (fecha_inicio<>null);

10. Cambiar la clave primaria de Profesor al nombre y apellidos.

Page 4: Mysql Academia

alter table cursos drop constraint FK__cursos__dni_profesor__0BC6C43E;

alter table profesoresdrop constraint PK__profesor__D87608A67F60ED59;

alter table profesoresadd constraint pk_nombre_apellidos primary key clustered (nombre, apellido1, apellido2);

11. Inserción registros tabla profesores y alumnos

insert into profesores (nombre, apellido1, apellido2, dni, direccion, titulo)values ('José', 'Arch', 'Lopez', '32432455','Puerta Negra 4', 'Ing. Informática');

insert into alumnos (nombre, apellido1, apellido2, dni, direccion, sexo, fecha_nacimiento, curso)values ('María', 'Jaén', 'Sevilla', '789678','Martos 5', 'M', '10/03/1977', 3);Corrección curso:insert into alumnos (nombre, apellido1, apellido2, dni, direccion, sexo, fecha_nacimiento, curso)values ('María', 'Jaén', 'Sevilla', '789678','Martos 5', 'M', '10/03/1977', 2);

12. La fecha de nacimiento Antonio López es incorrecta, la correcta es 23/12/1976

update alumnos set fecha_nacimiento='23/12/1976'where nombre='Antonia' and apellido1='López';

13. Cambiar a Antonia López al curso de código 5.update alumnos set curso=5where nombre='Antonia' and apellido1='López';

Da error al no existir el código 5 del cursoCreamos un curso para que se pueda corregir el cursoinsert into cursos (nombre_curso, cod_curso, dni_profesor, maximo_alumnos, fecha_inicio, fecha_fin, num_horas)values ('Inglés Avanzado', 5, '43215643', 15, '01/11/2000', '30/12/2000', 150);

update alumnos set curso=5where nombre='Antonia' and apellido1='López';

14. Eliminar la profesora Laura Jiménezdelete from profesoreswhere nombre='Laura' and apellido1='Jiménez';

15. Tabla temporal nombre de alumnos

Page 5: Mysql Academia

select nombre_completo=nombre+' '+apellido1+' '+apellido2, dni, direccion, sexo, fecha_nacimiento, curso into nombre_alumnosfrom alumnos;

16. Borrar las tablasDelete * from alumnos;Delete * from cursos;Delete * from profesores;Delete * from nombre_alumnos;