Skip to content

Commit

Permalink
adicionando referências e nova aula de triggers
Browse files Browse the repository at this point in the history
  • Loading branch information
EwertonBello committed Mar 29, 2021
1 parent cdbce25 commit 3eaefb8
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 22 deletions.
47 changes: 25 additions & 22 deletions proced_func_var_condicionais_loops.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
## Rotinas Armazenadas - Funções (CREATE FUNCTION) - 33

### Sintaxe:
```
```sql
CREATE FUNCTION nome_função(parametros)
RETURNS tipo_dados
código_da_funcao;
Expand All @@ -13,13 +13,13 @@ RETURNS INT
RETURN a*b;
```
### Invocando função:
```
```sql
SELECT nome_função(parametros);

SELECT fn_teste(2.5, 4) AS Resultado;
```
### Deletando função:
```
```sql
DROP FUNCTION nome_função;

DROP FUNCTION fn_teste;
Expand All @@ -28,7 +28,7 @@ DROP FUNCTION fn_teste;
## Procedimentos Armazenados - Básico (STORED PROCEDURES) - 34

### Sintaxe:
```
```sql
CREATE PROCEDURE nome_procedimento (parametros) declarações;

CREATE PROCEDURE verPreço (varLivro smallint)
Expand All @@ -37,13 +37,13 @@ FROM tbl_Livro
WHERE ID_Livro = varLivro;
```
### Invocando procedimento:
```
```sql
CALL nome_procedimento(parametros);

CALL verPreço(3);
```
### Deletando procedimento:
```
```sql
DROP PROCEDURE nome_procedimento;

DROP PROCEDURE verPreço;
Expand All @@ -54,7 +54,7 @@ DROP PROCEDURE verPreço;
Utiliza um DELIMITER pra ele não executar uma query na criação da função/procedimento ao ver o delimitador padrão ;

### Sintaxe Função e Procedimento:
```
```sql
DELIMITER $$
CREATE FUNCTION aumenta_preco(preco DECIMAL(10, 2), taxa DECIMAL(10, 2))
BEGIN
Expand All @@ -74,13 +74,13 @@ END//
DELIMITER ;
```
### Invocando Função e Procedimento:
```
```sql
SELECT aumenta_preco(50.00, 10.00) AS Resultado;

CALL verPreço(3);
```
### Deletando Função e Procedimento:
```
```sql
DROP PROCEDURE nome_procedimento;

DROP PROCEDURE verPreço;
Expand All @@ -95,7 +95,7 @@ INOUT serve pra ambos
Obs: se não especifica nada é IN por default

### Sintaxe:
```
```sql
MODO nome_param tipo_param(tamanho_param)

-- Exemplo IN:
Expand All @@ -120,7 +120,7 @@ END//
DELIMITER ;
```
### Invocando:
```
```sql
SET @livro = 4;
SET @aumento = 20;
CALL aumenta_preco(@livro, @aumento);
Expand All @@ -132,7 +132,7 @@ SELECT @livro;
## Variáveis locais e escopo - 37

### Sintaxe:
```
```sql
DECLARE nome_var1 tipo, nome_var2 tipo [DEFAULT valor_padrão]

DELIMITER //
Expand All @@ -148,14 +148,14 @@ DELIMITER ;

```
### Invocando:
```
```sql
SELECT calcula_desconto(4, 10.00);
```

## Blocos Condicionais IF - THEN - ELSE e CASE - 38

### Sintaxe:
```
```sql
IF condição THEN lista_declarações
[ELSEIF condição THEN lista_declarações]
...
Expand All @@ -172,14 +172,14 @@ ELSE lista_declarações
END CASE;
```
### Invocando:
```
```sql
SELECT função(4, 10.00);
```

## Estruturas de Repetição - LOOP - 40

### Sintaxe:
```
```sql
[<rótulo>:] LOOP
declarações
END LOOP [<rótulo>];
Expand All @@ -204,7 +204,7 @@ END//
DELIMITER ;
```
### Invocando:
```
```sql
CALL acumula(10);
```

Expand All @@ -213,7 +213,7 @@ CALL acumula(10);
Diferença pro LOOP é que ele faz uma verificação utilizando o UNTIL pra continuar se UNTIL for verdadeiro ele encerra.

### Sintaxe:
```
```sql
[<rótulo>:] REPEAT
declarações
UNTIL condição
Expand All @@ -238,14 +238,14 @@ END//
DELIMITER ;
```
### Invocando:
```
```sql
CALL acumula_repita(10);
```

## Estruturas de Repetição - WHILE - 42

### Sintaxe:
```
```sql
[<rótulo>:] WHILE condição DO
declarações
END WHILE [<rótulo>];
Expand All @@ -264,7 +264,7 @@ END//
DELIMITER ;
```
### Invocando:
```
```sql
CALL acumula_while(10);
```

Expand All @@ -273,6 +273,9 @@ CALL acumula_while(10);
Declaração que vai dentro dos loops pra retornar ao início do loop novamente

### Sintaxe:
```
```sql
ITERATE nome_rótulo_while_repeat_loop;
```

## Referências do 33 ao 43:
- https://www.youtube.com/playlist?list=PLucm8g_ezqNrWAQH2B_0AnrFY5dJcgOLR (Vídeos do 33 ao 43)
31 changes: 31 additions & 0 deletions triggers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Aula Banco de Dados (29/03/2021)

## Triggers - 44

Usa NEW pra indicar o processo ocorrerá no novo registro
Existe também o OLD, pra indicar o registro antigo, normalmente utilizado para fins de comparação na operação de UPDATE

timing = AFTER, BEFORE
operação = INSERT, UPDATE, DELETE

### Sintaxe:
```sql
CREATE TRIGGER nome_trigger timing operação
ON nome_tabela
FOR EACH ROW
declarações;

CREATE TRIGGER tr_desconto BEFORE INSERT
ON produto
FOR EACH ROW
SET NEW.Preco_Desconto = (NEW.Preco_Normal * 0.90);
```
### Invocando trigger:
```sql
INSERT INTO produto (Nome_produto, Preco_Normal)
VALUES ('Monitor', 1.00);
```
## Referências:
- https://www.youtube.com/watch?v=JOnkvqUaNOU (MySQL - Triggers - Definição, Sintaxe e Criação - 44)
- https://www.youtube.com/watch?v=YMPGnavrfjs (Criando Trigger no MySQL em poucos minutos)
- https://ayltoninacio.com.br/blog/criando-trigger-no-mysql-em-poucos-minutos

0 comments on commit 3eaefb8

Please sign in to comment.