sql >> Database teknologi >  >> RDS >> Oracle

ændre tabel ændre kolonne i Oracle database

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 datatype 

Nu 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.
Eksempel

Her ø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 stor

Dette 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


  1. MySQL Tutorial – Konfiguration og administration af SSL på din MySQL-server

  2. Sådan installeres SQL Server på en Mac med VirtualBox

  3. Sådan viser du skjulte elementer i VBA-objektbrowseren

  4. Hvad maskinlæring betyder for databaseprofessionelle