Baixe o app para aproveitar ainda mais
Prévia do material em texto
Funções em SQL II SST Costa, Lidiane Farias Funções em SQL II / Lidiane Farias Costa Ano: 2021 nº de p. : 18 Copyright © 2019. Delinea Tecnologia Educacional. Todos os direitos reservados. Funções em SQL II 3 Apresentação Vamos estudar, hoje, sobre as Funções em SQL. Uma função pode ser compreendida como um conjunto de comandos com um único nome. Os SGBDs possuem algumas funções nativas, chamadas de funções internas, mas também podem ter funções em SQL, o que possibilita ao usuário criar as próprias funções de acordo com as suas necessidades. 4 1. Funções de strings As funções internas são recursos criados para facilitar a vida do programador com o agrupamento de diversas ações em um único comando. Podem ser classificadas de acordo com os objetivos. Vejamos o quadro a seguir. Tipos de funções internas FUNÇÃO INTERNA DESCRIÇÃO Funções de agregação Agrupam diversos valores, retornando apenas um valor de acordo com as condições preestabelecidas. Funções escalares Recebem um conjunto de valores e, após execução, retornam somente um valor. Fonte: Elaborado pelo autor (2021). #PraCegoVer: Quadro que representa dados da função interna de agregação e escalares e a descrição dessas funções. 2.Funções de agregação, ou de conjunto A linguagem SQL implementa diversas funções de agregação, ou de conjunto. Estas são utilizadas para agregar conjuntos de valores ou resumir informações em único resultado, facilitando a compreensão da informação processada. No quadro a seguir, podemos conhecer as funções de agregação disponíveis na linguagem SQL. Tipos de funções de agregação, ou de conjunto FUNÇÃO DE AGREGAÇÃO, OU DE CONJUNTO DESCRIÇÃO SUM Agrega os valores numéricos em um único valor, de acordo com as colunas especificadas. MIN Verifica os valores da coluna informada e retorna o menor valor encontrado. MAX Verifica os valores da coluna informada e retorna o maior valor encontrado. 5 COUNT Conta o número de registros retornados de acordo com as condições definidas. AVG Agrega os valores numéricos em um único valor, calculando a média de todos os valores encontrados, de acordo com as colunas especificadas. Fonte: Elaborado pelo autor (2018). #PraCegoVer: Quadro com funções de agregação bem como a descrição de cada função. Agora que conhecemos as funções de agregação disponíveis, podemos avaliar e aprender quando e como utilizá-las. Veremos que cada uma possui sintaxe e condições adequadas para ser adotada. SUM A função SUM() realiza e retorna o somatório de valores de uma determinada coluna. Deve ser utilizada somente com atributos numéricos, como float, int, number etc. Por exemplo, se quisermos somar o total de vendas de uma loja, podemos usar: SELECT SUM(VALORTOTAL) FROM VENDAS Atenção O valor obtido ainda pode ser adotado na própria query para realização de outras operações. Como exemplo, o gestor da loja pode saber que apenas 40% do valor total das compras representam o lucro; o restante é referente às despesas de manutenção. Portanto, é possível criar uma consulta que retorne o lucro final da loja da seguinte maneira: SELECT SUM(VALORTOTAL) * 0.4 FROM VENDAS Atenção 6 MIN A função MIN() seleciona o menor valor de uma coluna. Deve ser utilizada em colunas que apresentam apenas valores numéricos ou data. Por exemplo, se quisermos selecionar a data da última compra realizada no sistema, podemos usar a seguinte query: SELECT MIN(DATA) FROM VENDAS Atenção MAX O comando MAX() retorna o valor máximo da coluna em que foi utilizado. Pode ser usado em colunas que contenham valores numéricos ou data. Como exemplo, podemos selecionar o maior valor total de venda realizada pela loja: SELECT MAX(VALORTOTAL) FROM LOJA Atenção 7 Funções de agregação de valores numéricos Fonte: Plataforma Deduca (2021). #PraCegoVer: Imagem que representa as mãos de uma pessoa sinalizando sobre gráficos em um tablet em preto e branco. COUNT Diferentemente das demais funções citadas, o comando COUNT() não realiza o agrupamento dos valores da coluna em que foi utilizado. Esse comando apenas conta o número de registros retornados pela sentença que está sendo executada. Para contar todos os registros, ou seja, o número de linhas retornado, basta utilizar o comando COUNT(*), com o asterisco dentro dos parênteses. Caso o objetivo seja contar todas as ocorrências de uma determinada coluna, só é preciso informar a coluna desejada entre parênteses. Por exemplo, se precisarmos contar o número de vendas realizadas pela loja, devemos utilizar o seguinte comando: SELECT COUNT(*) FROM VENDAS Atenção Podemos verificar a quantidade das vendas que foram realizadas para entrega domiciliar com base na contagem de vendas em que foram informados endereços para entrega. Nesse caso, a sentença teria a seguinte forma: 8 SELECT COUNT(ENDERECOENTREGA) FROM VENDAS Atenção Também podemos obter os mesmos resultados escrevendo a sentença de outra maneira: SELECT COUNT(*) FROM VENDAS WHERE ENDERECO ENTREGA IS NOT NULL Atenção O comando DISTINCT pode ser adotado juntamente com a função COUNT(), para que sejam somadas apenas as ocorrências de itens diferentes na seleção especificada. Ainda segundo o nosso exemplo da loja, para contar a quantidade de endereços diferentes para os quais foram realizadas vendas para entregas em domicílio, usamos a sentença: SELECT COUNT(DISTINCT ENDERECOENTREGA) FROM VENDAS Atenção AVG A função AVG() só pode ser aplicada a colunas de valores numéricos, pois a sua funcionalidade consiste em calcular o valor da média aritmética de todos os registros encontrados para a coluna informada. Como exemplo, é possível calcular o valor médio do valor total das vendas realizadas pela loja com a query: 9 SELECT AVG(VALORTOTAL) FROM VENDAS Atenção GROUP BY Juntamente com as funções de agregação, é comum que seja utilizado o comando GROUP BY para agrupar os valores encontrados por determinada condição ou coluna. No nosso exemplo da loja, para selecionar o valor médio total de compras realizados para cada endereço de entrega informado, basta usarmos: SELECT AVG(VALORTOTAL) FROM VENDAS GROUP BY ENDERE- COENTREGA Atenção As funções de agregação são fundamentais para realizar junções e cálculos diretamente na SQL. Isso evita que o programador precise inserir funções no código fonte para obter as informações efetuadas pelas funções e o resultado retornado. 3. Funções escalares São compreendidas como funções escalares aquelas que recebem um ou mais valores de entrada, mas seu retorno é sempre um valor. As funções escalares podem ser classificadas de acordo com as categorias informadas no quadro a seguir. 10 Tipos de funções escalares FUNÇÃO ESCALAR DESCRIÇÃO Funções de calendário Executam operações sobre as colunas que guardam datas. Funções matemáticas Fazem o cálculo de expressões utilizando valores numéricos. Funções de strings Manipulam valores do tipo string, ou seja, cadeias de caracteres. Funções de conversão Convertem valores dos diferentes tipos de dados. Funções de segurança Manipulam controles e parâmetros de segurança da instalação. Funções de ambiente Manipulam controles e parâmetros do sistema operacional e do SGBD. Funções de metadados Exploram o projeto do banco de dados desde a estrutura dos esque-mas às configurações dos atributos definidos nas tabelas. Fonte: Elaborado pelo autor (2018). #PraCegoVer: Quadro com funções de agregação bem como a descrição de cada função. Agora que estudamos a classificação das funções escalares, podemos identificar os comandos que fazem parte das principais categorias citadas. Funções de calendário A linguagem SQL tem algumas funções para facilitar o processo de manipulação de valores de datas. Cada SGBD implementa, em sua linguagem própria, outras funções adotadas para aprimorar aquelas já oferecidas pela SQL. Primeiramente, precisamos conhecer os tipos de dados relativos a valores de datas que são reconhecidos pela linguagem SQL. Vejamoso quadro a seguir. Dados relativos à data reconhecidos pela SQL TIPO DE DADO DESCRIÇÃO DATE Trabalha apenas com data. TIME Trabalha somente com hora. TIMESTAMP Comporta data e hora. INTERVAL Trabalha com intervalo entre TIME e TIMESTAMP. Fonte: Elaborado pelo autor (2021). 11 CURRENT Para facilitar a manipulação das datas e a definição do valor de data e hora atual do sistema, para uso na criação de query, a linguagem SQL implementa os seguintes comandos: CURRENT_DATE(): retorna a data atual do sistema. SELECT CURRENT_DATE() CURRENT_TIME: retorna o horário atual do sistema. SELECT CURRENT_TIME() CURRENT_TIMESTAMP: retorna o valor de data e hora atuais do sistema. SELECT CURRENT_TEMISTAMP Atenção Manipulação de data Fonte: Plataforma Deduca (2021). #PraCegoVer: Imagem que representa um calendário. Se quisermos, por exemplo, filtrar as vendas realizadas na data de hoje, podemos fazê-lo por meio da comparação entre a data atual do sistema e a data da venda: 12 SELECT * FROM VENDAS WHERE DATAVENDA = CURRENT_DATE Atenção É possível realizar operações aritméticas com as datas dentro das próprias sentenças. Basta fazer uma soma de dias à data de venda retornada pela consulta: SELECT DATAVENDA + 10 WHERE DATAVENDA = CURRENT_DATE Atenção Se for necessário calcular os dias restantes para pagamento do valor de uma compra feita pela cliente chamada Maria, por exemplo, podemos usar: SELECT DATAPRAZO - CURRENT_DATA FROM VENDAS WHERE COMPRADOR = ‘MARIA’ Atenção BETWEEN A função BETWEEN define uma condição de intervalo entre datas. Com ela, é possível selecionar registros em um determinado espaço de tempo. Como exemplo, podemos filtrar as vendas realizadas desde o dia primeiro de janeiro até a data de hoje: 13 SELECT *FROM VENDAS WHERE DATAVENDA BETWEEN ‘01-01- 2018’ AND CURRENT_DATE Atenção EXTRACT A função EXTRACT é aplicada a um dado relacionado ao tipo DATA, para extração de informações nele contidas. Por exemplo, podemos extrair o ano com: SELECT EXTRACT(ANO FROM DATAVENDA) FROM VENDAS Atenção O mês pode ser extraído da seguinte maneira: SELECT EXTRACT(MONTH FROM DATAVENDA) FROM VENDAS Atenção E o dia: SELECT EXTRACT(DAY FROM DATAVENDA) FROM VENDAS Atenção 14 Ainda podemos obter as informações de hora, minuto e segundo apenas usando os identificadores HOUR, MINUTE e SECOND. GETDATE A função GETDATE() retorna o valor de data e hora referentes ao sistema operacional em que o SGBD se encontra. Para essa função, não são passados parâmetros. Vejamos como utilizá-la: SELECT GETDADE() Atenção Funções matemáticas As funções matemáticas realizam operações matemáticas sobre as colunas que estão indicadas. Algumas delas já foram citadas e explicadas em tópicos anteriores, como as funções agregadas: SUM, COUNT, AVG, MIN e MAX. Então, agora vamos ver outras funções matemáticas ainda não citadas. FIRST A função FIRST() retorna o primeiro valor encontrado de acordo com a sentença definida. Não é suportada por alguns SGBDs. Por exemplo, para selecionar o primeiro nome de cliente encontrado na tabela de vendas, basta utilizar a sentença: SELECT FIRST(NOME_CLIENTE) FROM VENDAS Atenção 15 LAST O comando LAST é a função contrária à FIRST(). Localiza o último registro que atenda às condições definidas pela query. Assim como a função FIRST(), não está disponível na maioria dos SGBDs. Ainda segundo o nosso exemplo da loja, a sentença para selecionar o último nome de cliente encontrado na tabela de vendas é: SELECT LAST(NOME_CLIENTE) FROM VENDAS Atenção SQRT A função SQRT() calcula a raiz quadrada do valor que foi passado para a função. É necessário que seja indicado somente um valor, cuja raiz quadrada será calculada. O exemplo a seguir retorna o valor 3. SELECT SQRT(9) Atenção SQUARE A função SQUARE() faz o cálculo do valor que é passado para a função. Também só recebe um único valor, cujo quadrado será calculado e retornado. O exemplo a seguir retorna o valor 9. 16 SELECT SQRT(3) Atenção POWER A função POWER() calcula a potência segundo dois parâmetros. O primeiro parâmetro é o valor de base; o segundo, a potência a que o primeiro será elevado. Vejamos: SELECT POWER(2, 3) Atenção 17 Fechamento Hoje, vimos, sobre as funções internas. Além disso, vimos que existem dois tipos de funções: as funções de agregação, ou de conjunto, e as funções escalares. Assim, o programador pode escolher entre essas duas funções internas distintas para facilitar suas ações. 18 Referências ELMASRI, R. N. Sistema de banco de dados. 6. ed. São Paulo: Pearson, 2010. HEUSER, C. A. Projeto de banco de dados. Porto Alegre: Bookman, 2011. MACHADO, F. R. Banco de dados: projeto e implementação. São Paulo: Érica, 2014.
Compartilhar