Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

alterar a coluna drop da tabela no banco de dados oracle


Muitas vezes precisamos descartar a coluna na tabela. Existem duas maneiras de descartar a coluna no Oracle
(a) alterar a coluna descartar a tabela no oracle
(b) alterar a tabela definir a coluna não utilizada no oracle

DROP COLUMN usando DROP COLUMN


Aqui, removemos a coluna da tabela usando o comando abaixo .
ALTER TABLE table_name
DROP COLUMN col_name;

Esta instrução leva bloqueio exclusivo na tabela e se a tabela for grande, levará tempo para executar a consulta

Exemplo
SQL> CREATE TABLE Books_master
( Book_Id NUMBER(6,0),
Title VARCHAR2(50),
Author VARCHAR2(50),
ISBN VARCHAR2(25),
BCost NUMBER(6,0),
Publish_Year NUMBER(4,0),
CONSTRAINT Books_master_PK PRIMARY KEY (Book_Id),
CONSTRAINT Books_master_UK1 UNIQUE (Title, Author),
CONSTRAINT Books_master_UK2 UNIQUE (ISBN)
) ;
Table created.

SQL> INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (10, 'Complete/Convenient', 'Ketan Bhagat', 'ISBN 978-93-80349-92-3', 195, 2013);
SQL>INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (20, 'Deception Point', 'Dan Brown', 'ISBN 0-671-02738-7', 563,2001);
SQL> INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (30, 'Angels-Demons', 'Dan Brown', 'ISBN 0-671-02736-0',563, 2000);
SQL>INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (40, 'Harry Potter', 'J.K. Rowling', 'ISBN 0-7475-5100-6', 102,2003);

SQL> commit;
Commit complete.

SQL> column TITLE format a10
SQL> column AUTHOR format a10
SQL> column ISBN format a15
SQL > Desc BOOKS_MASTER

Vamos remover uma coluna desta tabela
SQL> alter table books_master drop column PUBLISH_YEAR;
Table altered.

SQL > Desc BOOKS_MASTER
SQL> Select * from Books_master;

DROP COLUMN usando SET UNUSED

  • se estiver preocupado com o recurso consumido ao descartar a coluna, use a instrução ALTER TABLE…SET UNUSED .
  • Esta instrução marca uma ou mais colunas como não utilizadas, mas não remove os dados da coluna de destino nem restaura o espaço em disco ocupado por essas colunas.
  • Uma coluna marcada como não utilizada não é exibida em consultas ou visualizações de dicionário de dados, e seu nome é removido para que uma nova coluna possa reutilizar esse nome. Todas as restrições, índices e estatísticas definidos na coluna também são removidos.

Sintaxe

ALTER TABLE 
SET UNUSED COLUMN ;

Podemos descartar a coluna não utilizada mais tarde quando o recurso for menor usando o comando

ALTER TABLE 
Drop  UNUSED COLUNS;

Se você tiver tabelas grandes, poderá reduzir a quantidade de logs de desfazer acumulados usando a opção CHECKPOINT, que força um ponto de verificação após o processamento do número especificado de linhas. O checkpoint reduz a quantidade de logs de undo acumulados durante a operação de soltar a coluna para evitar o esgotamento potencial do espaço de undo.

ALTER TABLE table_name DROP UNUSED COLUMNS CHECKPOINT 500;
  • Se você tiver usado a sintaxe de ponto de verificação com o comando drop, poderá encerrar a sessão (ou encerrar o banco de dados) no meio do processo de soltar.
  • A tabela não estará disponível para DML ou consulta
  • você pode finalizar o comando "soltar colunas" usando a opção "continuar" (com um ponto de verificação opcional).
alter table
drop columns continue checkpoint;

alter table
drop columns continue checkpoint 5000;

Exemplo
vamos com a tabela criada anteriormente
SQL> alter table books_master set unused column ISBN;
Table altered.
SQL> desc books_master
SQL> Select * from Books_master;

Podemos verificar a contagem de colunas não utilizadas consultando a visualização abaixo USER_UNUSED_COL_TABS, ALL_UNUSED_COL_TABS ou DBA_UNUSED_COL_TABS
SQL> select * from DBA_UNUSED_COL_TABS where TABLE_NAME='BOOKS_MASTER';

Agora você pode soltar a coluna durante o período de baixa atividade
SQL> alter table Books_master drop unused columns;
Table altered.

SQL> select * from DBA_UNUSED_COL_TABS where TABLE_NAME='BOOKS_MASTER';
no rows selected

Como remover várias colunas


Podemos especificar várias colunas durante o comando drop
SQL> alter table books_master drop (AUTHOR,TITLE);
Table altered.

Espero que você goste de postar em alterar a coluna drop table no oracle. Por favor, forneça o feedback

Também lê
Chave primária do Oracle
alterar a movimentação da tabela
alterar a renomeação da tabela no oracle
https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables006. htm