--Lesson 02
--Alter table
Create table exemplo01 (
codigo number(6),
nome varchar2(50));
--adicionar coluna
alter table exemplo01
add (data_nascimento date);
desc exemplo01;
--modificar uma coluna existente
alter table exemplo01
modify (nome varchar2(70));
desc exemplo01;
--apagar uma coluna
alter table exemplo01
drop column data_nascimento;
desc exemplo01;
insert into exemplo01 values(1,'anderson');
alter table exemplo01
modify (nome varchar2(80) not null);
rollback;
-- Obs.: o alter table, faz commit automático
select * from exemplo01;
desc exemplo01;
alter table
add (data_nascimento date not null);
--como já tenho informação não posso adicionar o not null
alter table exemplo01
add (tipo number(2) default 1);
--no registro onde a coluna estava vazio, foi colocado o valor default
select * from exemplo01;
alter table exemplo01
add (tipo2 number(2) default 1 not null);
--adicionando o valor default funciona
select * from exemplo01;
alter table exemplo01
add (tipo3 number(2));
--assim ele adiciona o valor como sendo nulo
select * from exemplo01;
insert into exemplo01 values(2,'teste',2,default,5);
select * from exemplo01;
alter table exemplo01
modify (tipo3 number(2) default 3);
--o valor que esta gravado, não é alterado
select * from exemplo01;
--Desabilitar uma coluna para apagar em um momento mais propicio
alter table exemplo01
set unused(tipo3);
select * from exemplo01;
desc exemplo01;
alter table exemplo01
add (tipo3 number(2) default 3);
select * from user_unused_col_tabs;--Pra saber quantas colunas foram desbilitadas em tabelas que sou dono
select * from all_unused_col_tabs;--Pra saber quantas colunas foram desbilitadas em todas tabelas que tenho acesso
select * from dba_unused_col_tabs;--Pra saber quantas colunas foram desbilitadas em todas as tabelas do banco de dados
--Apagar a coluna desabilitada
alter table exemplo01
drop unused columns;
Alter table exemplo01
modify (codigo primary key);
Alter table exemplo01
modify (nome default 'abc'); --apenas adicionar as alterações
select * from exemplo01;
desc exemplo01;
create table exemplo02 (numero number(6));
create table exemplo03 (numero number(6));
alter table exemplo02
modify (numero primary key); --o oracle nomeia a constraint automaticamente
insert into exemplo02 values (1); --não permite valores dublicados
alter table exemplo03
add constraint exemplo03_numero_pk --constraint nomeada
primary key (numero)
deferrable initially deferred; --Com essa alteração ele permite valores duplicados na cheve primaria,
--para que possa validar os dados de uma importação por exemplo,
--mas ao dar commit, ele apresentará o erro, fazendo o rollback automatico.
insert into exemplo03 values (1);
select * from exempl
commit;
--Trazer todas as constrains com chave primaria
select * from user_constraints
where constraint_type = 'P'
order by table_name;
--Apagar coluna
Alter table exemplo01
Drop column codigo;
--Drop column codigo cascade coonstraints; -- caso haja relacionament, apaga também o relacioanmento
select * from exemplo01;
--Renomear uma coluna
Alter table exemplo01
Rename column tipo
to tipo1;
select * from exemplo01;
--Tabela de index do usuário
Select *
from user_indexes;
---Flashback
--Recuperar uma tabela deletada
select * from job_history;
drop table job_history;
select * from recyclebin;
select * from "BIN$EdiYkjS3RpSdZRSk6QV7Fg==$0";
Flashback table job_history to before drop;
select * from job_history;
----Teste
Create table Apagar (codigo number(6), nome varchar2(40));
drop table Apagar;
select * from recyclebin;
create table Apagar (codigo number(6), nome varchar2(40));
insert into Apagar values (1, 'abc');
commit;
select * from Apagar;
Drop table Apagar;
select * from recyclebin;
create table Apagar as select * from "BIN$qUwIHQOwS/ueyFtW3pZ1mQ==$0";
insert into Apagar values(2,'der');
commit;
select * from Apagar aa
left join "BIN$qUwIHQOwS/ueyFtW3pZ1mQ==$0" lixeira
on (aa.codigo = lixeira.codigo);
Fiquem a vontade para comentar e sugerir melhorias e/ou correção dos exemplos acima.
Nenhum comentário:
Postar um comentário