Consultas básicas em SQL

Post on 12-Apr-2017

162 views 1 download

Transcript of Consultas básicas em SQL

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