#03
Banco de Dados II
2015.2 Gustavo Sávio <gsoprofessor@gmail.com> 1
Funções da SQL
SELECT <tuplas> FROM <tabela> LIMIT <n>
SELECT <tuplas> FROM <tabela> LIMIT <n> OFFSET <m>
- A clausula LIM...
Funções da SQL
Exibir o código, nome e o telefone dos três primeiros
clientes cadastrados na empresa.
SELECT codigo, nome,...
Funções da SQL
Exibir o código, nome e o telefone dos 2 primeiros
clientes cadastrados na empresa ignorando os 3
primeiros...
Funções da SQL
SELECT DISTINCT <TUPLAS> FROM <TABELA>
A clausula DISTINCT elimina as linhas duplicadas que
serão retornada...
Funções da SQL Resultado sem DISTINCT:
nome
-----------------------
Joao Paulo Correia
LT Comercio
JR Representacoes
Laris...
Funções da SQL
A clausula DISTINCT pode ser usada como parte do
argumento, para eliminar as linhas repetidas,
antes da apl...
Funções da SQL
DISTINCT ON (expressão) preserva apenas a primeira
linha de cada conjunto de linhas onde as
expressões forn...
Funções da SQLSELECT DISTINCT c.nome, p.cliente, p.vendedor FROM
Pedido AS P INNER JOIN Cliente AS c ON p.cliente =
c.codi...
Funções da SQL
SELECT DISTINCT ON(c.nome) c.nome, p.cliente,
p.vendedor FROM Pedido AS p INNER JOIN Cliente AS
c ON p.clie...
Funções da SQL
Sintaxe:
SELECT <lista de colunas>
FROM <tabela(s)>
ORDER BY <coluna> [ASC] [DESC]
– O default é a ordenaçã...
Funções da SQLExibir código, nome e telefone de todos os clientes, em
ordem alfabética (nome do cliente).
SELECT codigo, n...
Funções da SQL
Exibir código, nome, estado civil e data de nascimento de todos
os funcionários. Ordene o resultado do func...
Funções da SQLExibir código, nome e tipo de todos os produtos existentes
na empresa, ordenados pelo tipo em ordem ascenden...
SQL – Filtrando DadosSELECT <lista de colunas>
FROM <tabela(s)>
WHERE <coluna> operador <valor>
Operadores:
•
– Os operado...
SQL – Filtrando DadosObservações:
•
– Ao usarmos os operadores AND, OR e NOT numa mesma
expressão, temos a seguinte ordem ...
SQL – Filtrando DadosExibir o nome e a data de nascimento dos
funcionários (no formato brasileiro), que sejam
do sexo masc...
SQL – Filtrando DadosQual outra maneira de fazer esta consulta, usando
funções de data/hora, para pegar o ano da data de
n...
SELECT <lista de colunas>
FROM <tabela(s)>
WHERE <coluna> BETWEEN <expressão> AND <expressão>
Exibir nome e a quantidade e...
SELECT <lista de colunas>
FROM <tabela(s)>
WHERE <coluna> IN <lista>
Exibir nome e bairro dos funcionários que
residam em ...
SELECT <lista de colunas>
FROM <tabela(s)>
WHERE <coluna> IS [NOT] NULL
– NULL: valores nulos, ou seja, não preenchidos (I...
Exemplo: Exibir os dados dos funcionários que
não possuem email.
SELECT *
FROM Funcionario
WHERE email IS NULL
Exemplo: Ex...
Você acha que os funcionários com email nulo são
retornados na consulta abaixo?
SELECT nome, email
FROM Funcionario
WHERE ...
SELECT <lista de colunas>
FROM <tabela(s)>
WHERE <coluna> <LIKE ou ILIKE> <string>
Combinações:
– % (porcentagem): seqüênc...
Exemplos:
– Como encontrar todos os nomes que tenham Silva em
qualquer lugar?
• Usar LIKE ‘%Silva%’
– Como encontrar todos...
SELECT <lista de colunas>
FROM <tabela(s)>
WHERE <coluna> SIMILAR TO <string>
Combinações:
– | denota ou.
– * denota a rep...
Combinações:
– {m, n} denota a repetição de um campo: ao menos m e
não mais que n.
– () denota um grupo de itens.
– [] den...
POSIX Regular Expressions
– ~ verifica a igualdade entre os campos (considera
maiúsculo de minúsculo).
– ~* verifica a igu...
Exemplos:
– Como encontrar todos os nomes que começam com J ou M?
• Usar SIMILAR TO ‘[J|M]%';
– Como encontrar todos os no...
Implementar as consultas da lista 02
30
Próximos SlideShares
Carregando em…5
×

Banco II - PostgreSQL - Filtros

272 visualizações

Publicada em

Banco II - PostgreSQL - Filtros

Publicada em: Software
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
272
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
8
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Banco II - PostgreSQL - Filtros

  1. 1. #03 Banco de Dados II 2015.2 Gustavo Sávio <gsoprofessor@gmail.com> 1
  2. 2. Funções da SQL SELECT <tuplas> FROM <tabela> LIMIT <n> SELECT <tuplas> FROM <tabela> LIMIT <n> OFFSET <m> - A clausula LIMIT limita a quantidade de registros (n) que serão retornados na consulta. - A clausula OFFSET pula uma quantidade de registros (n) antes que os mesmos sejam retornados na consulta. 2 #CLAUSULAS LIMIT E OFFSET
  3. 3. Funções da SQL Exibir o código, nome e o telefone dos três primeiros clientes cadastrados na empresa. SELECT codigo, nome, fone FROM cliente LIMIT 3; Resultado: codigo | nome | fone --------+-----------------------+----------- 1 | Maria Helena Ferreira | 3225-6987 2 | Joao Paulo Correia | 3245-8999 3 | Larissa Maia | 3227-9622 3 #CLAUSULAS LIMIT E OFFSET
  4. 4. Funções da SQL Exibir o código, nome e o telefone dos 2 primeiros clientes cadastrados na empresa ignorando os 3 primeiros. SELECT codigo, nome, fone FROM cliente LIMIT 2 OFFSET 3; Resultado: codigo | nome | fone --------+----------------+----------- 4 | Marcos Andrade | 3338-2100 5 | LT Comercio | 3256-9981 4 #CLAUSULAS LIMIT E OFFSET
  5. 5. Funções da SQL SELECT DISTINCT <TUPLAS> FROM <TABELA> A clausula DISTINCT elimina as linhas duplicadas que serão retornadas na consulta. Exibir o nome de todos os clientes que já fizeram pedido na empresa. SELECT DISTINCT c.nome FROM Pedido p INNER JOIN Cliente c ON p.cliente = c.codigo 5 #CLAUSULAS DISTINCT E DISTINCT ON
  6. 6. Funções da SQL Resultado sem DISTINCT: nome ----------------------- Joao Paulo Correia LT Comercio JR Representacoes Larissa Maia Maria Helena Ferreira Marcos Andrade Maria Helena Ferreira JR Representacoes Maria Helena Ferreira Maria Helena Ferreira JR Representacoes Maria Helena Ferreira Marcos Andrade Marcos Andrade JR Representacoes Maria Helena Ferreira JR Representacoes Joao Paulo Correia JR Representacoes LT Comercio Larissa Maia Larissa Maia Maria Helena Ferreira JR Representacoes Marcos Andrade (25 rows) 6 #CLAUSULAS DISTINCT E DISTINCT ON Resultado: nome ----------------------- Joao Paulo Correia Maria Helena Ferreira Larissa Maia LT Comercio JR Representacoes Marcos Andrade (6 rows)
  7. 7. Funções da SQL A clausula DISTINCT pode ser usada como parte do argumento, para eliminar as linhas repetidas, antes da aplicação das funções de agregação. Exibir a quantidade de clientes que fizeram compras. SELECT COUNT (DISTINCT c.nome) FROM Pedido AS P INNER JOIN Cliente AS c ON p.cliente = c.codigo Resultado: 6 Sem DISTINCT: 25 7 #CLAUSULAS DISTINCT E DISTINCT ON
  8. 8. Funções da SQL DISTINCT ON (expressão) preserva apenas a primeira linha de cada conjunto de linhas onde as expressões fornecidas forem iguais. 8 #CLAUSULAS DISTINCT E DISTINCT ON
  9. 9. Funções da SQLSELECT DISTINCT c.nome, p.cliente, p.vendedor FROM Pedido AS P INNER JOIN Cliente AS c ON p.cliente = c.codigo order by c.nome, p.cliente; nome | cliente | vendedor -----------------------+---------+---------- Joao Paulo Correia | 2 | 1 Joao Paulo Correia | 2 | 3 JR Representacoes | 6 | 2 JR Representacoes | 6 | 3 JR Representacoes | 6 | 4 Larissa Maia | 3 | 2 Larissa Maia | 3 | 3 LT Comercio | 5 | 1 Marcos Andrade | 4 | 1 Marcos Andrade | 4 | 2 Marcos Andrade | 4 | 3 Maria Helena Ferreira | 1 | 2 Maria Helena Ferreira | 1 | 3 Maria Helena Ferreira | 1 | 4 (14 rows) 9 #CLAUSULAS DISTINCT E DISTINCT ON
  10. 10. Funções da SQL SELECT DISTINCT ON(c.nome) c.nome, p.cliente, p.vendedor FROM Pedido AS p INNER JOIN Cliente AS c ON p.cliente = c.codigo order by c.nome, p.cliente; nome | cliente | vendedor -----------------------+---------+---------- Joao Paulo Correia | 2 | 3 JR Representacoes | 6 | 4 Larissa Maia | 3 | 3 LT Comercio | 5 | 1 Marcos Andrade | 4 | 1 Maria Helena Ferreira | 1 | 4 (6 rows) 10 #CLAUSULAS DISTINCT E DISTINCT ON
  11. 11. Funções da SQL Sintaxe: SELECT <lista de colunas> FROM <tabela(s)> ORDER BY <coluna> [ASC] [DESC] – O default é a ordenação ascendente (ASC). 11 #ORDENANDO RESULTADOS
  12. 12. Funções da SQLExibir código, nome e telefone de todos os clientes, em ordem alfabética (nome do cliente). SELECT codigo, nome, fone FROM Cliente ORDER BY nome codigo | nome | fone --------+-----------------------+----------- 2 | Joao Paulo Correia | 3245-8999 6 | JR Representacoes | 5841-9871 3 | Larissa Maia | 3227-9622 5 | LT Comercio | 3256-9981 4 | Marcos Andrade | 3338-2100 1 | Maria Helena Ferreira | 3225-6987 (6 rows) 12 #ORDENANDO RESULTADOS
  13. 13. Funções da SQL Exibir código, nome, estado civil e data de nascimento de todos os funcionários. Ordene o resultado do funcionário mais novo para o mais velho. SELECT codigo, nome, estCivil, dataNasc FROM Funcionario ORDER BY dataNasc DESC codigo | nome | estcivil | datanasc --------+--------------------+----------+--------------------- 3 | Luiza Costa | C | 1980-04-04 00:00:00 1 | Joao da Silva | S | 1978-02-05 00:00:00 4 | Francisco da Silva | D | 1970-06-03 00:00:00 2 | Maria de Souza | C | 1970-01-01 00:00:00 5 | Carla Tavares | C | 1969-01-08 00:00:00 (5 rows) 13 #ORDENANDO RESULTADOS
  14. 14. Funções da SQLExibir código, nome e tipo de todos os produtos existentes na empresa, ordenados pelo tipo em ordem ascendente e pelo nome do produto em ordem descendente. SELECT P.codigo, T.nome AS Tipo, P.nome AS Produto FROM Produto P INNER JOIN Tipo T ON P.tipo = T.codigo ORDER BY T.nome ASC, P.nome DESC; codigo | tipo | produto --------+--------------+--------------------- 7 | Alimentacaoo | Pizza Sadia 1 | Cama | Toalhas Artex 3 | Decoracaoo | Abajur Alist 4 | Eletro | TV Plasma 5 | Eletro | Liquidificador 6 | Eletro | Computador Positivo 2 | Lacticinios | Iogurte Nestle (7 rows) 14 #ORDENANDO RESULTADOS
  15. 15. SQL – Filtrando DadosSELECT <lista de colunas> FROM <tabela(s)> WHERE <coluna> operador <valor> Operadores: • – Os operadores <, <=, >, >=, =, <> são usados para testar valores de atributos. – Os operadores lógicos AND, NOT, OR podem ser usados para combinar condições. #Filtrando Dados 15
  16. 16. SQL – Filtrando DadosObservações: • – Ao usarmos os operadores AND, OR e NOT numa mesma expressão, temos a seguinte ordem de avaliação: NOT, AND e OR. – Para mudar a ordem de precedência dos operadores, devemos usar os parênteses. #Filtrando Dados 16
  17. 17. SQL – Filtrando DadosExibir o nome e a data de nascimento dos funcionários (no formato brasileiro), que sejam do sexo masculino e que nasceram a partir de 1950. SELECT nome, to_char(dataNasc, 'dd/mm/yyyy') AS dataNasc FROM Funcionario WHERE sexo = 'M' AND dataNasc >= '01/01/1950'; #Filtrando Dados 17
  18. 18. SQL – Filtrando DadosQual outra maneira de fazer esta consulta, usando funções de data/hora, para pegar o ano da data de nascimento? SELECT nome, to_char(dataNasc, 'dd/mm/yyyy') AS dataNasc FROM Funcionario WHERE sexo = 'M' AND DATE_PART('YEAR', dataNasc) >= 1950; #Filtrando Dados 18
  19. 19. SELECT <lista de colunas> FROM <tabela(s)> WHERE <coluna> BETWEEN <expressão> AND <expressão> Exibir nome e a quantidade em estoque dos produtos, cujo estoque esteja entre 10 e 30 unidades, ordenados pelo nome do produto. SELECT nome, quantest FROM Produto WHERE quantest BETWEEN 10 AND 30 ORDER BY nome #Filtrando Dados com Intervalos 19
  20. 20. SELECT <lista de colunas> FROM <tabela(s)> WHERE <coluna> IN <lista> Exibir nome e bairro dos funcionários que residam em Manaíra ou Bessa, ordenados pelo bairro. SELECT nome, bairro FROM Funcionario WHERE bairro IN (‘Manaíra’, ‘Bessa’) ORDER BY bairro #Filtrando Dados com Listas 20
  21. 21. SELECT <lista de colunas> FROM <tabela(s)> WHERE <coluna> IS [NOT] NULL – NULL: valores nulos, ou seja, não preenchidos (IS NULL) – NOT: opcional (p/ selecionar os valores “não nulos” - IS NOT NULL) #Filtrando Dados com Valores Nulos 21
  22. 22. Exemplo: Exibir os dados dos funcionários que não possuem email. SELECT * FROM Funcionario WHERE email IS NULL Exemplo: Exibir nome e email dos funcionários que possuem email. SELECT nome, email FROM Funcionario WHERE email IS NOT NULL #Filtrando Dados com Valores Nulos 22
  23. 23. Você acha que os funcionários com email nulo são retornados na consulta abaixo? SELECT nome, email FROM Funcionario WHERE email <> ‘franc@uol.com.br’ Qual seria a solução para que a consulta acima também apresente estes funcionários (email = NULL)? SELECT nome, email FROM Funcionario WHERE (email <> ‘franc@uol.com.br’) OR (email IS NULL) #Filtrando Dados com Valores Nulos 23
  24. 24. SELECT <lista de colunas> FROM <tabela(s)> WHERE <coluna> <LIKE ou ILIKE> <string> Combinações: – % (porcentagem): seqüência de caracteres. – _ (sublinhado): combina com um único caractere #Filtrando Dados com String 24
  25. 25. Exemplos: – Como encontrar todos os nomes que tenham Silva em qualquer lugar? • Usar LIKE ‘%Silva%’ – Como encontrar todos os nomes que começam por “J”seguido de um caractere qualquer e depois “a”? • Usar LIKE 'J_a%'; #Filtrando Dados com String 25
  26. 26. SELECT <lista de colunas> FROM <tabela(s)> WHERE <coluna> SIMILAR TO <string> Combinações: – | denota ou. – * denota a repetição de um campo: 0 ou mais vezes. – * denota a repetição de um campo: 1 ou mais vezes. – ? denota a repetição de um campo: 0 ou uma vez. – {m} denota a repetição de um campo: exatamente m vezes. – {m,} denota a repetição de um campo: m ou mais vezes. #Filtrando Dados com String 26
  27. 27. Combinações: – {m, n} denota a repetição de um campo: ao menos m e não mais que n. – () denota um grupo de itens. – [] denota uma classe de caracteres (apenas para expressão regular POSIX) #Filtrando Dados com String 27
  28. 28. POSIX Regular Expressions – ~ verifica a igualdade entre os campos (considera maiúsculo de minúsculo). – ~* verifica a igualdade entre os campos (não considera maiúsculo de minúsculo). – !~ verifica a não igualdade entre os campos considera maiúsculo de minúsculo). – !~* verifica a igualdade entre os campos (não considera maiúsculo de minúsculo). #Filtrando Dados com String 28
  29. 29. Exemplos: – Como encontrar todos os nomes que começam com J ou M? • Usar SIMILAR TO ‘[J|M]%'; – Como encontrar todos os nomes que começam com J até M? • Usar SIMILAR TO '[J-M]%'; – Como encontrar todos os nomes que não começam com J e M? • Usar SIMILAR TO ‘[^JM]%’ #Filtrando Dados com String 29
  30. 30. Implementar as consultas da lista 02 30

×