Você está na página 1de 8

Linguagem SQL Intermediria

Operadores Relacionais

Vrias consultas em um BD podem


envolver duas ou mais tabelas;
A linguagem SQL possibilita a combinao
de vrios dados de diferentes tabelas em
uma nica consulta atravs do operador
JOIN.
1

Linguagem SQL Intermediria

Exemplo 1:
Selecionar o nome de todos os mdicos e a descrio de sua especialidade:
SELECT med.nom_med, esp.dsc_esp
FROM medico med
JOIN especialidade esp
ON (esp.cod_esp = med.cod_esp)
ORDER BY med.nom_med

Exemplo 2:
Selecionar o nome de todos os pacientes e o nome da clnica onde esto:
SELECT pac.nom_pac, cli.nom_cli
FROM paciente pac
JOIN clinica cli
ON (cli.cnpj_cli = pac.cnpj_cli)
ORDER BY pac.nom_pac

Linguagem SQL Intermediria

Exemplo 3:
Selecionar a descrio de todas as especialidades e o nome dos mdicos ligados a ela:
SELECT med.nom_med, esp.dsc_esp
FROM medico med
JOIN especialidade esp
ON (esp.cod_esp = med.cod_esp)
ORDER BY med.nom_med

Exemplo 4:
Selecionar o nmero e o andar de todos os quartos (a partir do 3 andar) e o nome do paciente que
possa estar ligado a eles:
SELECT qua.num_qua, qua.num_and, pac.nom_pac
FROM quarto qua
RIGHT JOIN paciente pac
ON (qua.cpf_pac = pac.cpf_pac)
WHERE qua.num_and >= 3
ORDER BY qua.num_and, qua.num_qua

Linguagem SQL Intermediria


Subconsultas

So consultas que possuem na clusula


WHERE novas consultas aninhadas.

Linguagem SQL Intermediria

Exemplo 1:
Selecionar o cpf e o nome do paciente que possui a maior data de
nascimento:
SELECT cpf_pac, nom_pac
FROM paciente
WHERE dat_nas = (SELECT MAX(dat_nas) FROM paciente)

Exemplo 2:
Selecionar o crm e o nome do mdico que possui o menor salrio da clnica:
SELECT crm_med, nom_med
FROM medico
WHERE val_sal = (SELECT MIN(val_sal) FROM medico)

Linguagem SQL Intermediria

Exemplo 3 (Pode-se utilizar subconsultas ao invs de JOIN):


Selecionar o cpf e o nome do paciente que teve pelo menos um tratamento
no ltimo ano:
SELECT cpf_pac, nom_pac
FROM paciente
WHERE cpf_pac IN (SELECT cpf_pac
FROM tratamento
WHERE dat_ini BETWEEN '01/02/2006' AND '01/02/2006')

Exerccio:
E se fosse pedido para selecionar todos os pacientes que no tiveram
tratamento no ltimo ano?

Linguagem SQL Intermediria


Agrupamento de dados nas consultas:

Exemplo 1:
Selecione o cdigo da especialidade e a quantidade de mdicos
que esto cadastrados nela:
SELECT cod_esp, COUNT(crm_med) AS Qtd Mdicos
FROM formacao
GROUP BY cod_esp

Exerccio:
E se fosse pedido para selecionar somente as especialidades com
mais de 2 mdicos cadastrados nela?

Linguagem SQL Intermediria


Agrupamento de dados nas consultas:

Exerccio:
SELECT cod_esp, COUNT(crm_med) AS Qtd
Mdicos
FROM formacao
GROUP BY cod_esp
HAVING COUNT(crm_med) > 2
8