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

ændre tabel drop kolonne i Oracle database

Vi har ofte brug for at droppe kolonnen i tabellen. Der er to måder at slette kolonnen i Oracle
(a) ændre tabelslipkolonne i Oracle
(b) ændre tabelsæt ubrugt kolonne i Oracle

DROP COLUMN ved hjælp af DROP COLUMN

Her i denne slipper vi kolonnen fra tabellen ved hjælp af nedenstående kommando .

ALTER TABLE table_name
DROP COLUMN col_name;

Denne erklæring tager eksklusiv lås på bordet, og hvis bordet er stort, vil det tage tid at udføre forespørgslen

Eksempel

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

Lad os slippe en kolonne fra denne tabel

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

SQL > Desc BOOKS_MASTER
SQL> Select * from Books_master;

SLIP KOLONNE med SET UNUSED

  • hvis du er bekymret over den ressource, der forbruges ved at slette kolonnen, kan du bruge ALTER TABLE...SET UNUSED -erklæringen.
  • Denne erklæring markerer en eller flere kolonner som ubrugte, men fjerner faktisk ikke målkolonnens data eller gendanner den diskplads, der optages af disse kolonner.
  • En kolonne, der er markeret som ubrugt, vises ikke i forespørgsler eller dataordbogsvisninger, og dens navn fjernes, så en ny kolonne kan genbruge dette navn. Alle begrænsninger, indekser og statistikker, der er defineret i kolonnen, fjernes også.

Syntaks

ÆNDRING TABEL 
INDSTIL UBRUGTE KOLUMNE ;

Vi kan droppe den ubrugte kolonne senere, når ressourcen er lavere ved at bruge kommandoen

ÆNDRING TABEL 
Slip  UBRUGTE KOLONNER;

Hvis du har store tabeller, kan du reducere mængden af ​​akkumulerede fortryd-logfiler ved at bruge CHECKPOINT-indstillingen, som fremtvinger et kontrolpunkt, efter at det angivne antal rækker er blevet behandlet. Checkpointing skærer ned på mængden af ​​fortryd-logfiler, der er akkumuleret under drop-kolonne-operationen for at undgå potentiel opbrug af fortryd-plads.

ALTER TABLE table_name SLIP UBRUGTE KOLONNER CHECKPOINT 500;

  • Hvis du har brugt checkpoint-syntaksen med din drop-kommando, kan du afbryde sessionen (eller lukke databasen) halvvejs i drop.
  • Tabellen vil ikke være tilgængelig for DML eller forespørgsel
  • du kan afslutte kommandoen "slip kolonner" ved at bruge "fortsæt" (med et valgfrit kontrolpunkt).
alter table
drop columns continue checkpoint;

alter table
drop columns continue checkpoint 5000;

Eksempel
lader gå med den tidligere oprettede tabel

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

Vi kan kontrollere antallet af ubrugte kolonner ved at forespørge på nedenstående visning USER_UNUSED_COL_TABS, ALL_UNUSED_COL_TABS eller DBA_UNUSED_COL_TABS

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

Nu kan du slippe kolonnen under lav aktivitetsperiode

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

Sådan dropper du flere kolonner

Vi kan angive flere kolonner under drop-kommando

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

Håber du kan lide post på alter table drop kolonne i Oracle. Giv venligst feedback

Læser også
Oracle-primærnøgle
skift tabel flyt
ændre tabel omdøb kolonne i Oracle
https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables006. htm


  1. Sådan importeres CSV-fil i PostgreSQL

  2. FEJL:tilladelse nægtet til relationstabelnavn på Postgres, mens du prøvede en SELECT som skrivebeskyttet bruger

  3. Hvordan søger man efter en bestemt værdi i alle tabeller (PostgreSQL)?

  4. SQL-forespørgselsoptimering:Bedste fremgangsmåder for forbedret ydeevne