************************************************************************
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
FUNCAO MYSQL
