Vi kan ændre kolonnedatatypen i en tabel ved hjælp af ændre tabel ændre kolonne i Oracle
ALTER TABLE tabelnavnMODIFY kolonnenavn;
Handling kan være mange ting som
(a) ændre datatypen
(b) Forkorte eller udvide datatypen
(c) Skift standardværdien
(d) Skift til tillad null eller ej null
(e) Kolonnesynlighed
(d) Virtuel kolonneændring
Lad os starte én efter én
Oracle MODIFY kolonneændringsdatatype
Du kan kun ændre kolonneændringsdatatypen, hvis kolonnen er tom
SQL> CREATE TABLE Books_master( Book_Id NUMBER(6,0),Titel VARCHAR2(50),Author VARCHAR2(50),ISBN VARCHAR2(25),BCCost NUMBER(6,0),Public_Year NUMBER(4,0) ,CONSTRAINT Books_master_PK PRIMÆR NØGLE (Book_Id),CONSTRAINT Books_master_UK1 UNIQUE (Titel, forfatter), CONSTRAINT Books_master_UK2 UNIQUE (ISBN));Tabel oprettet
Da tabellen er tom, kan vi ændre kolonneændringsdatatype
SQL> ændre tabel Books_master modify ISBN NUMBER(6,0);Tabel ændret.SQL> ændre tabel Books_master modify ISBN VARCHAR2(25);Tabel ændret.
Lad os indsætte nogle data
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 række oprettet.commit;
Prøv nu igen at ændre kolonnen for at ændre datatypen
SQL> ændre tabel Books_master modify ISBN NUMBER(6,0); alter table Books_master modify ISBN NUMBER(6,0)*FEJL på linje 1:ORA-01439:kolonne, der skal ændres, skal være tom for at ændre datatypeNu kan vi nulstille den kolonne og køre denne erklæring med succes
SQL> update Books_master sæt ISBN=null;1 række opdateret.SQL> commit;Commit complete.SQL> ændr tabel Books_master modify ISBN NUMBER(6,0);Tabel ændret.Hvad skal vi nu gøre, hvis vi vil beholde dataene, der er flere muligheder
(a) Tilføj ny kolonne som ny datatype, kopier data til denne kolonne, slet den gamle kolonne, omdøb ny kolonne som faktisk kolonnenavn:alter table books_master add ISBN1 number;update books_master set ISBN1=to_number(ISBN);alter table drop column ISBN;alter table rename column ISBN1 to ISBN;(b) Brug DBMS_REDEFINITION og genopbyg din tabel med nye kolonner
Oracle MODIFY-kolonne Forkort eller udvidelse af datatypen (ændre tabel modificer kolonnestørrelse oracle)
Dette bruges, når vi ønsker at ændre VARCHAR bytes eller tegn.
EksempelHer øger vi VARCHAR-længden fra 50 til 100
SQL> ændre tabel Books_master ændre titel VARCHAR2(100);Tabel ændret.Hvis vi nu forsøger at forkorte længden fra 100 til 10
SQL> ændre tabel Books_master ændre titel VARCHAR2(10); ændre tabel Books_master ændre titel VARCHAR2(10)*FEJL på linje 1:ORA-01441:kan ikke reducere kolonnelængden, fordi en eller anden værdi er for storDette sker, da eksisterende data ikke passer ind i den størrelse. Så enten kan du øge længden eller opdatere den kolonne
SQL> ændre tabel Books_master ændre titel VARCHAR2(20);Tabel ændret.Oracle MODIFY-kolonnens standardværdi
hvis vi skal ændre standardværdien for kolonnen
SQL> ændre tabel BOOKS_MASTER modify BCOST default 1000;Tabel ændret.Næste gang, hvis der sker en indsættelse, og BCOST er null, vil den have en standardværdi som 1000
ændre tabel BOOKS_MASTER modify BCOST default 1000;Table altered.SQL> INSERT INTO Books_master (Book_Id, Title, Author, ISBN,Publish_Year) VALUES (21, 'Deception', 'Dan', 123,2001);1 række oprettet; .SQL> commit;Commit complete.SQL> vælg BCOST fra Books_master hvor book_id=21;BCOST-----1000
Oracle MODIFY kolonne NULL eller IKKE NULL
Vi kan ændre kolonnen til at tillade null eller ej null
SQL> desc books_masterName Nul? Type---- --- ----BOOK_ID IKKE NULL NUMMER(6)TITEL VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMMER(6)BCOST IKKE NULL NUMMER(6)UDGIVENDE_ÅR NUMMER(4)SQL> ændre tabel BOOKS_MASTER modify PUBLISH_YEAR ikke null;Tabel ændret.SQL> desc books_masterName Null? Type---- ---- -----BOOK_ID IKKE NULL NUMMER(6)TITEL VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMMER(6)BCOST IKKE NULL NUMMER(6)PUBLISH_YEAR IKKE NULL NUMMER(4)Hvis du ændrer til ikke null, bør vi have eksisterende værdi, ellers vil dette mislykkes
Oracle MODIFY kolonnesynlighed
Vi kan ændre kolonnens synlighed med Rediger kolonne
SQL> desc books_masterName Nul? Type---- ---- -----BOOK_ID IKKE NULL NUMMER(6)TITEL VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMMER(6)BCOST IKKE NULL NUMMER(6)PUBLISH_YEAR IKKE NULL NUMMER(4) SQL> ændre tabel BOOKS_MASTER modify PUBLISH_YEAR usynlig;Tabel ændret. Nu bliver kolonnen invisibleSQL> desc books_masterName Null? Type---- ---- ----BOOK_ID IKKE NULL NUMMER(6)TITEL VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMMER(6)BCOST IKKE NULL NUMMER(6)SQL> ændre tabel BOOKS_MASTER modificer PUBLISH_YEAR synlig;Tabel ændret. Nu bliver kolonnen visibleSQL> desc books_masterName Null? Type--- ----- -----BOOK_ID IKKE NULL NUMMER(6)TITEL VARCHAR2(20)AUTHOR VARCHAR2(50)ISBN NUMBER(6)BCOST IKKE NULL NUMMER(6)PUBLISH_YEAR IKKE NULL NUMMER(4)Jeg håber, at du kan lide dette indlæg på oracle alter-tabellen, modificer kolonnen. Giv venligst feedback
Læser også
ændre tabel tilføj kolonne oracle
ændre tabel omdøb kolonne oracle
slip kolonne i oracle
https://docs.oracle.com/cd/B28359_01/server.111/b28286/ statements_3001.htm