consultas básicas em sql
TRANSCRIPT
![Page 1: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/1.jpg)
SQL: consultas básicasLuiz Henrique Zambom Santana
15/09/2016
![Page 2: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/2.jpg)
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
![Page 3: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/3.jpg)
Relembrando...
![Page 4: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/4.jpg)
SQL versus Álgebra relacional
SQL Álgebra relacionalSELECT projeção
FROM produto cartesiano
WHERE seleção
![Page 5: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/5.jpg)
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
![Page 6: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/6.jpg)
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)
![Page 7: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/7.jpg)
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
![Page 8: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/8.jpg)
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
![Page 9: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/9.jpg)
SELECT (Projeções)● Podemos recuperar valores únicos usando o operador DISTINCT
SELECT distinct especialidade FROM Medicos
![Page 10: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/10.jpg)
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
![Page 11: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/11.jpg)
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
![Page 12: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/12.jpg)
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
![Page 13: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/13.jpg)
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)
![Page 14: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/14.jpg)
WHERE● O comando equivalente a operação de seleção da álgebra relacional
SELECT *FROM MedicosWHERE idade > 40
![Page 15: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/15.jpg)
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’
![Page 16: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/16.jpg)
SELECT e WHERE (Álgebra relacional)
πespecialidade (σ(idade> 40 ∧ idade ≤ 52) ∨ cidade = ‘Blumenau’ ∧ nome ≠ ‘Marcia’ (Medicos))
![Page 17: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/17.jpg)
WHERE● Podemos usar o operador BETWEEN para definir um intervalo de valores
SELECT dataFROM ConsultasWHEREdata BETWEEN ‘2010/10/11’AND ‘2010/10/13’
![Page 18: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/18.jpg)
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
![Page 19: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/19.jpg)
WHERE● Podemos usar o operador LIKE para definir um padrão de busca
SELECT nomeFROM MedicosWHERE especialidadeLIKE ‘%dia%’
![Page 20: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/20.jpg)
WHERE● Podemos verificar se um valor é NULO
SELECT nomeFROM MedicosWHERE nroaIS NOT NULL
![Page 21: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/21.jpg)
WHERE● Podemos também verificar uma enumeração de valores com o operador IN
SELECT nomeFROM MedicosWHERE especialidadeIN (‘ortopedia’,‘pediatria’);
![Page 22: Consultas básicas em SQL](https://reader036.vdocuments.com.br/reader036/viewer/2022082215/58edf36d1a28ab59368b45ed/html5/thumbnails/22.jpg)
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