Wir müssen oft die Spalte in der Tabelle löschen. Es gibt zwei Möglichkeiten, die Spalte in Oracle zu löschen
(a) Tabellenspalte in Oracle löschen
(b) Tabellensatz nicht verwendete Spalte in Oracle ändern
DROP COLUMN mit DROP COLUMN
Hier löschen wir die Spalte aus der Tabelle mit dem folgenden Befehl .
ALTER TABLE table_name DROP COLUMN col_name;
Diese Anweisung nimmt eine exklusive Sperre für die Tabelle und wenn die Tabelle groß ist, wird es einige Zeit dauern, die Abfrage auszuführen
Beispiel
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
Lassen Sie uns eine Spalte aus dieser Tabelle löschen
SQL> alter table books_master drop column PUBLISH_YEAR; Table altered. SQL > Desc BOOKS_MASTER
SQL> Select * from Books_master;
Spalte löschen mit SET UNUSED
- Wenn Sie Bedenken hinsichtlich der Ressourcen haben, die beim Löschen der Spalte verbraucht werden, können Sie die Anweisung ALTER TABLE…SET UNUSED verwenden.
- Diese Anweisung markiert eine oder mehrere Spalten als unbenutzt, entfernt jedoch nicht die Daten der Zielspalte oder stellt den von diesen Spalten belegten Speicherplatz wieder her.
- Eine als unbenutzt markierte Spalte wird in Abfragen oder Datenwörterbuchansichten nicht angezeigt, und ihr Name wird entfernt, damit eine neue Spalte diesen Namen wiederverwenden kann. Alle für die Spalte definierten Einschränkungen, Indizes und Statistiken werden ebenfalls entfernt.
Syntax
ALTER TABLE
SET UNUSED COLUMN
Wir können die ungenutzte Spalte später löschen, wenn die Ressource niedriger ist, indem wir den Befehl
verwenden
ALTER TABLE
Drop UNUSED COLUMNS;
Wenn Sie große Tabellen haben, können Sie die Menge der angesammelten Undo-Protokolle mit der Option CHECKPOINT reduzieren, die einen Prüfpunkt erzwingt, nachdem die angegebene Anzahl von Zeilen verarbeitet wurde. Checkpointing reduziert die Menge an Rückgängig-Protokollen, die während der Drop-Column-Operation angesammelt werden, um eine mögliche Erschöpfung des Rückgängig-Speicherplatzes zu vermeiden.
ALTER TABLE Tabellenname DROP UNUSED COLUMNS CHECKPOINT 500;
- Wenn Sie die Checkpoint-Syntax mit Ihrem Drop-Befehl verwendet haben, könnten Sie die Sitzung beenden (oder die Datenbank herunterfahren) während des Drops.
- Die Tabelle ist nicht für DML oder Abfragen verfügbar
- Sie können den Befehl „Spalten löschen“ mit der Option „Fortfahren“ (mit einem optionalen Prüfpunkt) abschließen.
alter table drop columns continue checkpoint; alter table drop columns continue checkpoint 5000;
Beispiel
Lassen Sie uns mit der zuvor erstellten Tabelle fortfahren
SQL> alter table books_master set unused column ISBN; Table altered. SQL> desc books_master
SQL> Select * from Books_master;
Wir können die Anzahl der unbenutzten Spalten überprüfen, indem wir die unten stehende Ansicht USER_UNUSED_COL_TABS, ALL_UNUSED_COL_TABS oder DBA_UNUSED_COL_TABS
abfragenSQL> select * from DBA_UNUSED_COL_TABS where TABLE_NAME='BOOKS_MASTER';
Jetzt können Sie die Spalte in Zeiten geringer Aktivität löschen
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
So löschen Sie mehrere Spalten
Wir können während des Drop-Befehls mehrere Spalten angeben
SQL> alter table books_master drop (AUTHOR,TITLE); Table altered.
Ich hoffe, Ihnen gefällt der Beitrag in der Drop-Spalte der Alter-Tabelle in Oracle. Bitte geben Sie Feedback
Liest auch
Oracle-Primärschlüssel
Tabellenverschiebung ändern
Tabellenumbenennungsspalte in Oracle ändern
https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables006. htm