FUNCAO MYSQL

************************************************************************ imagem com golfinho do mysql representando funções no banco de dados -------------------------------------------- Count % of Text Symbols 1 função 440 2.8 % 6 2 para 224 1.0 % 4 3 function 174 1.5 % 8 4 como 155 0.7 % 4 5 funções 144 1.1 % 7 6 valor 134 0.7 % 5 7 mysql 129 0.7 % 5 8 nome 94 0.4 % 4 9 você 92 0.4 % 4 10 pode 86 0.4 % 4 ************************************************************************* Count % of Text Symbols 1 função 212 2.8 % 6 2 para 114 1.0 % 4 3 mysql 82 0.9 % 5 4 como 80 0.7 % 4 5 function 80 1.4 % 8 6 valor 63 0.7 % 5 7 então 61 0.7 % 5 8 nome 54 0.5 % 4 9 funções 52 0.8 % 7 10 aqui 51 0.4 % 4 ******************************************************************* Count % of Text Symbols 1 função 191 3.4 % 6 2 para 85 1.0 % 4 3 então 60 0.9 % 5 4 como 56 0.7 % 4 5 function 56 1.3 % 8 6 aqui 52 0.6 % 4 7 valor 50 0.7 % 5 8 nome 49 0.6 % 4 9 você 46 0.5 % 4 10 select 39 0.7 % 6 ***************************************************** Count % of Text Symbols 1 função 177 3.2 % 6 2 para 83 1.0 % 4 3 então 60 0.9 % 5 4 como 56 0.7 % 4 5 aqui 54 0.7 % 4 6 function 52 1.3 % 8 7 valor 50 0.8 % 5 8 nome 49 0.6 % 4 9 select 38 0.7 % 6 10 você 37 0.5 % 4 ******************************************************************* e bora como exemplo tá fazendo uma 0:09 função aqui para calcular o IMC é a 0:12 fórmula do IMC IMC igual ao peso 0:15 dividido pela altura ao quadrado aí como 0:17 que eu faço esse altura ao quadrado mais 0:19 quer é basicamente eu faço um select 0:22 utiliza a função P o w que é específica 0:25 para isso o primeiro o primeiro 0:27 argumento vai ser a base no caso a 0:29 altura 0:30 e o segundo argumento vai seu expoente 0:32 que no caso aqui vai ser o 2 0:37 Oi tá altura Nossa aqui eu vou 0:42 exemplificando com 1.75 0:47 Tá certo 0:49 bom então 1.75 elevado a 2 resulta em 0:53 3,06 0:57 Ah tá para eu fazer a criação de uma 0:59 função preciso especificar o comando 1:01 cliente função eu vou falar o nome da 1:04 minha função que no caso que mmc e eu 1:07 preciso passar os parâmetros quais os 1:10 parâmetros que eu vou usar para calcular 1:11 o IMC peso e altura vão peso eu vou 1:14 especificar o tipo dele vai ser Fruit 1:18 altura também Fruit 1:22 e agora eu preciso especificar da minha 1:26 função Qual é o tipo de dado que ela vai 1:28 retornar então Returns com esse no final 1:31 Flot então eu vou calcular esses dois 1:34 essas duas variáveis o resultado delas 1:37 vai ser um flute eu preciso usar bebê 1:40 permite que também essa palavra e eu vou 1:44 deixar na descrição a documentação sobre 1:46 ela 1:48 e agora eu preciso dizer exatamente o 1:51 que que vai ser retornado então retorno 1:53 e eu vou usar aquela função pé o w 1:56 novamente que vai ser peso / p o w 2:00 altura 2:02 é elevado ao quadrado então basicamente 2:06 a função já tá criada eu vou executar 2:08 ela 2:11 ah ah tá falando que essa função já 2:13 existe eu vou deletar ela blog funtion e 2:17 Mc 2:18 E aí 2:20 E aí 2:22 bom então a dele ter a função e tô 2:24 querendo ela novamente agora Ele criou a 2:26 função posso vier aqui 2:28 o e calcular select e IMC o peso vai ser 2:34 65 e 1.75 de altura 2:38 E aí 2:40 e eu vou apelidar aqui como resultado 2:42 sendo e Mc também é 2:48 e ele vai me trazer o IMC é dessas duas 2:52 desses dois valores só porque ele me 2:55 trouxe mais casas decimais Então vou 2:57 limitar somente a duas casas decimais 2:59 vamos para isso eu uso outra função 3:01 chamada aonde que seria a aonde quando 3:08 seria arredondamento então o primeiro 3:12 parâmetro da função round é o valor que 3:14 você quer arredondar e o segundo 3:16 parâmetro é a quantidade de casas 3:19 decimais 3:21 eu tava preciso novamente deletar função 3:29 E aí agora eu vou criar ela novamente 3:33 Tá bom uma vez criada a função se eu 3:36 selecionar ela aqui elas vai retornar 3:38 para mim com a casa desse mal formatado 3:41 tá bom parece uma função básica como a 3:46 gente está retornando o som uma pequena 3:48 parte de uma informação é não preciso 3:51 especificar tanta coisa além disso aqui 3:54 então o mais que ele vai conseguir 3:57 entrar para trás isso novamente 3:59 normalmente porém existe o caso em que 4:02 eu preciso fazer algo mais complexo que 4:05 seria um cálculo do IMC mas que retorna 4:08 em vez do cálculo dele a descrição de 4:10 qual fase a esse cálculo ele tá se ele 4:14 tá em abaixo do peso até obsidade 4:17 mórbida então para isso eu preciso 4:19 trabalhar algum alguns conceitos mais 4:21 complexos eu vou criar aqui um outra 4:23 função 4:26 o IMC underline descrição também eu vou 4:31 receber os mesmos parâmetros 4:37 E aí 4:38 o retorno agora eu quero retornar uma 4:41 descrição então você que vai ser um 4:42 baixar pode ser do tamanho 30 4:46 determinística e 4:51 E ai como agora eu vou retornar mais de 4:54 eu vou escrever mais de uma linha além 4:56 do retorno eu preciso circular isso com 4:59 um bloco então Pra isso eu preciso 5:02 especificar onde o início e finalizo 5:04 essa função Então vai ser dedinho e em 5:08 ti 5:08 e agora eu posso escrever tudo aqui 5:11 dentro 5:13 E aí 5:17 e agora eu vou criar duas variáveis a 5:20 primeira vai ser da Claro 5:23 o resultado do tipo varchar 30 5:28 ah e também eu vou declarar 5:31 o IMC 5:34 o tipo flute 5:39 E aí 5:41 e ele tá me retornando um erro aqui 5:43 deixa eu ver aqui o que é 5:48 e depois eu viro de Oxi qual que seria 5:51 esse erro aqui agora eu preciso é 5:56 informar qual que é o valor do resultado 5:58 e qual que é o valor do Mc Então para o 6:00 iniciar a gente já tem uma função que 6:02 faz esse cálculo então eu vim aqui 6:04 coloco 7 6:06 o IMC igual eu vou fazer um select na 6:11 minha função que eu já criei passando 6:13 como parâmetro os pais e 6:19 Tá bom Agora eu vou criar essa tabela 6:24 aqui de condicionais né posse e me se 6:28 for menor do que 19 então ele tem que 6:30 retornar que está abaixo do peso então 6:32 nem Knife 6:33 o IMC menor de 19 6:38 bom então 6:40 o Evo 7 é resultado igual 6:45 Olá abaixo do peso 6:49 e eu tenho que colocar um ponto e, aqui 6:51 no final agora eu vou colocar um else if 6:55 tudo junto e Mc between que vai ser 7:00 entre tô entre 19 e 24 peso tá normal 19 7:05 a gente 24 dentro a isso peso está 7:12 normal 7:14 o ponto-e-vírgula também para finalizar 7:17 e é agora é entre 25 e 29 sobre isso é o 7:24 cê if 7:27 o IMC between é 7:32 Bom dia 24 24 7:36 bom então 25 e 29 7:42 E aí 7:46 o sobrepeso 7:50 E aí 7:52 E aí 7:55 G1 7:57 E aí 8:00 há 30 e 39 obesidade 1 8:09 E aí 8:12 E aí 8:18 E aí 8:21 o e marque 40 obesidade mórbida tá Mc 8:27 e é 30 e 39 aqui Mc maior ou igual a 40 8:34 tô vendo obesidade morta 8:42 e agora eu preciso finalizar o meu bloco 8:45 de instrução e então é and if I 8:50 Ah tá 8:55 e agora é eu vou ir ajustando aqui ó as 8:58 variáveis resultado é 7 resultados 9:03 o resultado igual a peso normal né 9:07 oi oi 9:13 Oi e que eu vou só aumentar o 9:16 espaçamento para ficar fácil a leitura 9:18 Então não vai alterar em nada que eu a 9:22 lógica da função 9:26 bom então basicamente é isso agora eu 9:29 preciso retornar esse carinho aqui o 9:32 resultado então aqui no final eu coloco 9:34 o retorno 9:35 o resultado ó 9:39 e é aqui o mais que ele aqui ele tá 9:42 retornando alguns erros né aqui nas 9:46 linhas 22 23 e o que que é isso 70 9:50 executar essa função aqui ele não vai 9:51 conseguir ver que tá ela que ele vai 9:54 falar para mim que existe um erro né e o 9:57 que que é o erro o mais que ela entende 9:59 por padrão que o ponto e, é o separador 10:03 é o caracter que descer para algumas 10:07 coisas no código horinha gente tá 10:10 querendo uma função e ele não consegue 10:11 entender onde essa função começa e 10:13 termina por conta do ponto e, diferente 10:16 desse caso aqui só tem uma linha 10:19 bom então a gente precisa falar para o 10:21 mais Kelly em qual bloco que ele vai 10:23 interpretar isso como você não código 10:25 somente para isso a gente usa aqui um 10:27 delimitador é delimiter 10:34 e é e eu vou colocar uma sequência de 10:37 dois caracteres cifrão então o que que 10:40 significa significa que agora é 10:47 a bela fez conseguiu aqui então agora eu 10:51 tô falando assim ó por mais Kelly Ó mas 10:53 Kelly você precisa Executar tudo que tá 10:56 dentro desses dois caracteres então eu 10:58 iniciei ele aqui e finalizei aqui 11:00 embaixo 11:01 E é só que ele ainda continua lendo o 11:04 ponto-e-vírgula mas ele vai entender que 11:06 é para ele executar esse esse bloco de 11:07 instrução tudo de uma vez então se eu 11:09 selecionar ele todo Executar a ele tá 11:13 falando aqui que essa função já existe 11:14 novamente então eu vou vir aqui em drop 11:16 no chão e Mc descrição 11:22 E onde ele tem a função aqui já tinha 11:24 anteriormente agora vou executar ela de 11:26 novo 11:29 e pronto a função foi criado agora eu 11:32 vou testar ela só para eu testar ela 11:34 basta eu chamar ela aqui de novo select 11:38 o Mc descrição o peso é no mesmo exemplo 11:43 lá de cima vai ser 65 e altura 1.75 11:50 e eu vou chamar aqui o resultado 11:53 e ele tá falando aqui que o peso é 11:56 normal Então vou chamar agora a primeira 11:58 função que vai ser e mc65 e 1.75 e aqui 12:04 eu vou aquele dessa coluna de Mc e aqui 12:07 de IMC descrição 12:17 E ai que ele retornou para mim 21.2 o 12:20 peso tá normal então se eu for lá tabela 12:22 aqui é exatamente o que ele tá ele tá me 12:24 dizendo aqui ó fiz normal 12:26 Ah é Então a criação de função era 12:29 cidade dessa forma a função mais simples 12:31 a gente não precisa é digitar tanta 12:35 coisa né 12:37 eu já não mais complexa que a gente 12:39 precisa especificar Qual que é o 12:40 delimitador para ele é ignorar o ponto 12:44 e, *************************************************** tipos de funções A instrução CREATE FUNCTION é usada em versão novas do MySQL para suporte a UDFs (User Defined Functions - Funções Definidas pelo Usuário). As UDFs continuam a ser suportadas, mesmo com a existencia de stored functions. Uma UDF pode ser considerada como uma stored function externa. No entanto, note que stored functions compartilham os seus namespace com as UDFs. ********************************************************************* ***************************************** Segurança Você deve possuir o privilégio EXECUTE em uma função para poder chamá-la. O MariaDB automaticamente concede os privilégios EXECUTE e ALTER ROUTINE à conta que chamou CREATE FUNCTION, mesmo que a cláusula DEFINER tenha sido usada. Cada função tem uma conta associada como o definidor. Por padrão, o definidor é a conta que criou a função. Use a cláusula DEFINER para especificar uma conta diferente com o definidor. Você deve possuir o privilégio SUPER para usar a cláusula DEFINER. Veja Account Names para mais informação sobre especifiação de contas. A cláusula SQL SECURITY especifica que privilégios são usados quando uma função é chamada. Se SQL SECURITY for INVOKER, o corpo da função será avaliado usando os privilégios do usuário que chama a função. Se SQL SECURITY for DEFINER, o corpo da função é sempre avaliado usando os privilégios da conta definidora. DEFINER é o padrão. Isto lhe permite criar funções que concedem acesso limitado à certos dados. Por exemplo, digamos que você tem uma tabela que armazena informação dos empregados, e que você tem concedido privilégios SELECT somente à certas colunas para a conta de usuário roger. CREATE TABLE employees (name TINYTEXT, dept TINYTEXT, salary INT); GRANT SELECT (name, dept) ON employees TO roger; Para permitir o usuário obter o salário máximo para um departamento, defina uma função e conceda o privilégio EXECUTE: CREATE FUNCTION max_salary (dept TINYTEXT) RETURNS INT RETURN (SELECT MAX(salary) FROM employees WHERE employees.dept = dept); GRANT EXECUTE ON FUNCTION max_salary TO roger; Já que SQL SECURITY é DEFINER, sempre que o usuário roger chamar esta função, o subselect irá se executar com seus privilégios. Enquanto você tiver privilégios para selecionar o salário de cada empregado, quem tenha chamado a função poderá obter o salário máximo de cada departamento sem ser capaz de ver os salários individuais. Exemplos No seguinte exemplo, a função recebe um parâmetro, executa uma operação usando uma função SQL e retorna o resultado. MariaDB [test]> CREATE FUNCTION hello (s CHAR(20)) -> RETURNS CHAR(50) DETERMINISTIC -> RETURN CONCAT('Hello, ',s,'!'); Query OK, 0 rows affected (0.00 sec) MariaDB [test]> SELECT hello('world'); +----------------+ | hello('world') | +----------------+ | Hello, world! | +----------------+ 1 row in set (0.00 sec) MariaDB [test]> Você pode usar uma instrução composta em uma função para manipular dados com instruções como INSERT e UPDATE. O exemplo a seguir cria uma função contador que usa uma tabela temporária para armazenar o valor atual. Dado que a instrução composta contém instruções encerradas com ponto e vírgula, primeiramente você tem que alterar o delimitador da instrução com a instrução DELIMITER para permitir que o ponto e vírgula seja usado no corpo da função CREATE TEMPORARY TABLE counter (c INT); INSERT INTO counter VALUES (0); DELIMITER // CREATE FUNCTION counter () RETURNS INT BEGIN UPDATE counter SET c = c + 1; RETURN (SELECT c FROM counter LIMIT 1); END // DELIMITER ; ************************************************************************************************* ***************************************************** Exemplo 03 – Crie uma função que mostre a mensagem “O preço do livro XXX é R$ YYY” para os livros do banco de dados, consultados pelo seu ID (XXX é o nome do livro, e YYY o seu preço): CREATE FUNCTION fn_verPreço (a SMALLINT) RETURNS VARCHAR(60) RETURN (SELECT CONCAT('O preço do livro ', Nome_Livro, ' é ', Preco_Livro) FROM tbl_livro WHERE ID_livro = a); Testando a função com o livro de código 9: SELECT fn_verPreço(9); *************************************************************************************
99-ganhar-dinheiro

99pay-ou-sofisa

99pay

alimentos-inflamatorios

almoco-domingo-estado-mes-ano

alura-ou-udemy

alura

apenas-o-e-mail-dado-pessoal-lgpd

apostas-online

atualizacao-para-mysqli

aumentar-acessos-com-sites-similares

bootstrap-vs-wordpress

borda-tabela-css

buffer-logger

calcular-onde-investir-me-tempo-em-conteudo

cancelar-compra-multiproprieadade

caractere-invisivel-whatsapp

caracteres-especiais-html

centraliza-html

centralizar-icone-svg

coisas-de-manaus

colecionador-disco-vinil

colocar-site-google-discovery

concurso-publico-ti-2023

configurar-outlook-servidor

consulta-sql-php-8

conteudo-provas-clinicas

cores-html

corrigindo-erro-php

curiosidade

curriculo-programador-web

cursos

dar-permissao-pasta-remota-php

decoracao-com-disco-de-vinil

dinheiro-cartoes-investimentos-fintechs

disco-de-vinil-roberto-carlos

disco-de-vinil

disco-vinil-usado-antigo

discos-amazon

discos-antigos

discos-mais-procurados-colecionadores

disder

do-que-e-feito

editor-de-video-online-gratis

email-dado-pessoal-lgpd

erro-arquivo-xml-atom

espaco-imagem-css

explicando-dinheiro-cartao-de-credito

faixa-etaria-viagem

fazer-agrupamento-sql-por-todos-campos-com-mesmo-termo

fazer-antes-de-viajar

fechar-modal

filtro-psl152

forcar-arquivo-pdf-abrir-apenas-em-iframe

forcar-pdf-apenas-iframe

formulario-lead-autorizacao-lgpd

formulario-para-registro-de-lead

foto-smartwatch

frases-curiosas

front-end-linguagens

funcao-mysql

furada

gerencia-de-projetos-2015

google-ad-manager

htaccess-nao-funciona-no-host

icone-svg

if-ternario-php

imagem-escondida

impedir-link-form

include-dentro-echo-php

inteligencia-artificial

iron-man-black-sabbath

jogo-do-tigrinho

joinads

legendas-youtube

limitar-numeros-input-python

link-interno-seo

links-do-adsense-que-as-pessoas-estao-clicando

matrix-internet

matrix-reserva

matrix

medicamentos

melhores-a-piores-praias-de-salvador

melhores-capitais-para-viajar

melhores-destinos-para-viajar-baixa-temporada-brasil

micronicho-investimento-infinitas-possibilidades

monarx

multipropriedade-vale-a-pena

musica-tela

musicas-brasileiras-viajar

musicas-criticas-a-tecnologia

musicas-que-falam-de-discos

musicas-viajar

o-colorib-sabe-que-o-template-e-dele

oceano-azul-seo

paginas-amp

palavras-bomba-hidraulica

palavras-chaves-multipropriedade

pdf-para-html

perguntas-em-vagas-de-emprego

permissao-pasta-remota-php

pesquisas-abril-22-p254

picpay-vs-nubank

pilates-penteadeira

pipe-angular-cpf

png-para-jpg

pontos-negativos-contidos-livro-mulipropriedade

prioridade-matrizes

prioridade

priorizacao-de-conteudo-para-site-e-blog

priorizar-conteudo-nos-sites

que-roupa-usar

quebra-linha-whatsapp

query-artigo-800-palavras

query-php-um-campo

questoes-clinicas-2017

questoes-sprint

reclame-aqui-ganha-dinheiro

reclame-aqui

redirect-html

regex

remover-o-s-de-uma-palavra-plural-singular-php

remover-pontos-tracos-excel

rende-mais-cdi-agosto-de-2023

retirar-linha-excel

samurai-x

seo-local

serie-explicando-dinheiro-netflix-cartao-de-credito

sexta-temporada-black-mirror

simular-colunas-tabela-html

sinal-maior-menor

sistema-multipropriedade

snake-case

sugestao-dominio-feminino

taboola-o-joao-kleber-da-internet

termos-direto-ao-ponto

tipos-join

tirar-espaco-excel

trocar-foto-smartwatchs-em-alta

usar-ad-manager

usar-adsense-em-arquivo-pdf

usar-no-sobre

valor-unico-mysqli-php

varios-sites-de-prefeituras-direcionam-para-sites-de-aposta

vinil-anos-90-dificil-achar

vinil-para-depois

viver-de-blog-monetizacao

webstories-videos-texto

whatsapp-direto

whatsapp