SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
#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 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
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Implementar as consultas da lista 02
30

Contenu connexe

Tendances

TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLFábio Delboni
 
Aula5 normalização
Aula5   normalizaçãoAula5   normalização
Aula5 normalizaçãoMatias Silva
 
Sql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosSql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosFábio dos Reis
 
Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoHelder Lopes
 
Normalização de Banco de Dados
Normalização de Banco de DadosNormalização de Banco de Dados
Normalização de Banco de Dadoselliando dias
 
Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Emiliano Barbosa
 
Junções e subconsultas
Junções e subconsultasJunções e subconsultas
Junções e subconsultasjulianaveregue
 
Modelagem relacional e normalização de dados
Modelagem relacional e normalização de dadosModelagem relacional e normalização de dados
Modelagem relacional e normalização de dadosjulianaveregue
 
Fundamentos de SQL - Parte 4 de 8
Fundamentos de SQL - Parte 4 de 8Fundamentos de SQL - Parte 4 de 8
Fundamentos de SQL - Parte 4 de 8Emiliano Barbosa
 
Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8Emiliano Barbosa
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Marco Pinheiro
 
Aula de SQL - Básico
Aula de SQL - BásicoAula de SQL - Básico
Aula de SQL - BásicoAirton Zanon
 
Excel Intermediário
Excel IntermediárioExcel Intermediário
Excel Intermediárioaprcds
 

Tendances (19)

Aula 9 banco de dados
Aula 9   banco de dadosAula 9   banco de dados
Aula 9 banco de dados
 
Sql server
Sql serverSql server
Sql server
 
TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQL
 
Aula 9 Modelagem de Dados
Aula 9 Modelagem de DadosAula 9 Modelagem de Dados
Aula 9 Modelagem de Dados
 
Aula5 normalização
Aula5   normalizaçãoAula5   normalização
Aula5 normalização
 
Sql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosSql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentos
 
Apostila de sql
Apostila de sqlApostila de sql
Apostila de sql
 
Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumo
 
Normalização de Banco de Dados
Normalização de Banco de DadosNormalização de Banco de Dados
Normalização de Banco de Dados
 
Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8
 
Junções e subconsultas
Junções e subconsultasJunções e subconsultas
Junções e subconsultas
 
Modelagem relacional e normalização de dados
Modelagem relacional e normalização de dadosModelagem relacional e normalização de dados
Modelagem relacional e normalização de dados
 
Fundamentos de SQL - Parte 4 de 8
Fundamentos de SQL - Parte 4 de 8Fundamentos de SQL - Parte 4 de 8
Fundamentos de SQL - Parte 4 de 8
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
 
Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)
 
At00 apostila sql
At00   apostila sqlAt00   apostila sql
At00 apostila sql
 
Aula de SQL - Básico
Aula de SQL - BásicoAula de SQL - Básico
Aula de SQL - Básico
 
Excel Intermediário
Excel IntermediárioExcel Intermediário
Excel Intermediário
 

Similaire à Banco II - PostgreSQL - Filtros

Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosMarcos Thomaz
 
A06_BD_Linguagem_SQL_SELECT.pdf
A06_BD_Linguagem_SQL_SELECT.pdfA06_BD_Linguagem_SQL_SELECT.pdf
A06_BD_Linguagem_SQL_SELECT.pdfssuser4051be1
 
Comandos basicos da linguagem SQL em banco de dados
Comandos basicos da linguagem SQL em banco de dadosComandos basicos da linguagem SQL em banco de dados
Comandos basicos da linguagem SQL em banco de dadosHenrikCruzAraujo
 
Aula03 - BDII - Comsulta Básica, Consultas com Funções e Agregação.pdf
Aula03 - BDII - Comsulta Básica, Consultas com Funções e Agregação.pdfAula03 - BDII - Comsulta Básica, Consultas com Funções e Agregação.pdf
Aula03 - BDII - Comsulta Básica, Consultas com Funções e Agregação.pdfAngeloOliveira60
 
Aula 6 sql - introdução
Aula 6   sql - introduçãoAula 6   sql - introdução
Aula 6 sql - introduçãoHélio Martins
 
LabMM4 (T08 - 12/13) - SQL continuação
LabMM4 (T08 - 12/13) - SQL continuaçãoLabMM4 (T08 - 12/13) - SQL continuação
LabMM4 (T08 - 12/13) - SQL continuaçãoCarlos Santos
 
Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1Arley Rodrigues
 
Principais instruções em sql
Principais instruções em sqlPrincipais instruções em sql
Principais instruções em sqlCharleston Anjos
 
Fundamentos de Banco de Dados Linguagem SQL.pptx
Fundamentos de Banco de Dados Linguagem SQL.pptxFundamentos de Banco de Dados Linguagem SQL.pptx
Fundamentos de Banco de Dados Linguagem SQL.pptxantoniofialho8
 
O comando SELECT (ordenação)
O comando SELECT (ordenação)O comando SELECT (ordenação)
O comando SELECT (ordenação)Graciano Torrão
 
BDI - Aula 09 - SQL e Algebra Relacional
BDI - Aula 09 - SQL e Algebra RelacionalBDI - Aula 09 - SQL e Algebra Relacional
BDI - Aula 09 - SQL e Algebra RelacionalRodrigo Kiyoshi Saito
 

Similaire à Banco II - PostgreSQL - Filtros (20)

Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos Comandos
 
Inner Join
Inner JoinInner Join
Inner Join
 
A06_BD_Linguagem_SQL_SELECT.pdf
A06_BD_Linguagem_SQL_SELECT.pdfA06_BD_Linguagem_SQL_SELECT.pdf
A06_BD_Linguagem_SQL_SELECT.pdf
 
SQL.ppt
SQL.pptSQL.ppt
SQL.ppt
 
Comandos basicos da linguagem SQL em banco de dados
Comandos basicos da linguagem SQL em banco de dadosComandos basicos da linguagem SQL em banco de dados
Comandos basicos da linguagem SQL em banco de dados
 
Aula03 - BDII - Comsulta Básica, Consultas com Funções e Agregação.pdf
Aula03 - BDII - Comsulta Básica, Consultas com Funções e Agregação.pdfAula03 - BDII - Comsulta Básica, Consultas com Funções e Agregação.pdf
Aula03 - BDII - Comsulta Básica, Consultas com Funções e Agregação.pdf
 
Curso SQL Server 2005
Curso SQL Server 2005Curso SQL Server 2005
Curso SQL Server 2005
 
Aula 6 sql - introdução
Aula 6   sql - introduçãoAula 6   sql - introdução
Aula 6 sql - introdução
 
LabMM4 (T08 - 12/13) - SQL continuação
LabMM4 (T08 - 12/13) - SQL continuaçãoLabMM4 (T08 - 12/13) - SQL continuação
LabMM4 (T08 - 12/13) - SQL continuação
 
Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1
 
Principais instruções em sql
Principais instruções em sqlPrincipais instruções em sql
Principais instruções em sql
 
Aula 12 banco de dados
Aula 12   banco de dadosAula 12   banco de dados
Aula 12 banco de dados
 
MySQL - O Comando SELECT
MySQL - O Comando SELECTMySQL - O Comando SELECT
MySQL - O Comando SELECT
 
Fundamentos de Banco de Dados Linguagem SQL.pptx
Fundamentos de Banco de Dados Linguagem SQL.pptxFundamentos de Banco de Dados Linguagem SQL.pptx
Fundamentos de Banco de Dados Linguagem SQL.pptx
 
O comando SELECT (ordenação)
O comando SELECT (ordenação)O comando SELECT (ordenação)
O comando SELECT (ordenação)
 
Curso Java Web
Curso Java WebCurso Java Web
Curso Java Web
 
BDI - Aula 09 - SQL e Algebra Relacional
BDI - Aula 09 - SQL e Algebra RelacionalBDI - Aula 09 - SQL e Algebra Relacional
BDI - Aula 09 - SQL e Algebra Relacional
 
Aula 7 sql - select
Aula 7   sql - selectAula 7   sql - select
Aula 7 sql - select
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 
Aula 3 - com XLOOKUP.pptx
Aula 3 -  com XLOOKUP.pptxAula 3 -  com XLOOKUP.pptx
Aula 3 - com XLOOKUP.pptx
 

Banco II - PostgreSQL - Filtros

  • 1. #03 Banco de Dados II 2015.2 Gustavo Sávio <gsoprofessor@gmail.com> 1
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Implementar as consultas da lista 02 30