sql >> Database >  >> RDS >> Oracle

verander de kolom voor het neerzetten van tabellen in de Oracle-database

We moeten vaak de kolom in de tabel laten vallen. Er zijn twee manieren om de kolom in Oracle neer te zetten
(a) verander de tabel zet de kolom neer in oracle
(b) verander de tabel zet de ongebruikte kolom in orakel

DROP COLUMN met DROP COLUMN

Hier in dit laten we de kolom uit de tabel vallen met het onderstaande commando .

ALTER TABLE table_name
DROP COLUMN col_name;

Deze verklaring neemt exclusief slot op de tafel en als de tafel groot is, zal het enige tijd duren om de query uit te voeren

Voorbeeld

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

Laten we een kolom uit deze tabel laten vallen

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

SQL > Desc BOOKS_MASTER
SQL> Select * from Books_master;

DROP KOLOM met SET ONGEBRUIKT

  • Als je je zorgen maakt over de bron die wordt verbruikt bij het verwijderen van de kolom, kun je de instructie ALTER TABLE…SET UNUSED gebruiken.
  • Deze instructie markeert een of meer kolommen als ongebruikt, maar verwijdert niet echt de doelkolomgegevens of herstelt de schijfruimte die door deze kolommen wordt ingenomen.
  • Een kolom die is gemarkeerd als ongebruikt, wordt niet weergegeven in query's of datadictionary-weergaven, en de naam ervan wordt verwijderd zodat een nieuwe kolom die naam kan hergebruiken. Alle beperkingen, indexen en statistieken die in de kolom zijn gedefinieerd, worden ook verwijderd.

Syntaxis

ALTER TABLE 
STEL ONGEBRUIKTE KOLOM IN ;

We kunnen de ongebruikte kolom later laten vallen wanneer de bron lager is met het commando

ALTER TABLE 
Drop  ONGEBRUIKTE KOLOMMEN;

Als u grote tabellen heeft, kunt u het aantal ongedaan gemaakte logboeken verminderen met de optie CHECKPOINT, die een controlepunt forceert nadat het opgegeven aantal rijen is verwerkt. Checkpointing vermindert de hoeveelheid ongedaan gemaakte logs die worden verzameld tijdens de bewerking van de kolom neerzetten om mogelijke uitputting van de ruimte voor ongedaan maken te voorkomen.

ALTER TABLE table_name DROP ONGEBRUIKTE KOLOMMEN CHECKPOINT 500;

  • Als je de checkpoint-syntaxis hebt gebruikt met je drop-commando, zou je de sessie halverwege de drop kunnen beëindigen (of de database afsluiten).
  • De tabel is niet beschikbaar voor DML of zoekopdracht
  • je kunt de opdracht "kolommen neerzetten" beëindigen met de optie "doorgaan" (met een optioneel controlepunt).
alter table
drop columns continue checkpoint;

alter table
drop columns continue checkpoint 5000;

Voorbeeld
laten we gaan met de eerder gemaakte tabel

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

We kunnen het aantal ongebruikte kolommen controleren door de onderstaande weergave USER_UNUSED_COL_TABS, ALL_UNUSED_COL_TABS of DBA_UNUSED_COL_TABS te raadplegen

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

Nu kunt u de kolom neerzetten tijdens een periode van lage activiteit

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

Hoe meerdere kolommen te verwijderen

We kunnen meerdere kolommen specificeren tijdens drop-commando

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

Ik hoop dat je het leuk vindt om een ​​​​post op de drop-kolom van de alternatieve tabel in orakel te plaatsen. Geef alsjeblieft de feedback

Leest ook
Primaire sleutel van Oracle
tabel verplaatsen
tabel hernoemen kolom in oracle
https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables006. htm


  1. SCHEMABINDING verwijderen uit een door de gebruiker gedefinieerde functie in SQL Server

  2. Nullen naar links opvullen in postgreSQL

  3. Hoe Postgresql in Ubuntu stil te installeren via. Dockerbestand?

  4. TSQL PIVOT MEERDERE KOLOMMEN