Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Ändern Sie die Tabelle, ändern Sie die Spalte in der Oracle-Datenbank

Wir können den Spaltendatentyp in einer Tabelle mit ändern Tabelle ändern Spalte in Oracle ändern

ALTER TABLE TabellennameMODIFY Spaltenname ;

Aktionen können viele Dinge sein wie
(a) den Datentyp ändern
(b) den Datentyp verkürzen oder erweitern
(c) den Standardwert ändern
(d) ändern auf null oder nicht null zulassen
(e) Spaltensichtbarkeit
(d) Virtuelle Spaltenänderung
Fangen wir nacheinander an

Oracle MODIFY-Spalte ändert den Datentyp

Sie können den Datentyp der Spaltenänderung nur ändern, wenn die Spalte leer ist

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 (Buch_ID),CONSTRAINT Books_master_UK1 EINZIGARTIG (Titel, Autor),CONSTRAINT Books_master_UK2 EINZIGARTIG (ISBN));Tabelle erstellt

Da die Tabelle leer ist, können wir den Datentyp der Spalte ändern

SQL> ändern Tabelle Books_master ändern ISBN NUMBER(6,0);Tabelle geändert.SQL> ändern Tabelle Books_master ändern ISBN VARCHAR2(25);Tabelle geändert.

Lassen Sie uns einige Daten einfügen

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 Zeile erstellt.commit;

Versuchen Sie nun erneut, die Spalte zu ändern, um den Datentyp zu ändern

SQL> Tabelle Books_master ändern ISBN-NUMMER ändern(6,0);Tabelle Books_master ändern ISBN-NUMMER ändern(6,0)*FEHLER in Zeile 1:ORA-01439:Zu ändernde Spalte muss leer sein, um Datentyp zu ändern 

Jetzt können wir diese Spalte nullen und diese Anweisung erfolgreich ausführen

SQL> update Books_master set ISBN=null;1 Zeile aktualisiert.SQL> commit;commit complete.SQL> ändern table Books_master modify ISBN NUMBER(6,0);Tabelle geändert.

Was ist nun zu tun, wenn wir die Daten behalten wollen, es gibt mehrere Möglichkeiten
(a) Neue Spalte als neuen Datentyp hinzufügen, Daten in diese Spalte kopieren, alte Spalte löschen, neue Spalte in aktuellen Spaltennamen umbenennen:

Tabelle books_master ändern ISBN1-Nummer hinzufügen;books_master aktualisieren ISBN1=auf_Nummer(ISBN) setzen;Tabelle ändern Spalte ISBN löschen;Tabelle ändern Spalte ISBN1 in ISBN umbenennen;

(b) Verwenden Sie DBMS_REDEFINITION und bauen Sie Ihre Tabelle mit neuen Spalten neu auf

Oracle MODIFY-Spalte Verkürzen oder erweitern Sie den Datentyp (ändern Sie die Tabelle, ändern Sie die Spaltengröße, Oracle)

Dies wird verwendet, wenn wir die VARCHAR-Bytes oder -Zeichen ändern möchten.
Beispiel

Hier erhöhen wir die VARCHAR-Länge von 50 auf 100

SQL> Tabelle ändern Books_master Titel ändern VARCHAR2(100);Tabelle geändert.

Wenn wir nun versuchen, die Länge von 100 auf 10 zu verkürzen

SQL> Tabelle Books_master ändern Titel ändern VARCHAR2(10);Tabelle Books_master ändern Titel ändern VARCHAR2(10)*FEHLER in Zeile 1:ORA-01441:Spaltenlänge kann nicht verringert werden, weil ein Wert zu groß ist

Dies geschieht, da vorhandene Daten nicht in diese Größe passen. Sie können also entweder die Länge erhöhen oder diese Spalte aktualisieren

SQL> Tabelle ändern Books_master Titel ändern VARCHAR2(20);Tabelle geändert.

Standardwert der MODIFY-Spalte von Oracle

wenn wir den Standardwert der Spalte ändern müssen

SQL> Tabelle ändern BOOKS_MASTER Ändern BCOST Standard 1000;Tabelle geändert.

Wenn jetzt beim nächsten Mal eine Einfügung stattfindet und BCOST null ist, hat es einen Standardwert von 1000

Tabelle BOOKS_MASTER ändern, BCOST-Standardwert 1000 ändern; Tabelle geändert.SQL> INSERT INTO Books_master (Buch_ID, Titel, Autor, ISBN, Erscheinungsjahr) VALUES (21, 'Deception', 'Dan', 123,2001); 1 Zeile erstellt .SQL> commit;Commit abgeschlossen.SQL> select BCOST from Books_master where book_id=21;BCOST-----1000 

Oracle-MODIFY-Spalte NULL oder NICHT NULL

Wir können die Spalte ändern, um null oder nicht null zuzulassen

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 ändern PUBLISH_YEAR not null;Tabelle geändert.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) 

Wenn Sie auf nicht null ändern, sollten wir einen vorhandenen Wert haben, sonst schlägt dies fehl

Oracle MODIFY-Spaltensichtbarkeit

Wir können die Spaltensichtbarkeit mit Spalte ändern

ändern
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> Tabelle ändern BOOKS_MASTER ändern PUBLISH_YEAR unsichtbar; Tabelle geändert. Jetzt wird die Spalte unsichtbar 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)SQL> ändern Tabelle BOOKS_MASTER ändern PUBLISH_YEAR sichtbar;Tabelle geändert.Jetzt wird die Spalte sichtbarSQL> 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) 

Ich hoffe, Ihnen gefällt dieser Beitrag in der Oracle Alter Table-Änderungsspalte. Bitte geben Sie Feedback

Liest auch
Tabelle ändern Oracle-Spalte hinzufügen
Tabelle ändern Oracle-Spalte umbenennen
Spalte in Oracle löschen
https://docs.oracle.com/cd/B28359_01/server.111/b28286/ aussagen_3001.htm