SQL – SELECT
BANCO DE DADOS
Prof.ª M.ª Elaine Cecília Gatto
21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 1
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
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
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
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
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
SELECIONANDO TODOS OS REGISTROS
• SINTAXE
SELECT codigo, localidade FROM codigopostal;
21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 7
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

PBD Select e restrições para Select

  • 1.
    SQL – SELECT BANCODE DADOS Prof.ª M.ª Elaine Cecília Gatto 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 1
  • 2.
    Introdução • SQL: • Linguagemdo 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.
    Introdução • Os usuáriosapenas 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.
    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.
    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.
    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.
    SELECIONANDO TODOS OSREGISTROS • SINTAXE SELECT codigo, localidade FROM codigopostal; 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 7
  • 8.
    SELECIONANDO TODAS ASCOLUNAS • 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.
    SELECIONANDO TODAS ASCOLUNAS • 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.
    PROJEÇÃO • PROJEÇÃO: Obterapenas algumas das colunas da tabela • Especificar as colunas que deseja na clausula select 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 10
  • 11.
    PROJEÇÃO • EXEMPLO: escrevero 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.
    RESTRIÇÃO: where • Permiterestringir 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.
    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.
    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.
    RESTRIÇÃO: where • OsSGBD 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.
    OPERADORES RELACIONAIS Operador DescriçãoExemplo 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.
    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.
    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.
    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.
    BETWEEN • Permite especificarintervalos de valores • SINTAXE: SELECT .... FROM .... WHERE valor [NOT] BETWEEN valor1 AND valor2 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 20
  • 21.
    BETWEEN • As seguintescondiçõ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.
    BETWEEN • EXEMPLO: selecionaro 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.
    BETWEEN • exemplo: selecionaro 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.
    IN • Permite verificarse 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.
    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.
    IN • EXEMPLO: selecionara 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.
    IN • EXEMPLO: selecionaros 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.
    IS: tratamento devalores 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.
    IS: tratamento devalores 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.
    IS: tratamento devalores 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.
    IS: tratamento devalores 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.
    IS: tratamento devalores 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.
    IS: tratamento devalores 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.
    IS: tratamento devalores 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.
    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.
    LIKE • Exemplo: selecionaros códigos postais associados a LISBOA • SELECT * FROM codigopostal WHERE localidade = ‘LISBOA’ 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 36
  • 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.
    LIKE • EXEMPLO: selecionartodas 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.
    LIKE • EXEMPLO: selecionartodas 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.
    LIKE • EXEMPLO: selecionartodas 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.
    LIKE • EXEMPLO: selecionartodas 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.
    LIKE • EXEMPLO: selecionartodos 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.
    LIKE • EXEMPLO: selecionartodos 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.
    LIKE • EXEMPLO: selecionartodos 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.
    LIKE • Quando precisarpesquisar 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.
    LIKE • SELECT mensagemFROM 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.
    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.
    Precedência de operadores Parenteses Multiplicaçãoe divisão Adição e subtração NOT AND OR 21/09/2018 Prof.ª M.ª Elaine Cecília Gatto 48
  • 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