Вы находитесь на странице: 1из 5

Criando sequencias em sql

create sequence seq_aula


start with 0
increment by 10
maxvalue 100
minvalue 0
cycle
nocache;

Funções
Round
select round(2.98,2) from dual

trunc
select trunc(2.9889,1) from dual

DECODE(SEXO,’M’,MASC’,’F’,’FEMININO’,’INDEFINIDO’)
SE ENTAO SE ENTAO SENAO == INDEFINIDO

SELECT DECODE(CID_COD,1,'UM','OUTRO....') AS CODIGO


FROM CIDADE

FUNÇÕES DE CONVERSÃO

hora e data
SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI:SS') FROM DUAL;
transforma a data em no formato char
somente a hora
SELECT TO_CHAR(SYSDATE,'HH24:MI:SS') FROM DUAL;
somente o ano e mes
SELECT TO_CHAR(SYSDATE,'YYMM') FROM DUAL;
somente o numero do dia da semana
SELECT TO_CHAR(SYSDATE,'D') FROM DUAL;
somente o dia por extenso
SELECT TO_CHAR(SYSDATE,'Dy') FROM DUAL;
Pega a hora do sistema menos uma determinada data
SELECT (SYSDATE - TO_DATE('02/07/1980','DD/MM/YYYY')) / 360 FROM DUAL
Somando 15 horas sobre a data do sistema
SELECT SYSDATE + 15 FROM DUAL;
hora atual do sistema mais 24 horas para charactere
SELECT TO_CHAR(SYSDATE+1/24, 'DD/MM/YY HH24:MI') FROM DUAL;
adiciona ou diminui determinada quantidade de meses a partir da data do sistema
SELECT ADD_MONTHS(SYSDATE, -25 ) FROM DUAL;
adiciona + 30 dias a partir do ultimo dia do sistema(ontem)
SELECT LAST_DAY(SYSDATE + 30) FROM DUAL;

Diferença entre Function e Procedure

Function
Retorna o valor na propria função
Procedure
Não retorna valor na propria função

LooP Básico:
DECLARE
VAR_COD EMPREGADO.COD_EMPREGADO%TYPE := 100;
// do tipo empregado que pertence a tabela empregado

VAR_CONTADOR NUMBER(2) :=1;


BEGIN
LOOP
INSERT INTO ITEM(COD_EMPREGADO,ORDEM)
VALUES(VAR_COD,VAR_CONTADOR);
VAR_CONTADOR := VAR_CONTADOR+1;
EXIT WHEN VAR_CONTADOR > 10;
END LOOP;
END;

Indices
O que é um índice? para que serve?

Recomenda-se
Por regra toda chave primária possui um índice(automático)
toda chave estrangeira tenha um índice para ela
ATRIBUTOS com maior numero de consultas possua índice também
se a consulta for rara nao precisa da existencia de índices, pois o banco precisa escrever mais
vezes no caso da inserção, ex: na tabela, no índice

CRIANDO UMA FUNÇÃO

SINTAXE PARA CRIAR UMA PROCEDURE


CREATE OR REPLACE FUNCTION CONCATENAR
(P_CID_COD IN CIDADE.CID_COD%TYPE) RETURN VARCHAR2
IS
AUX VARCHAR2(100);//DELACAR O TAMANHO
BEGIN
SELECT (CID_NOME||'-'||CID_UF) INTO AUX //SIMBOLOS PARA CONCATENAÇÃO
FROM CIDADE
WHERE CID_COD = P_CID_COD;
RETURN(AUX);
END;

SELECT CLI_NOME,CONCATENAR(CID_COD) AS CIDADE


FROM CLIENTE;

Exercício
FAÇA UMA PROCEDURE PARA INSERIR UM CLIENTE
* PARAMETROS DE ENTRADA: TODOS OS ATRIBUTOS DO CLIENTE
* PARAMETROS DE SAIDA: MENSAGEM DO SISTEMA
EXEMPLO “INCLUIDO COM SUCESSO” OU “CPF INVALIDO”

NÃO PODE INSERIR CLIENTE COM CPF INVALIDO


PROCEDURE

CRIAR SEQUENCIA
CREATE SEQUENCE SEQ_CLIENTE
START WITH 1
INCREMENT BY 1
NOMAXVALUE
NOMINVALUE
NOCYCLE
NO CACHE

ALTERAR SENHA
ALTER USER “300400500” IDENTIFIED BY “SENHAX”;

==================EXEMPLOS DE CATALOGO DO SISTEMA==================


catálogo do sistema -> SYS (dono)

SYSTABLES____USER_TABLES
SYSCOLUMNS___USER_COLUMNS
SYSINDEXES____USER_INDEXES
SYSUSERS______USER_SYSUSERS

===================================VISOES===========================

USER_TABLES
USER_COLUMNS
USER_INDEXES
-
-
-
-
-
USER_SOURCE
USER_OBJECTS
USER_CONSTAINTS

Construindo visoes
OBS: Visão é uma representação logica que representa uma tabela
OBS:quando utilizamos visao simplificamos sql e temos mais segurança, but nos perdemos um
pouco em determinadas situações no desempenho.
Quando queremos proteger um conjusto de tabelas podemos utilizar

CREATE VIEW V_CLI


AS SELECT C.CLI_COD, C.CLI_NOME,
D.CID_NOME||’-’||D.CID_UF AS CID
FROM CLIENTE C, CIDADE D
WHERE C.CID_COD = D.CID_COD;

============OPERAÇÕES DML EM VISOES==========================


-As views podem refletir alterações em suas tabelas fundamentais/bases desde que contenham
as respectivas chaves primárias
-Visões com junções ou funções de grupo(sum,count...) não são atualizáveis.

Obs:Podemos faer insert update delete desde que a visão contenha a chave primaria da tabela
base, desde que nao tenha junções, counts.

Obs: Vantgens
Independencia logica de dados
Podemos alterar uma estrutura de uma tabela cuja visao
Crescimento
podemos alterar as estruturas das tabelas, pois as visões nao serao refletidas
ex:

CLI_COD CLI_NOME END SALARIO UF NR_DEP

1 SP

2 SP

3 PR

4 PR
5 PR

CREATE VIEW V_CLA SELECT C1.CLI._COD, C1.CLI_COD, C1.CLI_NOME,


C1_END,C2.SALARIO,C2_UF,C2.NR_DPTO
FROM CLIENTE_1 C1, CLIENTE_2 C2
WHERE C2.CLI_COD = C2.CLI_COD;

Mario Vieira da Silva Junior

Вам также может понравиться