O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

PBD Select e restrições para Select

488 visualizações

Publicada em

PBD Select e restrições para Select

Publicada em: Educação
  • Entre para ver os comentários

PBD Select e restrições para Select

  1. 1. SQL – SELECT BANCO DE DADOS Prof.ª M.ª Elaine Cecília Gatto 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 1
  2. 2. Introdução • SQL: • Linguagem do tipo declarativa • Permite ao usuário expressar aquilo que pretende sem ter que entrar em grandes detalhes sobre a localização física dos componentes, etc. 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 2
  3. 3. Introdução • Os usuários apenas indicam aquilo que pretendem sem dizer exatamente de que forma o computador terá que operar para obter os resultados solicitados. • Linguagens declarativas são mais flexíveis: referenciam os seus elementos através de um nome compreensível e não através de uma posição física em disco ou memória 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 3
  4. 4. Introdução • SQL é composta por: • DML: data manipulation language ou linguagem de manipulação de dados (select, insert, etc.) • DDL: data definition language ou linguagem de definição de dados (create, alter, drop, etc) • DCL: data control language ou linguagem de controle de dados (grant, revoke, etc) 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 4
  5. 5. Introdução • SQL é orientada para o processamento de conjuntos (set-based language) • COBOL é orientada a processamento de arquivos • SELECT: comando usado para realizar uma consulta ao banco de dados relacional. 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 5
  6. 6. SELECT • SINTAXE SELECT campo1, campo2, campo3, ... , campoN FROM tabela1, tabela2, ..., tabelaN WHERE condição GROUP BY .... HAVING .... ORDER BY .... 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 6
  7. 7. SELECIONANDO TODOS OS REGISTROS • SINTAXE SELECT codigo, localidade FROM codigopostal; 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 7
  8. 8. SELECIONANDO TODAS AS COLUNAS • SINTAXE SELECT * FROM codigopostal; SELECT * FROM pessoa; • A ordem em que as colunas são apresentadas é a ordem em que elas foram colocadas na CLAUSULA SELECT • Se usar o * é a ordem em que foram criadas 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 8
  9. 9. SELECIONANDO TODAS AS COLUNAS • Se quisermos alterar a ordem de apresentação das colunas na saída da consulta (resultado), então basta colocar os nomes dos campos conforme se deseja • SELECT nome, id, idade, codigopostal, telefone, salario FROM pessoa • Pode-se ainda selecionar mais de uma vez a mesma coluna 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 9
  10. 10. PROJEÇÃO • PROJEÇÃO: Obter apenas algumas das colunas da tabela • Especificar as colunas que deseja na clausula select 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 10
  11. 11. PROJEÇÃO • EXEMPLO: escrever o comando SQL que permite obter informação sobre a IDENTIFICAÇÃO, o NOME e o CÓDIGO POSTAL de todas as pessoas existentes no banco de dados. SELECT id, nome, codigopostal FROM pessoa 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 11
  12. 12. RESTRIÇÃO: where • Permite restringir o número de linhas a serem apresentadas • Apenas serão apresentadas algumas das linhas que contem a informação desejada • Uma condição é um caso particular de uma expressão que devolve sempre um resultado do tipo lógico booleano 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 12
  13. 13. RESTRIÇÃO: where • EXEMPLO: selecionar todos os indivíduos da tabela PESSOA Select * from pessoa Select * from pessoa where true Select * from pessoa where 1 Select * from pessoa where 1 = 1 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 13
  14. 14. RESTRIÇÃO: where • EXEMPLO: fazer uma consulta à tabela PESSOA, da qual não resulte qualquer linha • Para obter um resultado VAZIO, é necessário especificar uma condição que seja falsa para todos os registros Select * from pessoa false 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 14
  15. 15. RESTRIÇÃO: where • Os SGBD não aceitam TRUE/FALSE, apenas o ACCESS da Microsoft aceita! • Select * from pessoa where id <> id • Select * from pessoa where 1 <> 1 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 15
  16. 16. OPERADORES RELACIONAIS Operador Descrição Exemplo Resultado = Igual a 7 = 5 FALSE > Maior que 7 > 5 TRUE < Menor que 7 < 5 FALSE >= Maior ou igual a 7 >= 5 TRUE <= Menor ou igual a 7 <= 5 FALSE <> Ou != Diferente 7 != 5 FALSE 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 16 Exemplo: SELECT * FROM pessoa WHERE idade = 35 SELECT id, nome, salario FROM pessoa WHERE id >= 18
  17. 17. OPERADORES RELACIONAIS • Exemplo: selecionar a descrição de todas as mensagens cujo ID seja diferente de 20 SELECT mensagem FROM mensagem WHERE id <> 20 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 17
  18. 18. OPERADORES LÓGICOS 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 18 OPERADOR EXEMPLO AND CONDIÇÃO 1 AND CONDIÇÃO 2 OR CONDIÇÃO 1 OR CONDIÇÃO 2 NOT NOT CONDIÇÃO EXEMPLO: selecionar o ID, o NOME, a Idade e o SALARIO de todas as pessoas com idade entre 30 e 40 anos Select id, idade, salario FROM pessoa WHERE idade >= 30 AND idade <= 40 EXEMPLO: selecionar o id, o nome, a idade e o salário de todas as pessoas que não fazem parte da seleção anterior SELECT id, nome, idade, salario FROM pessoa WHERE idade < 30 OR idade > 40
  19. 19. OPERADORES LÓGICOS SELECT id, nome, idade, salario FROM pessoa WHERE NOT (idade >= 30 AND idade <= 40) Select id, nome, idade, salario FROM pessoa WHERE NOT idade >= 30 AND idade <= 40 SELECT id, nome, idade, salario FROM pessoa WHERE (NOT (idade >= 30)) AND (idade <= 40) 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 19
  20. 20. BETWEEN • Permite especificar intervalos de valores • SINTAXE: SELECT .... FROM .... WHERE valor [NOT] BETWEEN valor1 AND valor2 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 20
  21. 21. BETWEEN • As seguintes condições são equivalentes • valor >= valor1 AND valor <= valor2 • (valor >= valor1) AND (valor <= valor2) • valor Between valor1 AND valor2 • valor NOT BETWEEN valor1 AND valor2 • NOT (valor >= valor1 AND valor <= valor2) • NOT (valor BETWEEN valor1 AND valor2) • NOT (valor >= valor1) OR NOT (valor <= valor2) • valor < valor1 OR valor > valor2 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 21
  22. 22. BETWEEN • EXEMPLO: selecionar o ID, o nome, a idade e o salário de todas as pessoas com idade entre 30 e 40 anos SELECT id, nome, idade, salario FROM pessoa WHERE idade >= 30 AND idade <= 40 SELECT id, nome, idade, salario FROM pessoa WHERE idade BETWEEN 30 and 40 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 22
  23. 23. BETWEEN • exemplo: selecionar o id, o nome, a idade e o salário de todas as pessoas que não fazem parte da seleção anterior Select id, nome, idade, salario FROM pessoa WHERE idade < 30 OR idade > 40 SELECT id, nome, idade, salario FROM pessoa WHERE NOT (idade >= 30 AND idade <= 40) SELECT id, nome, idade, salario FROM pessoa WHERE idade NOT BETWEEN 30 AND 40 SELECT ide, nome, idade, salario FROM pessoa WHERE NOT (idade BETWEEN 30 AND 40) 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 23
  24. 24. IN • Permite verificar se algo faz ou não parte de um conjunto de valores especificado entre parênteses • SINTAXE: SELECT ... FROM ... WHERE valor [NOT] IN (valor1, valor2, ..., valor) 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 24
  25. 25. IN • Condições equivalentes • Valor = 1 OR valor =2 OR valor 3 • Valor IN (1, 2, 3) 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 25
  26. 26. IN • EXEMPLO: selecionar a lista completa, com todos os campos, de códigos postais de Lisboa e tomar SELECT * FROM postal WHERE localidade = ‘LISBOA’ OR localidade = ‘TOMAR’ SELECT * FROM postal WHERE localidade IN (‘LISBOA’, ‘TOMAR’) 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 26
  27. 27. IN • EXEMPLO: selecionar os códigos postais que não pertencem a LISBOA nem a TOMAR SELECT codigopostal, localidade FROM postal WHERE localidade <> ‘LISBOA’ AND localidade = ‘TOMAR’ SELECT codigpostal, localidade FROM POSTAL WHERE localidade NOT IN (‘LISBOA’, ‘TOMAR’) SELECT localidade, códigopostal FROM postal WHERE codigopostal NOT IN (1000, 1100, 1200, 1500, 2300) 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 27
  28. 28. IS: tratamento de valores nulos • NULL: • Valor especial que pode ser atribuído a qualquer tipo de dados • Quando presente em um campo indica ausência de valor • Permite indicar se existe ou não algum valor já disponível para um determinado campo 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 28
  29. 29. IS: tratamento de valores nulos • EXEMPLO: • O valor ZERO não pode ser atribuído a uma nota de aluno logo no inicio do semestre. Se isso ocorrer, significa que o aluno tirou ZERO naquela prova ou trabalho, o que não é verdade! 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 29
  30. 30. IS: tratamento de valores nulos • EXEMPLO: • O valor ZERO não pode ser atribuído a uma nota de aluno logo no inicio do semestre. Se isso ocorrer, significa que o aluno tirou ZERO naquela prova ou trabalho, o que não é verdade! 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 30
  31. 31. IS: tratamento de valores nulos • IS é o operador utilizado para realizar as comparações com valores NULL • SINTAXE • SELECT ... FROM ... WHERE campo IS [NOT] NULL 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 31
  32. 32. IS: tratamento de valores nulos • Exemplo: selecionar os nomes e telefones de todas as pessoas • SELECT nome, telefone FROM pessoa • Alguns SGBDs apresentam o NULL no resultado, outros não! 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 32
  33. 33. IS: tratamento de valores nulos • EXEMPLO: selecionar o nome das pessoas SEM telefone SELECT nome FROM pessoa WHERE telefone IS NULL • EXEMPLO: selecionar os nomes e os telefones das pessoas COM telefone SELECT nome, telefone FROM pessoa WHERE telefone IS NOT NULL 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 33
  34. 34. IS: tratamento de valores nulos • NULL não é zero e não é uma string vazia • Uma comparação com NULL tem que ser feita usando IS • Se fizer isso, será devolvido para você FALSE como resposta • NULL é um indicador de inexistência de valor 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 34
  35. 35. LIKE • LIKE é usado para comparar STRINGS • Permite resolver alguns problemas naturais que existem quando se pretende comparar strings • Permite comparar partes da string • A comparação de STRING com os operadores relacionais utiliza sempre, na comparação, a totalidade da string 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 35
  36. 36. LIKE • Exemplo: selecionar os códigos postais associados a LISBOA • SELECT * FROM codigopostal WHERE localidade = ‘LISBOA’ 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 36
  37. 37. LIKE • CARACTERES CORINGAS: usados para comparar partes de strings 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 37 Wildcard Significado % Qualquer conjunto de zero ou mais caracteres _ Um caractere qualquer * Qualquer conjunto de zero ou mais caracteres ? Um caractere qualquer
  38. 38. LIKE • EXEMPLO: selecionar todas as mensagens começadas com T SELECT * FROM mensagem WHERE mensagem LIKE ‘T%’ SELECT * FROM mensagem WHERE mensagem LIKE ‘T*’ 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 38
  39. 39. LIKE • EXEMPLO: selecionar todas as mensagens acabadas com ‘as’ SELECT * FROM mensagem WHERE mensagem LIKE ‘%as’ SELECT * FROM mensagem WHERE mensagem LIKE ‘*as’ 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 39
  40. 40. LIKE • EXEMPLO: selecionar todas as mensagens que contenham a palavra ‘vendas’ em qualquer parte da designação SELECT * FROM mensagem WHERE mensagem LIKE ‘%vendas%’ SELECT * FROM mensagem WHERE mensagem LIKE ‘*vendas*’ 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 40
  41. 41. LIKE • EXEMPLO: selecionar todas as mensagens que contenham a string ‘te’ SELECT * FROM mensagem WHERE mensagem LIKE ‘*te*’ SELECT * FROM mensagem WHERE mensagem LIKE ‘%te%’ 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 41
  42. 42. LIKE • EXEMPLO: selecionar todos os nomes que contenham a string ‘DA’ SELECT * nome FROM pessoa WHERE nome LIKE ‘%da%’ SELECT * nome FROM pessoa WHERE nome LIKE ‘*da*’ 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 42
  43. 43. LIKE • EXEMPLO: selecionar todos os NOMES que NÃO contenham a string ‘da’ SELECT nome FROM pessoa WHERE nome NOT LIKE ‘%da%’ SELECT nome FROM pessoa WHERE NOT (nome LIKE ‘*da*’) SELECT nome FROM pessoa WHERE NOT (nome LIKE ‘%da%’) 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 43
  44. 44. LIKE • EXEMPLO: selecionar todos os nomes cujo segundo caracteres é um ‘a’ SELECT nome FROM pessoa WHERE nome LIKE ‘_a%’ SELECT nome FROM pessoa WHERE nome LIKE ‘?a*’ 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 44
  45. 45. LIKE • Quando precisar pesquisar os próprios caracteres coringas, usar a sintaxe abaixo • String [NOT] LIKE ‘padrão_de_pesquisa’ ESCAPE ‘caractere’ • Exemplo: selecionar todas as mensagens que contenham o caractere ‘%’ 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 45
  46. 46. LIKE • SELECT mensagem FROM mensagem WHERE mensagem LIKE ‘%@%%’ ESCAPE ‘@’ • SELECT mensagem FROM mensagem WHERE mensagem LIKE ‘%=%%’ ESCAPE ‘=’ • % - qualquer conjunto de caracteres à esquerda • @% - seguido do caractere % • % seguido de qualquer conjunto de caracteres à direita 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 46
  47. 47. LIKE 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 47 Wildcard DESCRIÇÃO ‘[abc]%’ Qualquer string começada obrigatoriamente por a, b ou c ‘[!abc]%’ Qualquer string não começada por a, b ou c ‘[0-9]%[abc]’ String começada por um digito e terminada pelo caractere a, b ou c ‘[a-zA-Z]_’ String formada unicamente por dois caracteres. O primeiro é um caractere alfabético minúsculo ou maiúsculo. O segundo é um caractere qualquer ‘[!0-9]%’ O primeiro caractere não pode ser digito ‘Al[m-r]%’ String começada por Al. O terceiro caractere terá de estar entre os caracteres ‘m’ e ‘r’ Depois pode aparecer qualquer string ‘Al[m-r]%[!0-9]’ String começada por Al. O terceiro caractere terá de estar entre os caracteres ‘m’ e ‘r’ Depois pode aparecer qualquer string No entanto, o último caractere não pode ser numérico
  48. 48. Precedência de operadores Parenteses Multiplicação e divisão Adição e subtração NOT AND OR 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 48
  49. 49. Precedência de operadores • EXEMPLOS: • SELECT * FROM pessoa WHERE idade <= 27 OR idade >= 30 AND telefone IS NULL • SELECT * FROM pessoa WHERE idade <= 27 OR (idade >= 30 AND telefone IS NULL) • SELECT * FROM pessoa WHERE (idade <= 27 OR idade >= 30) AND telefone IS NULL 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 49

×