Baixe o app para aproveitar ainda mais
Prévia do material em texto
SELECT e suas cláusulas Prof. Me. Sirlon Thiago Select • Comando de seleção. Exibe dados de zero ou mais tabelas. • Para as nossas aulas, o mais estudado e o mais extenso. Select - Comando • SELECT [ ALL | DISTINCT [ ON ( expressao [, ...] ) ] ] • * | expression [ [ AS ] nome_saida ] [, ...] • [ FROM from_item [, ...] ] • [ WHERE condição] • [ GROUP BY expressao [, ...] ] • [ HAVING condicao [, ...] ] • [ WINDOW nome_window AS ( definicao_window ) [, ...] ] • [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ] • [ ORDER BY expression [ ASC | DESC | USING operador ] [ NULLS { FIRST | LAST } ] [, ...] ] • [ LIMIT { quan4dade | ALL } ] • [ OFFSET inicio [ ROW | ROWS ] ] • [ FETCH { FIRST | NEXT } [ quan4dade ] { ROW | ROWS } ONLY ] • [ FOR { UPDATE | SHARE } [ OF tabela [, ...] ] [ NOWAIT ] [...] ] Select - Comando • Onde from_item pode ser um desses: • [ ONLY ] tabela [ * ] [ [ AS ] alias [ ( alias_coluna [, ...] ) ] ] • ( select ) [ AS ] alias [ ( alias_coluna [, ...] ) ] • from_item [ NATURAL ] 4po_join from_item [ ON condicao_join | USING ( coluna_join [, ...] ) ] Select - Comando • SELECT colunas • FROM tabela • WHERE condicao • GROUP BY colunas • ORDER BY colunas Select - Exemplo • Selecionar todos os dados de todas as colunas de uma tabela cliente: • SELECT * FROM cliente; • Selecionar somente a coluna nome da tabela produto: • SELECT nome FROM produto; Select - Exemplo • Selecionar somente nomes de produto únicos (dis[ntos) de uma tabela produto: • SELECT DISTINCT nome FROM produto; Select - Exemplo • Selecionar nomes dos produtos com valor de venda maior que 100 reais: • SELECT nome • FROM produto • WHERE valor_venda > 100; Select - Exemplo • Selecionar nomes dos produtos com valor de venda maior que 100 reais e valor de compra menor que 90 reais: • SELECT nome • FROM produto • WHERE valor_venda > 100 • AND valor_compra < 90; Select - Exemplo • Selecionar nomes dos produtos que não estejam com o prazo de validade vencido: • SELECT nome • FROM produto • WHERE validade >= ‘2016-03-16’; Select - Exemplo • Selecionar nomes dos produtos que possuam valor de venda entre 50 e 100 reais: • SELECT nome • FROM produto • WHERE valor_venda > 50 AND valor_venda < 100; Select - Exemplo • Selecionar nomes dos produtos que possuam valor de venda entre 50 e 100 reais: • SELECT nome • FROM produto • WHERE valor_venda BETWEEN 50 AND 100; Select - Exemplo • Selecionar nomes dos produtos que NÃO possuam valor de venda entre 50 e 100 reais: • SELECT nome • FROM produto • WHERE valor_venda NOT BETWEEN 50 AND 100; Select - Exemplo • Selecionar nomes dos produtos que comecem com a letra “A”: • SELECT nome • FROM produto • WHERE nome LIKE ‘A%’; Select - Exemplo • Selecionar nomes dos produtos que possuam a letra “a”: • SELECT nome • FROM produto • WHERE nome LIKE ‘%a%’; Select - Exemplo • Selecionar nomes dos produtos que terminem com a letra “a”: • SELECT nome • FROM produto • WHERE nome LIKE ‘%a’; Select - Exemplo • Selecionar nomes dos produtos que comecem com a letra “a” ou “b”: • SELECT nome • FROM produto • WHERE nome LIKE ‘A%’ • OR nome LIKE ‘B%’; Select - Exemplo • Selecionar nomes dos produtos que pertençam aos la[cínios ou carnes: • SELECT nome • FROM produto • WHERE categoria = ‘La[cínios’ • OR categoria = ‘Carnes’; Select - Exemplo • Selecionar nomes dos produtos que pertençam aos la[cínios ou carnes: • SELECT nome • FROM produto • WHERE categoria IN (‘La[cínios’, ‘Carnes’); Select - Exemplo • Selecionar nomes dos produtos que NÃO pertençam aos la[cínios ou carnes: • SELECT nome • FROM produto • WHERE categoria <> ‘La[cínios’ • AND categoria <> ‘Carnes’; Select - Exemplo • Selecionar nomes dos produtos que NÃO pertençam aos la[cínios ou carnes: • SELECT nome • FROM produto • WHERE categoria NOT IN (‘La[cínios’, ‘Carnes’); Select - Exemplo • Selecionar nomes dos produtos que estejam sem categoria: • SELECT nome • FROM produto • WHERE categoria IS NULL; Alias - Exemplo • Selecionar nomes dos produtos de A a Z: SELECT nome FROM produto ORDER BY nome ASC Nota: o ASC, geralmente, é opcional. O padrão é ASC Alias - Exemplo • Selecionar nomes dos produtos de Z a A: SELECT nome FROM produto ORDER BY nome DESC Alias - Exemplo • Selecionar nomes dos produtos com preço de venda do maior para o menor: SELECT nome FROM produto ORDER BY preco_venda DESC ALIASES (APELIDOS) Alias • Para facilitar a iden[ficação dos elementos em uma seleção, é possível criar apelidos para os itens da consulta • Dá-se, então, um alias (ou apelido) a uma tabela • Todas as colunas devem ser iden[ficadas a que tabela pertencem Alias • Necessário em algumas consultas com JOIN (junções) • Pode não ser u[lizado, ou seja, existe um modo alterna[vo Alias - Comando • SELECT apelido.coluna • FROM tabela [ AS ] apelido • Nota: o AS é opcional Alias - Exemplo • Selecionar nomes dos produtos da tabela produto SEM A UTILIZAÇÃO DO ALIAS: • SELECT produto.nome • FROM produto Alias - Exemplo • Selecionar nomes dos produtos da tabela produto: • SELECT prod.nome • FROM produto AS prod Alias - Exemplo • Selecionar nomes dos produtos da tabela produto e a projeção do preço de venda acrescido de 30%: SELECT prod.nome, prod.preco_venda * 1.3 AS produto_30 FROM produto AS prod FUNÇÕES NATIVAS Funções nativas • Existem funções na[vas do PostgreSQL que podem ser u[lizadas em diversas partes da consulta Funções nativas • Funções agregadas: • MIN(valor) – retorna o menor valor da expressão passada. Recebe valores dos [pos array, numérico, string ou date/[me. • MAX(valor) – retorna o maior valor da expressão passada. Recebe os mesmos [pos que MIN. • AVG(valor) – retorna a média aritmé[ca do(s) valor(es) passado(s). Recebe valores dos [pos smallint, int, bigint, real, double precision, numeric ou intervalo. Funções nativas • Funções agregadas: • SUM(valor) – retorna a soma dos valores da expressão passada. Recebe valores dos [pos smallint, int, bigint, real, double precision, numeric, intervalo ou monetário. • COUNT(valor) – retorna a contagem de linhas da expressão passada. Recebe qualquer expressão (coluna, consulta, view, resultado de uma função etc.) Funções nativas • Funções para String: • LOWER(valor) – deixa o valor passado em caixa baixa (minúsculo). • UPPER(valor) – deixa o valor passado em caixa alta (maiúsculo). • LENGTH(valor) – retorna a quan[dade de caracteres da string passada. Funções nativas • Funções para data: • NOW() – retorna o dia e hora atuais com fuso horário. • current_Cme, current_date, current_Cmestamp – mesmo que NOW. Time para hora, date para data, [mestamp para data e hora. • EXTRACT(valor) – extrai o campo da data passada. Recebe um [mestamp. • AGE(valor1, valor2) – calcula o intervalo entre os dois valores passados. Recebe dois [mestamp. Funções Nativas - Exemplo • Selecionar a quan[dade de produtos que possuem a letra “A” em seus nomes: • SELECTCOUNT(*) AS quan[dade • FROM produto • WHERE nome LIKE ‘%a%’; Funções Nativas - Exemplo • Selecionar os produtos com menor e maior preço de venda: SELECT MIN(preco_venda) AS menor, MAX(preco_venda) AS maior FROM produto; Funções Nativas - Exemplo • Selecionar a soma dos preços de venda de todos os produtos: SELECT SUM(preco_venda) FROM produto; Funções Nativas - Exemplo • Selecionar a média dos preços de venda de todos os produtos: SELECT AVG(preco_venda) FROM produto; Funções Nativas - Exemplo • Selecionar os nomes dos produtos em maiúsculo e em minúsculo: SELECT LOWER(nome) AS minusculo UPPER(nome) AS maiusculo FROM produto; Funções Nativas - Exemplo • Selecionar os produtos com nomes maiores que 8 caracteres: SELECT nome FROM produto WHERE LENGTH(nome) > 8; Funções Nativas - Exemplo • Selecionar nomes dos produtos que não estejam com o prazo de validade vencido: • SELECT nome • FROM produto • WHERE validade >= NOW(); Funções Nativas - Exemplo • Selecionar nomes dos produtos que não estejam com o prazo de validade vencido: • SELECT nome • FROM produto • WHERE validade >= current_date; Funções Nativas - Exemplo • Selecionar nomes dos produtos que vencem esse ano: • SELECT nome • FROM produto • WHERE EXTRACT(year from validade) = 2016; Funções Nativas - Exemplo • Selecionar quanto tempo falta para os produtos expirarem: • SELECT AGE(validade, current_[mestamp) AS intervalo • FROM produto; Próxima aula • Cláusulas GROUP BY e HAVING • Joins • Subconsultas Exercícios • Resolver os exercícios da Folha de Exercícios 2.
Compartilhar