Escolar Documentos
Profissional Documentos
Cultura Documentos
SQL e PL/SQL
{bccf,mjmcj}@cin.ufpe.br
...
[CONSTRAINT "PK_<tableName>“] primary key (<campo1>,[<campo2>,...,<campon>]),
[CONSTRAINT “FK_<tableName>“][foreign key] (<campo>) REFERENCES <table>(campo)
);
DDL
Exemplo:
Create table pessoa (
cod_pessoa number(5) NOT NULL,
nome varchar2(150) NOT NULL,
endereco varchar2(150) ,
fone varchar2(11) ,
tipo char(1) NOT NULL,
CONSTRAINT “PK_PESSOA” primary key (cod_pessoa)
);
DDL
Exemplo:
Create table funcionario (
cod_pessoa number(5) NOT NULL,
cod_cargo number(5) NOT NULL,
salario number(5,2) ,
CONSTRAINT “PK_FUNC” primary key (cod_pessoa),
CONSTRAINT “FK_PESSOA” foreign key (cod_pessoa)
references pessoa(cod_pessoa),
CONSTRAINT “FK_CARGO” foreign key (cod_cargo)
references cargo(cod_cargo)
);
DDL
Comando Alter
Modificando uma coluna
Alter Table <nome> MODIFY (
<campo> <tipo>(<tamanho>) [NOT NULL]
);
• Ex:
Alter Table pessoa MODIFY (
nome varchar2(200) NOT NULL
);
DDL
Comando Alter
Adicionando uma coluna
• Ex:
Alter table funcionario add (
data date NOT NULL
);
DDL
Comando Alter
Eliminando uma coluna
Alter Table <nome> DROP (
<campo>
);
• Ex:
Alter Table funcionario DROP (
data
);
DDL
Comando Drop
Excluindo uma tabela
• Ex:
DROP TABLE pessoa [CASCADE CONSTRAINTS];
DDL
Visões
Tabelas virtuais que não ocupam espaço físico
create view <nome> as select <consultas>
Ex.:
Insert into cargo (cod_cargo,descricao) values (1,’Caixa’);
Ex.:
Update pessoa set endereco = ‘novo_endereco’, fone =
null where cod_pessoa = 1;
Ex.:
Delete from funcionario where cod_pessoa = 1;
Excluindo um trigger
drop trigger <nome-do-trigger>;
Ex.:
drop trigger testa_salario;
Triggers
Visualizando seus triggers
/* Visualizando apenas o nome dos meus
triggers */
Select trigger_name from user_triggers;
Ex.:
EXEC aumenta_salario(5);
Ex.:
DROP PROCEDURE aumenta_salario;
Functions
Criando uma função
/* Esta função conta a quantidade de funcionários em um
determinado cargo. */
create or replace function contafunc(codCargo
cargo.cod_cargo%type) return number is
qtdFunc number;
begin
select count(*) into qtdFunc from funcionario
where cod_cargo = codCargo;
return qtdFunc;
end;
/
Functions
Executando uma função
select <nome-da-funcao> from dual;
Ex.:
select contafunc(1) from dual;
Obs:DUAL - tabela do usuário SYS e que todos os
usuários têm acesso
Ex.:
drop function contafunc;
Packages
Criando a chamada de um package
create package pacote_teste is
procedure aumenta_salario(percentual
number);
function contafunc(codCargo in
cargo.cod_cargo%type) return number;
end;
Packages
Criando o corpo de um package
create package body pacote_teste is
procedure aumenta_salario(percentual number) is
begin
update funcionario set salario = salario * (1 +
percentual/100);
end;
function contafunc(codCargo in
cargo.cod_cargo%type) return number is
qtdFunc number;
begin
select count(*) into qtdFunc from funcionario
where cod_cargo = codCargo;
return qtdFunc;
end;
end;
Packages
Referenciando um subprograma do
package
Ex.:
exec pacote_teste.aumenta_salario(10);
Ex.:
drop package body pacote_teste;
Ex.:
drop package pacote_teste;
Referências
Ramalho, José Antônio. Oracle 9i,
São Paulo, Berkeley Brasil, 2002.
{bccf,mjmcj}@cin.ufpe.br