Oracle
 sql >> Base de données >  >> RDS >> Oracle

modifier la colonne de suppression de table dans la base de données oracle

Nous avons souvent besoin de supprimer la colonne dans le tableau. Il existe deux manières de supprimer la colonne dans Oracle
(a) modifier la colonne de suppression de la table dans oracle
(b) modifier la colonne inutilisée de l'ensemble de table dans oracle

DROP COLUMN en utilisant DROP COLUMN

Ici, nous supprimons la colonne de la table en utilisant la commande ci-dessous .

ALTER TABLE table_name
DROP COLUMN col_name;

Cette instruction prend un verrou exclusif sur la table et si la table est grande, l'exécution de la requête prendra du temps

Exemple

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

Supprimons une colonne de ce tableau

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

SQL > Desc BOOKS_MASTER
SQL> Select * from Books_master;

SUPPRIMER COLONNE en utilisant SET UNUSED

  • si vous êtes préoccupé par les ressources consommées lors de la suppression de la colonne, vous pouvez utiliser l'instruction ALTER TABLE…SET UNUSED .
  • Cette instruction marque une ou plusieurs colonnes comme inutilisées, mais ne supprime pas réellement les données de la colonne cible ni ne restaure l'espace disque occupé par ces colonnes.
  • Une colonne marquée comme inutilisée n'est pas affichée dans les requêtes ou les vues du dictionnaire de données, et son nom est supprimé afin qu'une nouvelle colonne puisse réutiliser ce nom. Toutes les contraintes, index et statistiques définis sur la colonne sont également supprimés.

Syntaxe

ALTER TABLE 
DÉFINIR LA COLONNE NON UTILISÉE  ;

Nous pouvons supprimer la colonne inutilisée plus tard lorsque la ressource est inférieure à l'aide de la commande

ALTER TABLE 
Supprimer les COLONNES NON UTILISÉES   ;

Si vous avez de grandes tables, vous pouvez réduire la quantité de journaux d'annulation accumulés à l'aide de l'option CHECKPOINT, qui force un point de contrôle après le traitement du nombre de lignes spécifié. Le point de contrôle réduit la quantité de journaux d'annulation accumulés pendant l'opération de suppression de colonne pour éviter l'épuisement potentiel de l'espace d'annulation.

ALTER TABLE table_name DROP UNUSED COLUMNS CHECKPOINT 500 ;

  • Si vous avez utilisé la syntaxe de point de contrôle avec votre commande drop, vous pouvez tuer la session (ou fermer la base de données) à mi-chemin de la suppression.
  • Le tableau ne sera pas disponible pour DML ou requête
  • vous pouvez terminer la commande "supprimer les colonnes" en utilisant l'option "continuer" (avec un point de contrôle facultatif).
alter table
drop columns continue checkpoint;

alter table
drop columns continue checkpoint 5000;

Exemple
passons au tableau précédemment créé

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

Nous pouvons vérifier le nombre de colonnes inutilisées en interrogeant la vue ci-dessous 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';

Vous pouvez maintenant supprimer la colonne pendant la période de faible activité

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

Comment supprimer plusieurs colonnes

Nous pouvons spécifier plusieurs colonnes lors de la commande drop

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

J'espère que vous aimez la publication sur la colonne alter table drop dans oracle. Merci de nous faire part de vos commentaires

Lit également
Clé primaire Oracle
modifier le déplacement de la table
modifier la colonne de renommage de la table dans Oracle
https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables006. htm