Você está na página 1de 4

/*Exercícios – Dado o esquema relacional*/

drop table ambulatorio;


drop table cidade;
drop table consulta;
drop table doenca;
drop table especialidade;
drop table funcionario;
drop table medico;
drop table paciente;

create table ambulatorio (


numeroa integer,
andar integer,
capacidade integer,
primary key (numeroa)
);

create table cidade (


codcidade integer,
descricao varchar(30),
uf varchar(2),
primary key (codcidade)
);

create table consulta (


crm integer,
rg integer,
data date,
hora integer,
coddoenca integer,
constraint pk_consulta primary key (crm, rg, data),
constraint consulta_medico_fkey foreign key (crm)
references medico (crm) on update restrict on delete restrict,
constraint consulta_paciente_fkey foreign key (rg)
references paciente (rg) on update restrict on delete restrict,
constraint consulta_doenca_fkey foreign key (coddoenca)
references doenca (coddoenca) on update restrict on delete restrict
);

create table doenca (


coddoenca integer,
descricao varchar(30),
constraint pk_doenca primary key (coddoenca)
);

create table especialidade (


codesp integer,
nome varchar(30),
primary key (codesp)
);

create table funcionario (


rg integer,
nome varchar(30),
idade integer,
codcidade integer,
salario float,
constraint pk_funcionario primary key (rg),
constraint funcionario_cidade_fkey foreign key (codcidade)
references cidade (codcidade) on update restrict on delete restrict
);

create table medico (


crm integer,
nome varchar(30),
idade integer,
codcidade integer,
codesp integer,
numeroa integer,
primary key (crm),
foreign key (codcidade) references cidade (codcidade)
on update restrict on delete restrict,
foreign key (codesp) references especialidade (codesp)
on update restrict on delete restrict,
foreign key (numeroa) references ambulatorio (numeroa)
on update restrict on delete restrict
);

create table paciente (


rg integer,
nome varchar(30),
idade integer,
codcidade integer,
constraint pk_paciente primary key (rg),
constraint paciente_cidade_fkey foreign key (codcidade)
references cidade (codcidade) on update restrict on delete restrict
);

insert into ambulatorio (andar, capacidade) values (1, 100);


insert into ambulatorio (andar, capacidade) values (1, 10);
insert into ambulatorio (andar, capacidade) values (2, 120);
insert into ambulatorio (andar, capacidade) values (3, 50);
insert into ambulatorio (andar, capacidade) values (4, 70);
insert into ambulatorio (andar, capacidade) values (4, 63);
insert into ambulatorio (andar, capacidade) values (5, 30);
insert into ambulatorio (andar, capacidade) values (5, 140);
insert into ambulatorio (andar, capacidade) values (5, 110);

insert into cidade (descricao, uf) values ('Angelina', 'SC');


insert into cidade (descricao, uf) values ('Biguacu', 'SC');
insert into cidade (descricao, uf) values ('Palhoca', 'SC');
insert into cidade (descricao, uf) values ('São Jose', 'SC');
insert into cidade (descricao, uf) values ('Florianopolis', 'SC');

insert into consulta values (12345, 12312, date('2015-01-03'), 14, 1);


insert into consulta values (12133, 13123, date('2015-01-05'), 15, 1);
insert into consulta values (65464, 34345, date('2015-02-01'), 16, 1);
insert into consulta values (65464, 45645, date('2015-02-03'), 17, 1);
insert into consulta values (23424, 67867, date('2015-03-03'), 18, 1);
insert into consulta values (85675, 56757, date('2015-04-22'), 20, 2);
insert into consulta values (12345, 35435, date('2015-05-24'), 10, 2);
insert into consulta values (12133, 53453, date('2015-05-23'), 11, 2);
insert into consulta values (23424, 64758, date('2015-05-29'), 12, 2);
insert into consulta values (85675, 97865, date('2015-05-30'), 14, 2);
insert into consulta values (12345, 12312, date('2014-06-03'), 14, 1);
insert into consulta values (12133, 13123, date('2014-06-05'), 15, 1);
insert into consulta values (65464, 34345, date('2014-06-01'), 16, 1);
insert into consulta values (65464, 45645, date('2014-07-03'), 17, 1);
insert into consulta values (23424, 67867, date('2014-08-03'), 18, 1);
insert into consulta values (85675, 56757, date('2014-08-22'), 20, 2);
insert into consulta values (12345, 35435, date('2014-10-24'), 10, 2);
insert into consulta values (12133, 53453, date('2014-11-23'), 11, 2);
insert into consulta values (23424, 64758, date('2013-12-29'), 12, 2);
insert into consulta values (85675, 97865, date('2013-12-30'), 14, 2);

insert into doenca (descricao) values ('sarampo');


insert into doenca (descricao) values ('rubeola');

insert into especialidade (nome) values ('Ortopedia');


insert into especialidade (nome) values ('Infectologia');

insert into funcionario values (2324234, 'João Ramos', 55, 1, 1200);


insert into funcionario values (3454464, 'Bianca Silva', 23, 2, 500);
insert into funcionario values (4343242, 'Ana Duarte', 34, 3, 550);
insert into funcionario values (4565756, 'Mariana Souza', 44, 4, 601);
insert into funcionario values (8678678, 'Daniel Ventura', 23, 5, 1900);
insert into funcionario values (4563434, 'João Ramos', 54, 5, 2000);

insert into medico values (12345, 'João da Silva', 39, 1, 2, 2);


insert into medico values (12133, 'Camila da Silva Santos', 45, 2, 1, 1);
insert into medico values (65464, 'João dos Santos', 35, 3, 2, 3);
insert into medico values (23424, 'Jose da Silva', 55, 4, 1, 5);
insert into medico values (85675, 'Joana Vieira', null, 3, 2, 7);

insert into paciente values (12312, 'Camila Vieira', 12, 1);


insert into paciente values (13123, 'Caio da Silva', 15, 2);
insert into paciente values (34345, 'Joana Pereira', 7, 3);
insert into paciente values (45645, 'Não Informado', 9, 4);
insert into paciente values (67867, 'Tiago Santos', 14, 5);
insert into paciente values (56757, 'Guilherme Vieira', 12, 1);
insert into paciente values (35435, 'Não Informado', 11, 2);
insert into paciente values (53453, 'Renata Salvador', 9, 3);
insert into paciente values (64758, 'Jessica Souza', 10, 4);
insert into paciente values (97865, 'Bianca Souza', 10, 5);

/*1) BUSCAR OS DADOS DOS PACIENTES QUE ESTÃO COM SARAMPO*/


SELECT * FROM Paciente INNER JOIN Consulta ON Paciente.RG = Consulta.RG INNER JOIN
Doenca ON Consulta.codDoenca = Doenca.codDoenca WHERE descricao LIKE 'SARAMPO'

/*2) BUSCAR OS DADOS DOS MÉDICOS ORTOPEDISTAS COM MAIS DE 40 ANOS*/


SELECT * FROM Medico INNER JOIN Especialidade ON Medico.codEspec =
Especialidade.codEspec WHERE Medico.idade > 40 Especialidade.nome = 'ortopedista'

/*3) BUSCAR OS DADOS DAS CONSULTAS, EXCETO AQUELAS MARCADAS PARA OS MÉDICOS COM CRM
46 E 79*/
SELECT * FROM Consulta WHERE CRM != '46' AND -- OR <> CRM = '79'

/*4) BUSCAR OS DADOS DOS AMBULATÓRIOS DO QUARTO ANDAR QUE OU TENHAM CAPACIDADE
IGUAL A 50 OU TENHAM NÚMERO SUPERIOR A 10*/
SELECT * FROM Ambulatorio WHERE andar = 4 AND nroAmb > = 10 OR capacidade =
50

/*5) BUSCAR O NOME E A ESPECIALIDADE DE TODOS OS MÉDICOS*/


SELECT medico.nome,especialidade.nome FROM medico,especialidade WHERE medico.codesp
= especialidade.codesp;
/*6) BUSCAR O NÚMERO DOS AMBULATÓRIOS DO TERCEIRO ANDAR*/
SELECT numeroa FROM ambulatorio WHERE andar = 3;

/*7) BUSCAR O CRM DOS MÉDICOS E AS DATAS DAS CONSULTAS PARA OS PACIENTES COM RG 122
E 725*/
SELECT crm, DATA FROM consulta WHERE rg = 122 OR rg = 725;

/*8) BUSCAR OS NÚMEROS DOS AMBULATÓRIOS, EXCETO AQUELES DO SEGUNDO E QUARTO


ANDARES, QUE SUPORTAM MAIS DE 50 PACIENTES*/
SELECT numeroa FROM ambulatorio WHERE capacidade > 50 AND andar != 2 AND andar !=
4;

/*9) BUSCAR O NOME DOS MÉDICOS QUE TÊM CONSULTA MARCADA E AS DATAS DAS SUAS
CONSULTAS*/
SELECT nome,DATA FROM medico,consulta WHERE medico.crm = consulta.crm;

/*10) BUSCAR O NÚMERO E A CAPACIDADE DOS AMBULATÓRIOS DO QUINTO ANDAR E O NOME DOS
MÉDICOS QUE ATENDEM NELES*/
SELECT ambulatorio.numeroa,capacidade,nome FROM ambulatorio,medico WHERE
ambulatorio.numeroa = medico.numeroa AND ambulatorio.andar = 5;

/*11) BUSCAR O NOME DOS MÉDICOS E O NOME DOS SEUS PACIENTES COM CONSULTA MARCADA,
ASSIM COMO A DATA DESTAS CONSULTAS*/

/*12) BUSCAR OS NOMES DOS MÉDICOS ORTOPEDISTAS COM CONSULTAS MARCADAS PARA O
PERÍODO DA MANHÃ (7HS-12HS) DO DIA 15/04/03*/

/*13) BUSCAR OS NOMES DOS PACIENTES, COM CONSULTAS MARCADAS PARA OS MÉDICOS JOÃO
CARLOS SANTOS OU MARIA SOUZA, QUE ESTÃO COM PNEUMONIA*/

Você também pode gostar