Vi kan ändra kolumndatatypen i en tabell med ändra tabell ändra kolumn i Oracle
ALTER TABLE table_nameMODIFY kolumnnamn;
Åtgärd kan vara många saker som
(a) ändra datatypen
(b) Förkorta eller bredda datatypen
(c) Ändra standardvärdet
(d) Ändra till tillåt null eller inte null
(e) Kolumnsynlighet
(d) Virtuell kolumnändring
Låt oss börja en efter en
Oracle MODIFY-kolumnändringsdatatyp
Du kan endast ändra kolumnändringsdatatyp om kolumnen är tom
SQL> CREATE TABLE Books_master( Book_Id NUMBER(6,0),Title VARCHAR2(50),Author VARCHAR2(50),ISBN VARCHAR2(25),BCCost NUMBER(6,0),Public_Year NUMBER(4,0) ,CONSTRAINT Books_master_PK PRIMARY KEY (Book_Id),CONSTRAINT Books_master_UK1 UNIQUE (Titel, författare),CONSTRAINT Books_master_UK2 UNIQUE (ISBN));Tabell skapad
Eftersom tabellen är tom kan vi ändra datatyp för kolumnändring
SQL> ändra tabell Books_master modifiera ISBN-NUMMER(6,0);Tabell ändrad.SQL> ändra tabell Books_master modifiera ISBN VARCHAR2(25);Tabell ändrad.
Låt oss infoga lite data
SQL> INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VÄRDEN (10, 'Complete/Convenient', 'Ketan Bhagat', 'ISBN 978-93-80349-92-3', 195 , 2013);1 rad created.commit;
Försök nu igen att ändra kolumnen för att ändra datatyp
SQL> ändra tabell Books_master modify ISBN NUMBER(6,0); alter table Books_master modify ISBN NUMBER(6,0)*ERROR på rad 1:ORA-01439:kolumnen som ska ändras måste vara tom för att ändra datatypNu kan vi null den kolumnen och köra den här satsen framgångsrikt
SQL> uppdatera Books_master set ISBN=null;1 rad uppdaterad.SQL> commit;Commit complete.SQL> ändra tabell Books_master modifiera ISBN-NUMMER(6,0);Tabell ändrad.Vad ska vi göra nu om vi vill behålla data, det finns flera alternativ
(a) Lägg till ny kolumn som ny datatyp, kopiera data till den här kolumnen, ta bort den gamla kolumnen, byt namn på ny kolumn som faktiskt kolumnnamn:alter table books_master add ISBN1 number;update books_master set ISBN1=to_number(ISBN);alter table drop kolumn ISBN;alter table döper kolumn ISBN1 till ISBN;(b) Använd DBMS_REDEFINITION och bygg om din tabell med nya kolumner
Oracle MODIFY-kolumn Förkorta eller bredda datatypen (ändra tabell ändra kolumnstorlek oracle)
Detta används när vi vill ändra VARCHAR-byte eller tecken.
ExempelHär ökar vi VARCHAR-längden från 50 till 100
SQL> ändra tabell Books_master ändra titel VARCHAR2(100); Tabell ändrad.Om vi nu försöker förkorta längden från 100 till 10
SQL> ändra tabell Books_master ändra titel VARCHAR2(10); ändra tabell Books_master ändra titel VARCHAR2(10)*ERROR på rad 1:ORA-01441:kan inte minska kolumnlängden eftersom något värde är för stortDetta händer eftersom befintlig data inte passar in i den storleken. Så antingen kan du öka längden eller uppdatera den kolumnen
SQL> ändra tabell Books_master ändra titel VARCHAR2(20); Tabell ändrad.Oracle MODIFY-kolumns standardvärde
om vi måste ändra standardvärdet för kolumnen
SQL> ändra tabell BOOKS_MASTER ändra BCOST standard 1000; Tabell ändrad.Nästa gång om någon infogning sker och BCOST är null, kommer det att ha ett standardvärde som 1000
ändra tabell BOOKS_MASTER modify BCOST default 1000;Table altered.SQL> INSERT INTO Books_master (Book_Id, Title, Author, ISBN,Publish_Year) VÄRDEN (21, 'Deception', 'Dan', 123,2001);1 rad skapad; .SQL> commit;Commit complete.SQL> välj BCOST från Books_master där book_id=21;BCOST-----1000
Oracle MODIFY-kolumn NULL eller NOT NULL
Vi kan ändra kolumnen för att tillåta null eller inte noll
SQL> desc books_masterName Null? Typ---- --- ----BOOK_ID INTE NULL NUMMER(6)TITEL VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMMER(6)BCOST INTE NULL NUMMER(6)PUBLISH_YEAR NUMBER(4)SQL> ändra tabell BOOKS_MASTER modifiera PUBLISH_YEAR inte null;Tabell ändrad.SQL> desc books_masterName Null? Typ---- ---- -----BOOK_ID INTE NULL NUMMER(6)TITEL VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMBER(6)BCOST NOT NULL NUMBER(6)PUBLISH_YEAR INTE NULL NUMMER(4)Om du ändrar till inte null bör vi ha ett befintligt värde, annars kommer detta att misslyckas
Synlighet för Oracle MODIFY-kolumn
Vi kan ändra kolumns synlighet med Ändra kolumn
SQL> desc books_masterName Null? Typ---- ---- -----BOOK_ID INTE NULL NUMMER(6)TITEL VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMBER(6)BCOST NOT NULL NUMBER(6)PUBLISH_YEAR INTE NULL NUMMER(4) SQL> ändra tabell BOOKS_MASTER modifiera PUBLISH_YEAR osynlig; Tabell ändrad. Nu blir kolumnen invisibleSQL> desc books_masterName Null? Typ---- ---- ----BOOK_ID INTE NULL NUMMER(6)TITEL VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMMER(6)BCOST NOT NULL NUMBER(6)SQL> ändra tabell BOOKS_MASTER ändra PUBLISH_YEAR synlig;Tabell ändrad.Nu blir kolumnen visibleSQL> desc books_masterName Null? Typ--- ----- -----BOOK_ID INTE NULL NUMMER(6)TITEL VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMBER(6)BCOST NOT NULL NUMBER(6)PUBLISH_YEAR INTE NULL NUMMER(4)Jag hoppas att du gillar det här inlägget på oracle alter-tabellen, ändra kolumnen. Lämna gärna feedbacken
Läser också
ändra tabell lägg till kolumn oracle
ändra tabell byt namn på kolumn oracle
släpp kolumn i oracle
https://docs.oracle.com/cd/B28359_01/server.111/b28286/ statements_3001.htm