Beruflich Dokumente
Kultur Dokumente
go
--2. En la base de datos crear las siguientes tablas:
--a. Tabla Pacientes con la siguientes columnas:
--i. PacienteID entero clave principal
--ii. Nombre texto requerido.
--iii. Apellidos texto requerido.
--iv. Direccin texto opcional
--v. CodigoPostal texto requerido
--vi. Provincia texto requerido
--vii. Telfono texto opcional
--viii. FechaNacimiento Fecha requerido.
create table Pacientes( PacienteID int not null primary key, Nombre varchar(50) n
otnull, Apellidos varchar(50) not null, Direccin varchar(100) null, CodigoPostal
char(5) not null, Provincia varchar(50) not null, Telefono varchar(12) null,Fecha
Nacimiento Date not null);
go
--b. Tabla Mdicos con la siguientes columnas:
--i. MedicoID entero clave principal
--ii. Nombre texto requerido.
--iii. Apellidos texto requerido.
--iv. Telfono texto requerido.
create table Medicos( MedicoID int not null primary key, Nombre varchar(50) notnu
ll, Apellidos varchar(50) not null, Telefono varchar(12) not null, );
--c. Tabla Ingresos con la siguientes columnas:
--i. NumIngreso entero auto incrementado clave principal
--ii. PacienteID entero requerido clave ajena Pacientes
--iii. Habitacin entero requerido
--iv. Cama texto requerido
--v. FechaIngreso FechaHora requerido
create table Ingresos( NumIngreso int not null identity(1,1) primary key, Pacient
eIDint not null, Habitacion int not null, Cama char(1) not null, FechaIngreso Dat
eTimenot null, constraint Ingresos_PacientesFk Foreign key (PacienteID) reference
sPacientes(PacienteID) );
go
--d. Tabla Especialidades con la siguientes columnas:
--i. EspecialidadID entero clave principal
--ii. Especialidad texto requerido
create table Especialidades( EspecialidadID int not null identity(1,1) primary ke
y,Especialidad varchar(50) not null );
go
--e. Tabla MedicosEspecialidades con la siguientes columnas:
--i. EspecialidadID entero clave principal, clave ajena a Especialidades
--ii. MedicoID entero clave principal clave ajena a Mdicos
create table MedicosEspecialidades ( EspecialidadID int not null, MedicoID int no
tnull, constraint MedicosEspecialidadesPK primary key (EspecialidadID, MedicoID),
constraint MedicosEspecialidades_EspFK foreign key (EspecialidadID) referencesEsp
ecialidades(EspecialidadID), constraint MedicosEspecialidades_MedFK foreign key(M
edicoID) references Medicos(MedicoID), );
go
alter table Pacientes add constraint ProvinciaDEF Default 'Alicante' for Provincia
;
go
--b. El Telfono tiene que empezar por 9.
alter table Pacientes add constraint TelefonoCheck Check (Telefono like '9%'); go
--4. Crear las siguientes restricciones en la tabla Ingresos:--a. El campo cama
solo puede tener o P o V.
alter table Ingresos add constraint CamaCheck Check (Cama in ('P', 'V'));
go
--b. El valor por defecto del campo FechaIngreso es la fecha y hora
actual. altertable Ingresos add constraint FechaIngresoDef Default getDate() for F
echaIngreso;
Go
--5. Insertar datos en la tabla Pacientes.
insert into Pacientes( PacienteID, Nombre, Apellidos, CodigoPostal, Provincia,Tele
fono, FechaNacimiento ) values(100,'Jos','Romero','28935','Murcia','912563256','
12/03/1975'),(101,'Juan','Romero','28935','Murcia','912563256','12/03/1975'),(102
,'Carmen','Gmez','28936','Alicante','9125631110','12/09/2012'),(103,'Mara','Rom
ero','28935','Murcia','912563222','15/03/1985'),(110,'Alberto','Saboya','28935','
Murcia','912563333','12/08/1975'),(120,'Jaime','Perles','28936','Alicante','91356
3444','17/03/1975'),(130,'Jos','Romero','28935','Alicante','913563555','12/03/19
95'),(131,'Ana','Martin','28935','Murcia','913563666','17/06/1975'),(140,'Carlos'
,'Romero','28936','Alicante','912563256','12/03/1995'),(141,'Pedro','Perles','289
38','Alicante','912563777','11/05/1993'),(150,'Jos','Alamar','28935','Alicante',
'913563256','12/03/1975');
go--6. Insertar datos en la tabla Mdicos.
go
insert into MedicosEspecialidades( MedicoID, EspecialidadID) values (1,1), (2,2),
(3,1),(3,3),(4,1), (4,4), (5,3), (5,5), (6,3), (6,6);
go
--7.
go
--9. Mostar el nombre del paciente con ms ingresos en el ao 2010
select top 1 p.Nombre, p.Apellidos, COUNT(i.NumIngreso) as NumIngresos fromPacien
tes p inner join Ingresos i on p.PacienteID = i.PacienteID whereDATEPART(year, i.
fechaingreso) = 2010 group by p.Nombre, p.Apellidos order byNumIngresos desc
go
--10. Mostrar los pacientes que no han tenido ingresos.
select * from Pacientes p where p.PacienteID not in ( select distinct PacienteIDf
rom Ingresos)
go
--11. Mostrar los pacientes que han estado en la habitacin 101.
select distinct p.PacienteID, p.Nombre, p.Apellidos from Pacientes p inner joinIn
gresos i on p.PacienteID = i.PacienteID where i.Habitacion = 101
go
--12 Crear lo necesaria para almacenar esta informacin.
create table Visitas( NumVisita int not null identity(1,1) primary key, PacienteI
Dint not null, MedicoID int not null, Fecha date not null, Diagnostico varchar(50
)not null, Tratamiento varchar(100) not null, constraint Visitas_PacintesFK forei
gnkey (PacienteID) references pacientes(PacienteId),
constraint Visitas_MedicosFK foreign key (MedicoID) references Medicos(MedicoID))
;
go
insert into Visitas(PacienteID,MedicoID, Fecha , Diagnostico,Tratamiento) values(
100,2,'12/06/2010','Posible Loco','Ingresar para
seguimiento'),(100,5,'15/06/2010','Heridas','Tratar con
antibiticos'),(102,1,'19/06/2010','Gastroenteritis','Tratar antibiticos y
suero'),(131,6,'20/06/2010','Infeccin','Tratar antibiticos y revisin 1
mes'),(150,2,'22/06/2010','Depresin','Tratar con
antidepresivos'),(131,6,'12/07/2010','revisin','Alta');
go
--13. Mostrar un listado de los pacientes de Psiquiatra,
--incluyendo la fecha y el diagnostico.
select p.Nombre , p.Apellidos, v.Fecha, v.Diagnostico from Pacientes p inner join
Visitas v on p.PacienteID = v.PacienteID inner join Medicos m on m.MedicoID =v.Me
dicoID inner join MedicosEspecialidades me on m.MedicoID = me.MedicoID innerjoin
Especialidades e on e.EspecialidadID = me.EspecialidadID where e.Especialidad ='P
siquiatra'