Oracle
 sql >> Database >  >> RDS >> Oracle

altera la colonna di discesa della tabella nel database di Oracle

Spesso abbiamo bisogno di eliminare la colonna nella tabella. Esistono due modi per eliminare la colonna in Oracle
(a) alter table drop column in Oracle
(b) alter table set colonna non utilizzata in Oracle

COLONNA DROP usando DROP COLUMN

Qui in questo eliminiamo la colonna dalla tabella usando il comando sottostante .

ALTER TABLE table_name
DROP COLUMN col_name;

Questa istruzione ha un blocco esclusivo sulla tabella e se la tabella è grande, ci vorrà del tempo per eseguire la query

Esempio

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

Elimina una colonna da questa tabella

SQL> alter table books_master drop column PUBLISH_YEAR;
Table altered.

SQL > Desc BOOKS_MASTER
SQL> Select * from Books_master;

SCENDI COLONNA usando SET NON UTILIZZATO

  • se sei preoccupato per la risorsa consumata per eliminare la colonna, puoi utilizzare l'istruzione ALTER TABLE…SET UNUSED.
  • Questa istruzione contrassegna una o più colonne come non utilizzate ma in realtà non rimuove i dati della colonna di destinazione né ripristina lo spazio su disco occupato da queste colonne.
  • Una colonna contrassegnata come non utilizzata non viene visualizzata nelle query o nelle visualizzazioni del dizionario dati e il suo nome viene rimosso in modo che una nuova colonna possa riutilizzare quel nome. Vengono rimossi anche tutti i vincoli, gli indici e le statistiche definiti nella colonna.

Sintassi

ALTER TABLE 
IMPOSTA COLONNA NON UTILIZZATA ;

Possiamo eliminare la colonna inutilizzata in seguito quando la risorsa è inferiore utilizzando il comando

ALTER TABLE 
Elimina  COLONNE NON UTILIZZATE;

Se disponi di tabelle di grandi dimensioni, puoi ridurre la quantità di registri di annullamento accumulati utilizzando l'opzione CHECKPOINT, che forza un checkpoint dopo che il numero di righe specificato è stato elaborato. Il checkpoint riduce la quantità di registri di annullamento accumulati durante l'operazione della colonna di rilascio per evitare il potenziale esaurimento dello spazio di annullamento.

ALTER TABLE nome_tabella DROP INUSED COLUMNS CHECKPOINT 500;

  • Se hai utilizzato la sintassi del checkpoint con il comando drop, puoi terminare la sessione (o chiudere il database) a metà del drop.
  • La tabella non sarà disponibile per DML o query
  • puoi terminare il comando "rilascia colonne" utilizzando l'opzione "continua" (con un checkpoint opzionale).
alter table
drop columns continue checkpoint;

alter table
drop columns continue checkpoint 5000;

Esempio
passiamo con la tabella creata in precedenza

SQL> alter table books_master set unused column ISBN;
Table altered.
SQL> desc books_master
SQL> Select * from Books_master;

Possiamo controllare il conteggio delle colonne inutilizzate interrogando la vista sottostante USER_UNUSED_COL_TABS, ALL_UNUSED_COL_TABS o DBA_UNUSED_COL_TABS

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

Ora puoi eliminare la colonna durante il periodo di bassa attività

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

Come eliminare più colonne

Possiamo specificare più colonne durante il comando di rilascio

SQL> alter table books_master drop (AUTHOR,TITLE);
Table altered.

Spero che ti piaccia il post su altera la colonna di rilascio della tabella in Oracle. Si prega di fornire il feedback

Legge anche
Chiave primaria Oracle
modifica spostamento tabella
modifica tabella rinomina colonna in Oracle
https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables006. htm