RESUMO PostgreSQL
RESUMO PostgreSQL
EXEMPLO:
Obs: Para adcionar respeitar a restrição da tabela coloca WITH CHECK OPTION no final do
comando
EXEMPLO:
FUNÇÃO
a) ESTRUTURA GERAL
OPERADORES → +-*/
CONCATENAR TEXTOS → 'texto' || 'texto'
FUNCAO DE POTENCIA → POWER(base, expoente);
c) IF ELSE
d) LAÇOS
Bloco de loop
LOOP
..…;
END LOOP;
FOR i IN 1..10
<bloco de loop>
WHILE condição
<bloco de loop>
e) CASE
CASE x
WHEN <a> THEN
……;
WHEN <b> THEN
……;
WHEN <c> THEN
……;
ELSE
……;
END CASE;
f) PASSAR VALOR RESULTADO DE UMA TABELA PARA UMA VARIAVEL
RETURN variavel;
END;
$$ LANGUAGE plpgsql;
CURSOR
1) DECLARAÇÃO
DECLARE
valor_buscado <tipo>;
resultado <tipo>;
cursor_nome CURSOR FOR
SELECT coluna FROM tabela;
2) LOOP
OPEN cursor_nome;
<bloco de loop>
CLOSE cursor_nome;
3) BUSCA
/lerá todo dado do cursor CURSOR_NOME correspondente a coluna e passará cada valor para
a variável VALOR_BUSCADO e a variável RESUTADO obterá o valor
EXEMPLO: Exibir a nota correspondente ao nome de um aluno
BEGIN
OPEN cursor_nota;
LOOP
FETCH NEXT FROM cursor_nota INTO notaBuscada;
EXIT WHEN NOT FOUND;
resultado := notaBuscada;
END LOOP;
CLOSE cursor_nota;
RETURN resultado;
END;
$$ LANGUAGE plpgsql;
BEGIN
UPDATE aluno SET cr = novaNota WHERE coda = codigo;
END;
$$ LANGUAGE plpgsql;
Extra SQL
UPDATE
UPDATE tabela SET coluna = (CASE WHEN <condicao> THEN <valor> ELSE <valor> END)
WHERE coluna1 = valor1;
UPDATE aluno SET cr = (CASE WHEN cr < 7 THEN cr*0.8 ELSE cr*0.8 END)
INDICE
Indice serve para melhorar o desempenho nas consultas de uma tabela naqual possa possuir
uma grande quantidade de dados.
COPIAR TABELA
(2ª passo)
CREATE TRIGGER nome_trigger <BEFORE | AFTER > <INSERT | DELETE | UPDATE >
ON tabela
FOR EACH ROW EXECUTE PROCEDURE funcao_trigger();
Dica
EXEMPLO: A tabela "alunorep" receberá as notas (cr) menores que 5 automaticamente quando
inseridas na tabela "aluno". Ambas precisam ter a mesma estrutura .
EXEMPLO: Não pode atualizar a tabela com valor que seja menor que 50% de mesmo
DELETE FROM aluno WHERE coda = 345; //será enviado a alunorep pois 4<5
DATA ATUAL
TO_CHAR (CURRENT_DATE, 'D') //Retorna dia da semana atual (0 a 6)
TO_CHAR (CURRENT_DATE, 'MM') //Retorna mês atual
TO_CHAR (CURRENT_DATE, 'YYYY') //Retorna ano atual
Criar sequencia
EXCEÇÕES