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

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

Nous peut modifier le type de données de la colonne dans une table à l'aide de modifier la table modifier la colonne dans oracle

ALTER TABLE nom_tableMODIFY nom_colonne  ;

L'action peut prendre plusieurs formes, comme
(a) modifier le type de données
(b) raccourcir ou élargir le type de données
(c) modifier la valeur par défaut
(d) modifier en autoriser les valeurs nulles ou non nulles
(e) Visibilité des colonnes
(d) Modification des colonnes virtuelles
Commençons un par un

Type de données de changement de colonne Oracle MODIFY

Vous pouvez modifier le type de données de changement de colonne uniquement si la colonne est vide

SQL> CREATE TABLE Books_master( Book_Id NUMBER(6,0),Titre VARCHAR2(50),Auteur 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 (Titre, Auteur),CONSTRAINT Books_master_UK2 UNIQUE (ISBN)) ;Table créée

Puisque la table est vide, nous pouvons modifier le type de données de changement de colonne

SQL> modifier la table Books_master modifier ISBN NUMBER(6,0);Table modified.SQL> modifier la table Books_master modifier ISBN VARCHAR2(25);Table modified.

Insérons quelques données

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);1 ligne créée.commit;

Maintenant, essayez à nouveau de modifier la colonne pour changer le type de données

SQL> modifier table Books_master modifier ISBN NUMBER(6,0);alter table Books_master modifier ISBN NUMBER(6,0)*ERREUR à la ligne 1 :ORA-01439 :la colonne à modifier doit être vide pour changer le type de données 

Nous pouvons maintenant annuler cette colonne et exécuter cette instruction avec succès

SQL> update Books_master set ISBN=null;1 row updated.SQL> commit;Commit complete.SQL> alter table Books_master modify ISBN NUMBER(6,0);Table modified.

Maintenant que faire si nous voulons conserver les données, il y a plusieurs options
(a) Ajouter une nouvelle colonne en tant que nouveau type de données, copier les données dans cette colonne, supprimer l'ancienne colonne, renommer la nouvelle colonne en tant que nom de colonne :

modifier la table books_master ajouter le numéro ISBN1 ; mettre à jour books_master définir l'ISBN1=vers_numéro(ISBN) ; modifier l'ISBN de la colonne de suppression de table ; modifier le nom de la colonne ISBN1 de la table en ISBN ;

(b) Utilisez DBMS_REDEFINITION et reconstruisez votre table avec de nouvelles colonnes

Oracle MODIFY column Raccourcissez ou élargissez le type de données (alter table modify column size oracle)

Ceci est utilisé lorsque nous voulons modifier les octets ou les caractères VARCHAR.
Exemple

Ici, nous augmentons la longueur VARCHAR de 50 à 100

SQL> modifier la table Books_master modifier le titre VARCHAR2(100);Table modifiée.

Maintenant, si nous essayons de réduire la longueur de 100 à 10

SQL> alter table Books_master modifie le titre VARCHAR2(10);alter table Books_master modifie le titre VARCHAR2(10)*ERREUR à la ligne 1 :ORA-01441 :impossible de réduire la longueur de la colonne car une valeur est trop grande

Cela se produit lorsque les données existantes ne correspondent pas à cette taille. Vous pouvez donc soit augmenter la longueur, soit mettre à jour cette colonne

SQL> modifier la table Books_master modifier le titre VARCHAR2(20);Table modifiée.

Valeur par défaut de la colonne Oracle MODIFY

si nous devons modifier la valeur par défaut de la colonne

SQL> modifier la table BOOKS_MASTER modifier BCOST par défaut 1000;Table modifiée.

Maintenant, la prochaine fois, si une insertion se produit et que BCOST est nul, il aura une valeur par défaut de 1000

alter table BOOKS_MASTER modify BCOST default 1000;Table modified.SQL> INSERT INTO Books_master (Book_Id, Title, Author, ISBN,Publish_Year) VALUES (21, 'Deception', 'Dan', 123,2001);1 ligne créée .SQL> commit;Commit complete.SQL> select BCOST from Books_master where book_id=21;BCOST-----1000 

Oracle MODIFY colonne NULL ou NOT NULL

Nous pouvons modifier la colonne pour autoriser les valeurs nulles ou non nulles

SQL> desc books_masterName Null ? Type---- --- ----BOOK_ID NOT NULL NUMBER(6)TITLE VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMBER(6)BCOST NOT NULL NUMBER(6)PUBLISH_YEAR NUMBER(4)SQL> alter table BOOKS_MASTER modifier PUBLISH_YEAR non nul ; Table modifiée.SQL> desc books_masterName Null ? Type---- ---- -----BOOK_ID NOT NULL NUMBER(6)TITLE VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMBER(6)BCOST NOT NULL NUMBER(6)PUBLISH_YEAR NOT NULL NUMBER(4) 

Si vous changez en not null, nous devrions avoir une valeur existante, sinon cela échouera

Visibilité de la colonne Oracle MODIFY

Nous pouvons changer la visibilité de la colonne avec Modifier la colonne

SQL> desc books_masterName Null ? Type---- ---- -----BOOK_ID NOT NULL NUMBER(6)TITLE VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMBER(6)BCOST NOT NULL NUMBER(6)PUBLISH_YEAR NOT NULL NUMBER(4) SQL> modifier la table BOOKS_MASTER modifier PUBLISH_YEAR invisible ; table modifiée. Maintenant, la colonne devient invisibleSQL> desc books_masterName Null ? Type---- ---- ----BOOK_ID NOT NULL NUMBER(6)TITLE VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMBER(6)BCOST NOT NULL NUMBER(6)SQL> modifier la table BOOKS_MASTER modifier PUBLISH_YEAR visible;Table modifiée.Maintenant, la colonne devient visibleSQL> desc books_masterName Null ? Type--- ----- -----BOOK_ID NOT NULL NUMBER(6)TITLE VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMBER(6)BCOST NOT NULL NUMBER(6)PUBLISH_YEAR NOT NULL NUMBER(4) 

J'espère que vous aimez ce post sur l'oracle alter table modifier la colonne. Merci de nous faire part de vos commentaires

Lit également
modifier la table ajouter une colonne oracle
modifier la table renommer la colonne oracle
supprimer la colonne dans oracle
https://docs.oracle.com/cd/B28359_01/server.111/b28286/ états_3001.htm