O documento apresenta uma introdução sobre consultas básicas em SQL, incluindo os comandos SELECT, FROM e WHERE para selecionar dados de uma tabela. Ele também discute funções agregadas como COUNT, MIN, MAX e AVG que podem ser usadas com SELECT, e operadores lógicos e de comparação para o comando WHERE. O documento termina com exercícios de exemplo para praticar os conceitos apresentados.
2. Agenda
● SELECT-FROM-WHERE básico sobre uma única tabela
● Explorando as cláusulas
○ SELECT
■ Projeção
■ Distinct
■ COUNT, MIN, MAX, AVG, SUM
○ WHERE
■ Intervalos
■ LIKE
■ IS NULL
■ IN
4. SQL versus Álgebra relacional
SQL Álgebra relacional
SELECT projeção
FROM produto cartesiano
WHERE seleção
5. SELECT-FROM-WHERE
SELECT <projeção e funções>
FROM <lista de tabelas>
[ WHERE predicado ]
[ GROUP BY <atributos de agrupamento> ]
[ HAVING <condição para agrupamento> ]
[ ORDER BY <lista de atributos> ] ;
Comandos
básicos
7. SELECT
● O comando equivalente a operação de projeção da álgebra relacional
● Operador * equivale a retornar todos atributos da relação
SELECT *
FROM Medicos
8. SELECT (Projeções)
● Produz um subconjunto vertical com as colunas solicitadas
● Define uma lista de atributos (colunas) das tabelas consultadas
● Exemplo:
SELECT nome,idade
FROM Medicos
9. SELECT (Projeções)
● Podemos recuperar valores únicos usando o operador DISTINCT
SELECT distinct especialidade FROM Medicos
10. Exercícios
1. Recuperar os nomes de todos pacientes
2. Recuperar os nomes de todos médicos
3. Recuperar os nomes de todos funcionários
4. Recuperar todos atributos de todos pacientes
5. Recuperar todos atributos de todas consultas
6. Recuperar sem repetições todas cidades dos pacientes
11. Funções (COUNT, MIN, MAX, AVG)
● O comando SELECT também pode receber funções sobre a sua lista de
atributos
SELECT count(*) FROM Medicos
SELECT MIN(idade) FROM Medicos
SELECT MAX(idade) FROM Medicos
SELECT AVG(idade) FROM Medicos
SELECT SUM(capacidade) FROM Ambulatorios
12. Exercícios
7. Recuperar a maior idade entre os pacientes
8. Recuperar a menor idade entre os pacientes
9. Recuperar a média de idade entre os pacientes
10. Contar o número de consultas
11. Recuperar a maior idade, a menor idade e a média de idade entre os
funcionários
12. Recuperar o valor total da folha de pagamento dos funcionários
13. WHERE (Álgebra relacional)
σcondição_seleção
(relação)
● pode envolver operadores de
comparação (=, >, ≥, <, ≤, ≠)
● pode combinar condições
usando-se ∧, ∨, ㄱ
● relação
● resultado de alguma operação da
álgebra relacional
σidade> 40
(Medicos)
14. WHERE
● O comando equivalente a operação de seleção da álgebra relacional
SELECT *
FROM Medicos
WHERE idade > 40
15. WHERE
● Deve conter pelo menos um operador de comparação (=, >, >=, <, <=, <>)
● Os operadores de comparação podem ser combinados com lógica booleana
(AND, OR e NOT)
SELECT especialidade
FROM Medicos
WHERE
(idade > 40 AND
idade <= 52) OR
cidade = ‘Blumenau’ AND
nome <> ‘Marcia’
16. SELECT e WHERE (Álgebra relacional)
πespecialidade
(σ(idade> 40 ∧ idade ≤ 52) ∨ cidade = ‘Blumenau’ ∧ nome ≠ ‘Marcia’
(Medicos))
17. WHERE
● Podemos usar o operador BETWEEN para definir um intervalo de valores
SELECT data
FROM Consultas
WHERE
data BETWEEN ‘2010/10/11’
AND ‘2010/10/13’
18. Exercícios
13. Recuperar os médicos com idade maior que 50
14. Recuperar os pacientes com idade maior que 30 e menor que 50
15. Recuperar os médicos de São José
16. Recuperar os ambulatórios com capacidade maior que 30
17. Recuperar os pacientes com gripe
18. Recuperar os traumatologistas de Blumenau
19. Recuperar os pacientes de Florianópolis com gripe e idade maior que 30
20. Recuperar as datas das consultas entre entre as 15 e as 18 horas
19. WHERE
● Podemos usar o operador LIKE para definir um padrão de busca
SELECT nome
FROM Medicos
WHERE especialidade
LIKE ‘%dia%’
21. WHERE
● Podemos também verificar uma enumeração de valores com o operador IN
SELECT nome
FROM Medicos
WHERE especialidade
IN (‘ortopedia’,
‘pediatria’);
22. Exercícios
21. Recuperar os médicos cujo nome comece com ‘Ma’
22. Recuperar os funcionários cujo nome comece com ‘Ca’
23. Recuperar pacientes cujo CPF é nulo
24. Recuperar pacientes cuja cidade seja Joinville ou Blumenau