Vous êtes sur la page 1sur 7

Universidad Abierta Para Adultos.

Asignatura

Sistema de Base de Datos II

Facilitador

Tomas Franquelis Ramirez Perez


Participante

Emmanuel Antonio Beltré Silverio

Matricula

17-4219

Junio 17 del 2019


Santiago de Los Caballero
Saludos,

De la base de datos creada la semana pasada realizar las siguientes consultas:

1. Devuelve un listado con el número de asignaturas que imparte cada profesor. El


listado debe tener en cuenta aquellos profesores que no imparten ninguna asignatura.
El resultado mostrará cinco columnas: id, nombre, primer apellido, segundo apellido
y número de asignaturas. El resultado estará ordenado de mayor a menor por el
número de asignaturas.

2. Devuelve todos los datos del alumno más joven.

3. Devuelve un listado con los departamentos que no tienen profesores asociados.

4. Devuelve un listado con las asignaturas que no tienen un profesor asignado.

5. Crear un procedimiento almacenado que inserte un registro en la tabla


persona(Alumno o profesor y creo dichas tablas)

6. Crear un procedimiento almacenado que devuelva un listado con todos los


departamentos que no han impartido asignaturas en ningún curso escolar.
CREATE
create database UAPA
USE UAPA

create table ESTUDIANTE(


ID_estudi INT NOT NULL UNIQUE,
nif varchar (10),
Cedula VARCHAR (11) NOT NULL UNIQUE,
Nombre VARCHAR (30) NOT NULL,
Apellido1 VARCHAR (40) NOT NULL,
Apellido VARCHAR (40),
Ciudad VARCHAR (50),
Direccion VARCHAR (50),
Telefono VARCHAR (12) NOT NULL,
F_nac DATE NOT NULL,
sexo varchar(1) NOT NULL CHECK (sexo IN ('M', 'F')))
alter table ESTUDIANTE
add primary key (ID_estudi)

create table DEPARTAMENTO(


ID_depart int identity (1,1) not null PRIMARY KEY,
nombre VARCHAR (50) not null);

create table PROFESOR(


ID_profe INT NOT NULL UNIQUE,
cedula VARCHAR (13) NOT NULL UNIQUE,
nombre varchar (30) NOT NULL,
apellido1 varchar (40) NOT NULL,
apellido2 varchar(40) NOT NULL,
ciudad varchar (50),
direccion varchar(50) NOT NULL,
telefono varchar(12) NOT NULL,
fecha_nacimiento date NOT NULL,
sexo varchar(2) NOT NULL CHECK (sexo IN ('M', 'F')),
ID_depart INT FOREIGN KEY REFERENCES DEPARTAMENTO (ID_depart))
alter table PROFESOR
add primary key (ID_profe)

Create table GRADO(


ID_Grado INT IDENTITY (1,1) NOT NULL UNIQUE,
Nombre VARCHAR (50)NOT NULL)
Alter table GRADO
add primary key (ID_Grado)

Create table ASIGNATURA(


ID_Asig INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
Nombre VARCHAR (40) NOT NULL,
tipo varchar(10) NOT NULL CHECK (tipo IN ('Presencial','Virtual')),
Creditos FLOAT NOT NULL,
Curso TINYINT NOT NULL,
Cuatrimestre VARCHAR (2) NOT NULL,
ID_profe INT FOREIGN KEY REFERENCES PROFESOR(ID_profe) ,
ID_grado INT NOT NULL FOREIGN KEY REFERENCES GRADO (ID_grado));

Create table CURSO_ESCOLAR


(ID_cur_esco INT IDENTITY (1,1) NOT NULL UNIQUE,
Ano_inicio Date NOT NULL,
Ano_fin Date NOT NULL)
alter table CURSO_ESCOLAR
add primary key (ID_cur_esco)

Create table ALUMNOvsASIGNATURA


(ID_estudi INT NOT NULL FOREIGN KEY REFERENCES ESTUDIANTE (ID_estudi),
ID_Asig INT NOT NULL FOREIGN KEY REFERENCES ASIGNATURA (ID_Asig),
ID_cur_esco INT NOT NULL FOREIGN KEY REFERENCES CURSO_ESCOLAR (ID_cur_esco))

INSERT
INSERT INTO DEPARTAMENTO(nombre)
VALUES('Ciencia y Educacion'),
('Turismo'),
('Registro'),
('Investigación y Divulgación Científica'),
('Voluntariado'),
('Sociedad ecológica'),
('Servicio Social Universitario'),
('Ciclo Básico');
GO

INSERT INTO GRADO (Nombre)


VALUES('Ingeniería Informática (Plan 2015)'),
('Mercadeo (Plan 2015) '),
('Psicologia (Plan 2015)'),
('agrimensura (Plan 2015)');
go

INSERT INTO PROFESOR (ID_profe, cedula, nombre ,apellido1, apellido2 , ciudad,


direccion, telefono, fecha_nacimiento, sexo, ID_depart)
VALUES (140367,'40211811983', 'DIOGENES','MARTINEZ','AIBAR','Santiago de los
Caballeros','el Ensanchez','8097265345','09/06/1980','M',1),
(150243,'03138753793', 'Jordi','Moran','Perez','Santiago de los
Caballeros','Villa Mella','8099376543','11/09/1985','M',1),
(120113,'03196754331', 'Ilda','Estrella','Cruz','La Vega','Carretera El
Mape','8298869792','12/01/1972','F',7),
(174264,'40262144381', 'Tomas Franquelis ','Ramirez','Perez','Santiago de los
Caballeros','Los Cerros de Gurabo','8496025532','04/04/1991','M',8),
(110000,'031927366', 'Tomas','MARTINEZ','Rodriguez','Santiago de los
Caballeros','el Ensanchez','8097265345','09/06/1980','M',1)
go

INSERT INTO PROFESOR (ID_profe, cedula, nombre ,apellido1, apellido2 , ciudad,


direccion, telefono, fecha_nacimiento, sexo)
VALUES (190000,'03184762538', 'Nathaly','Tolentino','Fereira','San
Cristobal','Cabo arriba','8499846657','11/02/1992','F'),
(187665,'87265344123', 'Samanta','Estevez','De Sanchez','Samaná','La
Mojica','8490287635','02/02/1993','F')
INSERT INTO PROFESOR (ID_profe, cedula, nombre ,apellido1, apellido2 , ciudad,
direccion, telefono, fecha_nacimiento, sexo)
VALUES (140000,'4021188343', 'Juan ','Isidro','Alvarez','San Pedro de
Macoris','La Sienaga','8097265342','01/07/1994','M'),
(15000,'03126547289', 'Rafelina','Cruz','Rodriguez','Maimon','Cao
Nao','8497611233','12/05/1988','F')

INSERT INTO ESTUDIANTE (ID_estudi,nif, Cedula, Nombre, Apellido1, Apellido,


Ciudad, Direccion, Telefono, F_nac, sexo)
VALUES(174219,'87214656M',40211811969,'Emmanuel','Beltré','Silverio','Santiago de
Los Caballeros','Los Llanos de Gurabo','8098869792','24/09/1996','M'),
(174232,'26902806M', 4027365212,'Stacy','Malibú','Smith','Santo Domingo','Los
Caches','8099287475','14/02/1998','F'),
(172214,'26902806M', 03137626385,'Daniela','Diaz','Selevino','La Vega','El Prado
Arriba','8496036557','11/12/1994','F'),
(177363,'87214656M', 40234568343,'Franchesca','Bermudez','Contreras','Santiago de
los Caballeros','Cien Fuego','8095829792','03/09/1997','F')
GO
INSERT INTO ESTUDIANTE (ID_estudi,nif, Cedula, Nombre, Apellido1, Apellido,
Ciudad, Direccion, Telefono, F_nac, sexo)
VALUES(172345,'23673236J',40286744530,'Arturo','Camil','Silvante','Santiago de
Los Caballeros','Cien fuego','8097265534','12/03/1999','M'),
(196345,'23623872H',40201922376,'Lanna','Abreu','Cameron','Santiago de Los
Caballeros','Cerro Alto','8099288873','03/03/1999','M')

INSERT INTO ASIGNATURA (Nombre, tipo, Creditos, Curso, Cuatrimestre, ID_profe,


ID_grado)
VALUES('Comercio II','Presencial',2, 11,'1',120113, 2),
('Ser Humano y Su Contexto','Virtual',3,12,'2',120113, 3),
('Programacion 2','Presencial',4,23,'1',140367, 1),
('Sistema de Base De Datos I','Presencial',4,25,'2',150243, 1),
('Ingenieria En Software II','Presencial',4,26,'1',174264, 1),
('Astronomia', 'Virtual', 4, 2,'2',110000,2)
go
INSERT INTO ASIGNATURA (Nombre, tipo, Creditos, Curso, Cuatrimestre,
ID_profe,ID_grado)
VALUES('Agrimensura 2','Virtual',3, 22,'2',190000,4),
('Español 1','Presencial',4, 16,'1',187665,3)

INSERT INTO ASIGNATURA (Nombre, tipo, Creditos, Curso, Cuatrimestre,ID_grado)


VALUES('Ser Humano y Su Contexto','Virtual',3, 11,'1',3),
('Español 2','Presencial',4, 16,'2',3),
('Ventas 2','Presencial',3, 08,'1',2),
('Informatica Gerencia','Presencial',3, 09,'1',1),
('Mercadeo 2','Virtual',4, 15,'2',2),
('Psicologia Clinica','Presencial',4, 26,'2',3)

INSERT INTO CURSO_ESCOLAR (Ano_inicio, Ano_fin)


VALUES('09/01/2016','17/12/2016'),
('09/01/2017','17/12/2017'),
('09/01/2018','17/12/2018'),
('09/01/2019','17/12/2019')
go

INSERT INTO ALUMNOvsASIGNATURA (ID_estudi, ID_Asig, ID_cur_esco)


VALUES(174219,3,4),
(174219,4,4),
(174219,5,4),
(177363,5,4),
(177363,2,4),
(172214,1,3),
(174219,2,4),
(174232,4,3),
(174232,2,3),
(174232,5,4)

go

CONSULTAS
--1. Devuelve un listado con el número de asignaturas que imparte cada profesor.
--El listado debe tener en cuenta aquellos profesores que no imparten ninguna
asignatura.
--El resultado mostrará cinco columnas: id, nombre, primer apellido, segundo
apellido y número de asignaturas.
select p.ID_profe, p.nombre, p.apellido1, p.apellido2, count (p.ID_profe) as
num_asignatura
from asignatura asig
right join profesor p on p.ID_profe = asig.id_profe
group by p.ID_profe, p.nombre, p.apellido1, p.apellido2, asig.id_profe
order by num_asignatura desc

--2. Devuelve todos los datos del alumno más joven.


--SELECT * from ESTUDIANTE order by F_nac DESC
select top 5 * from ESTUDIANTE order by F_nac DESC

--3.Devuelve un listado con los departamentos que no tienen profesores asociados.

SELECT dep.nombre, dep.ID_depart


FROM profesor pro_right join departamento dep
on pro.ID_depart = dep.ID_depart
where pro.ID_depart is null

--4. Devuelve un listado con las asignaturas que no tienen un profesor asignado.
Select * from ASIGNATURA
where ID_profe is null

select * from PROFESOR


--5. Crear un procedimiento almacenado que inserte un registro en la tabla
persona(Alumno o profesor y creo dichas tablas)

CREATE Procedure PROCEDIMIENTO_INSERTAR


(
@ID_profe int,
@cedula varchar(13),
@nombre varchar (30),
@apellido1 varchar(40),
@apellido2 varchar(40),
@ciudad varchar(50),
@direccion varchar(50),
@telefono varchar(12),
@fecha_nac date,
@sexo varchar(2),
@ID_depart int
)
as
begin
insert into PROFESOR(
[ID_profe], [cedula], [nombre], [apellido1], [apellido2], [ciudad], [direccion],
[telefono], [fecha_nacimiento],[sexo],[id_depart])
values (@ID_profe, @cedula, @nombre, @apellido1, @apellido2, @ciudad,
@direccion, @telefono, @fecha_nac,@sexo,@id_depart)
end
GO
EXEC PROCEDIMIENTO_INSERTAR 0100000,
'40210029376','Cristina','Rodriguez','Pagan','Santiago','Cien
Fuego','8097652253','11/08/1992','f',3

--6. crear un procedimiento almacenado que devuelva un listado con todos los
departamentos
--que no han impartido asignaturas en ningún curso escolar.

CREATE proc DEVUELTA


as
select dep.Nombre
FROM Profesor pro
inner join Departamento dep on dep.ID_depart = pro.ID_depart

left join Curso_Escolar curs on curs.ID_cur_esco = pro.ID_profe

WHERE

curs.ID_cur_esco is null
return
go
EXEC DEVUELTA

Vous aimerez peut-être aussi