Upload
luiz-henrique-zambom-santana
View
162
Download
1
Embed Size (px)
Citation preview
SQL: consultas básicasLuiz Henrique Zambom Santana
15/09/2016
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
Relembrando...
SQL versus Álgebra relacional
SQL Álgebra relacionalSELECT projeção
FROM produto cartesiano
WHERE seleção
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> ] ;
Comandosbásicos
SELECT (Álgebra relacional)
πlista_atributos (relação)
● atributos separados por vírgula ● relação● resultado de alguma operação da
álgebra relacional
πnome, idade (Medicos)
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
SELECT (Projeções)● Produz um subconjunto vertical com as colunas solicitadas ● Define uma lista de atributos (colunas) das tabelas consultadas● Exemplo:
SELECT nome,idadeFROM Medicos
SELECT (Projeções)● Podemos recuperar valores únicos usando o operador DISTINCT
SELECT distinct especialidade FROM Medicos
Exercícios1. Recuperar os nomes de todos pacientes2. Recuperar os nomes de todos médicos3. Recuperar os nomes de todos funcionários4. Recuperar todos atributos de todos pacientes5. Recuperar todos atributos de todas consultas6. Recuperar sem repetições todas cidades dos pacientes
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
Exercícios7. Recuperar a maior idade entre os pacientes8. Recuperar a menor idade entre os pacientes9. Recuperar a média de idade entre os pacientes
10. Contar o número de consultas11. Recuperar a maior idade, a menor idade e a média de idade entre os
funcionários12. Recuperar o valor total da folha de pagamento dos funcionários
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)
WHERE● O comando equivalente a operação de seleção da álgebra relacional
SELECT *FROM MedicosWHERE idade > 40
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 especialidadeFROM MedicosWHERE(idade > 40 ANDidade <= 52) ORcidade = ‘Blumenau’ AND nome <> ‘Marcia’
SELECT e WHERE (Álgebra relacional)
πespecialidade (σ(idade> 40 ∧ idade ≤ 52) ∨ cidade = ‘Blumenau’ ∧ nome ≠ ‘Marcia’ (Medicos))
WHERE● Podemos usar o operador BETWEEN para definir um intervalo de valores
SELECT dataFROM ConsultasWHEREdata BETWEEN ‘2010/10/11’AND ‘2010/10/13’
Exercícios13. Recuperar os médicos com idade maior que 5014. Recuperar os pacientes com idade maior que 30 e menor que 5015. Recuperar os médicos de São José16. Recuperar os ambulatórios com capacidade maior que 3017. Recuperar os pacientes com gripe18. Recuperar os traumatologistas de Blumenau19. Recuperar os pacientes de Florianópolis com gripe e idade maior que 3020. Recuperar as datas das consultas entre entre as 15 e as 18 horas
WHERE● Podemos usar o operador LIKE para definir um padrão de busca
SELECT nomeFROM MedicosWHERE especialidadeLIKE ‘%dia%’
WHERE● Podemos verificar se um valor é NULO
SELECT nomeFROM MedicosWHERE nroaIS NOT NULL
WHERE● Podemos também verificar uma enumeração de valores com o operador IN
SELECT nomeFROM MedicosWHERE especialidadeIN (‘ortopedia’,‘pediatria’);
Exercícios21. Recuperar os médicos cujo nome comece com ‘Ma’22. Recuperar os funcionários cujo nome comece com ‘Ca’23. Recuperar pacientes cujo CPF é nulo24. Recuperar pacientes cuja cidade seja Joinville ou Blumenau