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