Você está na página 1de 10

1

SQL Consultas Bsicas


Consulta a dados de uma tabela
select lista_atributos
from tabela
[where condio]
Mapeamento para a lgebra relacional
select a
1
, ..., a
n
fromt
where c

a1, ..., an
(
c
(t))
Consulta a uma Tabela
Exemplos
Select CPF, nome
From Pacientes
Where idade > 18

CPF, nome
(
idade> 18
(Pacientes))
Select CPF, nome
From Pacientes

CPF, nome
(Pacientes)
Select *
From Pacientes
Where idade > 18

idade> 18
(Pacientes)
Select *
From Pacientes
(Pacientes)
SQL lgebra
2
Comando SELECT
Facilidades para projeo de informaes
eliminao de duplicatas
tabela coleo
retorno de valores calculados
uso de operadores aritmticos (+,-,*,/)
invocao de funes de agregao
COUNT (contador de ocorrncias [de um atributo])
MAX / MIN (valores mximo / mnimo de um atributo)
SUM (somador de valores de um atributo)
AVG (mdia de valores de um atributo)
Comando SELECT
Eliminao de duplicatas
select [distinct] lista_atributos
...
Exemplo
buscar as especialidades dos mdicos
select distinct especialidade
from Mdicos
3
Comando SELECT
Retorno de valores calculados - Exemplos
quantos grupos de 5 leitos podem ser formados em
cada ambulatrio?
select nroa, capacidade/5 as grupos5
from Ambulatrios

(nroa, grupo5)
(
nroa, capacidade/5
(Ambulatrios))
qual o salrio lquido dos funcionrios (desc. 10%)?
select CPF, salrio (salrio * 0.1) as lquido
from Funcionrios
Comando SELECT
Funo COUNT - Exemplos
informar o total de mdicos ortopedistas
select count(*) as TotalOrtopedistas
from Mdicos
where especialidade = ortopedia
total de mdicos que atendem em ambulatrios
select count(nroa) as Total
from Mdicos
no conta nulos
4
Comando SELECT
Funo SUM - Exemplo
informar a capacidade total dos ambulatrios do
primeiro andar
select sum(capacidade) as TotalAndar1
from Ambulatrios
where andar = 1
Comando SELECT
Funo AVG - Exemplo
informar a mdia de idade dos pacientes de
Florianpolis
select avg(idade) as MediaPacFpolis
from Pacientes
where cidade = Florianpolis
5
Comando SELECT
Funes MAX / MIN - Exemplo
informar o menor e o maior salrio pagos aos
Funcionrios do departamento pessoal com mais
de 50 anos
select min(salrio) as mnimo,
max(salrio) as mximo
from Funcionrios
where depto = Pessoal
and idade > 50
Comando SELECT
Funes de Agregao com distinct
valores duplicados no so computados
exemplos
select count(distinct especialidade)
from Mdicos
select avg(distinct salrio)
from Funcionrios
6
Comando SELECT
Observao sobre as funes de agregao
no podem ser combinadas a outros atributos da
tabela no resultado da consulta
select andar, COUNT (andar)
from Ambulatrios
Clusula WHERE
Facilidades para seleo de dados
busca por padres
clusula [NOT] LIKE
teste de existncia de valores nulos
clusula IS [NOT] NULL
busca por intervalos de valores
clusula [NOT] BETWEEN valor1 AND valor2
teste de pertinncia elemento-conjunto
clusula [NOT] IN
7
Clusula WHERE
Busca por padres
where atributo like padro
% : casa com qq cadeia de caracteres
_ : casa com um nico caractere
[a-f] : casa com qq caractere entre
a e f (SQL-Server)
Exemplos
buscar CPF e nome dos mdicos com inicial M
select CPF, nome
from Mdicos
where nome like M%
Clusula WHERE
Exemplos
buscar nomes de pacientes cujo CPF termina
com 20000 ou 30000
select nome
from Pacientes
where CPF like '%20000
or CPF like '%30000
Observaes
em alguns dialetos SQL, * usado invs de %
no possvel testar padres em atributos
datetime (SQL-Server)
8
Clusula WHERE
Teste de valores nulos - Exemplo
buscar o CPF e o nome dos mdicos que no do
atendimento em ambulatrios
select CPF, nome
from Mdicos
where nroa is null
Clusula WHERE
Busca por intervalos de valores - Exemplo
buscar os dados das consultas marcadas para o
perodo da tarde
select *
from Consultas
where hora between 14:00 and 18:00
9
Clusula WHERE
Teste de pertinncia elemento-conjunto -
Exemplo
buscar os dados das mdicos ortopedistas,
traumatologistas e cardiologistas de Florianpolis
select *
from Mdicos
where cidade = Florianpolis
and especialidade in (cardiologia,
traumatologia,
cardiologia)
Unio de Tabelas
Implementa a unio da lgebra relacional
exige tabelas compatveis
Exemplo
buscar o nome e o CPF dos mdicos e pacientes
select CPF, nome
from Mdicos
union
select CPF, nome
from Pacientes
consultaSQL1 union consultaSQL2 relao1 relao2
SQL lgebra
10
Exerccios
Realizar as seguintes consultas no BD:
1) Buscar o nome e o CPF dos mdicos com menos de 40 anos ou com especialidade
diferente de traumatologia
2) Buscar todos os dados das consultas marcadas no perodo da tarde aps o dia
19/06/2006
3) Buscar o nome e a idade dos pacientes que no residem em Florianpolis
4) Buscar a hora das consultas marcadas antes do dia 14/06/2006 e depois do dia
20/06/2006
5) Buscar o nome e a idade (em meses) dos pacientes
6) Em quais cidades residem os funcionrios?
7) Qual o menor e o maior salrio dos funcionrios da Florianpolis?
10) Qual o horrio da ltima consulta marcada para o dia 13/06/2006?
11) Qual a mdia de idade dos mdicos e o total de ambulatrios atendidos por eles?
12) Buscar o cdigo, o nome e o salrio lquido dos funcionrios. O salrio lquido obtido
pela diferena entre o salrio cadastrado menos 20% deste mesmo salrio
13) Buscar o nome dos funcionrios que terminam com a letra a
14) Buscar o nome e CPF dos funcionrios que no possuam a seqncia 00000 em
seus CPFs
15) Buscar o nome e a especialidade dos mdicos cuja segunda e a ltima letra de seus
nomes seja a letra o
16) Buscar os cdigos e nomes dos pacientes com mais de 25 anos que esto com
tendinite, fratura, gripe e sarampo

Você também pode gostar