Ние може да промени типа данни на колоната в таблица с помощта на alter table modify колона в oracle
ALTER TABLE table_nameMODIFY име на колона <действие>;
Действието може да бъде много неща като
(a) промяна на типа данни
(b) Скъсяване или разширяване на типа данни
(c) Промяна на стойността по подразбиране
(d) Промяна на разреши null или не nulls
(e) Видимост на колона
(d) Модификация на виртуална колона
Нека започнем едно по едно
Oracle MODIFY тип данни за промяна на колона
Можете да промените типа данни за промяна на колоната само ако колоната е празна
SQL> СЪЗДАВАНЕ НА ТАБЛИЦА Books_master( Book_Id NUMBER(6,0),Title VARCHAR2(50),Author VARCHAR2(50),ISBN VARCHAR2(25),BCCost NUMBER(6,0),Publish_Year NUMBER(4,0) ,CONSTRAINT Books_master_PK ОСНОВЕН КЛЮЧ (Книга_Id),CONSTRAINT Books_master_UK1 UNIQUE (Заглавие, автор),CONSTRAINT Books_master_UK2 UNIQUE (ISBN));Таблицата е създадена
Тъй като таблицата е празна, можем да променим типа данни за промяна на колона
SQL> таблица за промяна на Books_master модифицира ISBN NUMBER(6,0);Таблица е променена.SQL> таблица за промяна на Books_master модифицира ISBN VARCHAR2(25);Таблица е променена.
Нека вмъкнем някои данни
SQL> INSERT INTO Books_master (Book_Id, Title, Author, ISBN, BCost, Publish_Year) VALUES (10, 'Пълен/удобен', 'Ketan Bhagat', 'ISBN 978-93-80349-919-3', ' , 2013 г.);1 ред създаден.commit;
Сега отново опитайте да модифицирате колоната, за да промените типа данни
SQL> променете таблицата Books_master модифицира ISBN NUMBER(6,0);променете таблицата Books_master модифицира ISBN NUMBER(6,0)*ГРЕШКА в ред 1:ORA-01439:колоната, която трябва да бъде променена, трябва да е празна, за да промените типа даннипредварително>Сега можем да нулираме тази колона и да изпълним този израз успешно
SQL> актуализиране Books_master зададе ISBN=null;1 ред актуализиран.SQL> commit;Commit complete.SQL> alter table Books_master модифицира ISBN NUMBER(6,0);Таблицата е променена.Сега какво да направим, ако искаме да запазим данните, има множество опции
(a) Добавяне на нова колона като нов тип данни, копиране на данни в тази колона, изтриване на старата колона, преименуване на нова колона като действително име на колона:променете таблицата books_master добавяне на ISBN1 номер;актуализиране на books_master set ISBN1=to_number(ISBN);промяна на таблицата отпадане на колоната ISBN;промяна на таблицата преименуване на колона ISBN1 към ISBN;(b) Използвайте DBMS_REDEFINITION и изградете отново вашата таблица с нови колони
Oracle MODIFY колона Съкратете или разширете типа данни (променете таблицата, променете размера на колоната, оракул)
Това се използва, когато искаме да променим VARCHAR байтовете или знаците.
ПримерТук увеличаваме дължината на VARCHAR от 50 на 100
SQL> променя таблицата Books_master модифицира заглавието VARCHAR2(100);Таблицата е променена.Сега, ако се опитваме да съкратим дължината от 100 на 10
SQL> промяна на таблицата Books_master модифицира заглавието VARCHAR2(10); alter table Books_master модифицира заглавието VARCHAR2(10)*ГРЕШКА в ред 1:ORA-01441:не може да се намали дължината на колоната, защото някаква стойност е твърде голямаТова се случва, тъй като съществуващите данни не се вписват в този размер. Така че или може да увеличи дължината, или да актуализира тази колона
SQL> променя таблицата Books_master модифицира заглавието VARCHAR2(20);Таблицата е променена.Стойност по подразбиране на колоната Oracle MODIFY
ако трябва да променим стойността по подразбиране на колоната
SQL> променя таблицата BOOKS_MASTER модифицира BCOST по подразбиране 1000;Таблицата е променена.Сега следващия път, ако се случи някакво вмъкване и BCOST е нулев, той ще има стойност по подразбиране като 1000
промени таблицата BOOKS_MASTER модифицира BCOST по подразбиране 1000;Таблица е променена.SQL> INSERT INTO Books_master (Book_Id, Title, Author, ISBN,Publish_Year) VALUES (21, 'Deception', 'Dan', 123,2001 created); .SQL> commit;Commit complete.SQL> изберете BCOST от Books_master, където book_id=21;BCOST-----1000
Oracle MODIFY колона NULL или NOT NULL
Можем да модифицираме колоната, за да разрешим null или не null
SQL> desc books_masterName Нула? Тип---- --- ---- КНИГА_ИД НЕ НУЛЕВ НОМЕР(6)ЗАГЛАВАНЕ VARCHAR2(20)АВТОР VARCHAR2(50)ISBN НОМЕР(6)BCOST НЕ НУЛЕВ НОМЕР(6)Публикуване_ГОДИНА НОМЕР(4)SQL> промяна на таблицата BOOKS_MASTER модифицира PUBLISH_YEAR не е нула;Таблицата е променена.SQL> desc books_masterName Null? Тип---- ---- -----BOOK_ID НЕ НУЛЕВ НОМЕР(6)ЗАГЛАВЛЕНИЕ VARCHAR2(20)АВТОР VARCHAR2(50)ISBN НОМЕР(6)BCOST НЕ НУЛЕВ НОМЕР(6)ПУБЛИКАЦИЯ_ГОДИНА НЕ НУЛЕВ НОМЕР(4)Ако промените на не null, трябва да имаме съществуваща стойност, в противен случай това ще се провали
Oracle MODIFY видимостта на колоната
Можем да променим видимостта на колоната с Промяна на колона
SQL> desc books_masterName Нула? Тип---- ---- -----BOOK_ID НЕ НУЛЕВ НОМЕР(6)ЗАГЛАВЛЕНИЕ VARCHAR2(20)АВТОР VARCHAR2(50)ISBN НОМЕР(6)BCOST НЕ НУЛЕВ НОМЕР(6)ПУБЛИКАЦИЯ_ГОДИНА НЕ НУЛЕВ НОМЕР(4) SQL> променя таблицата BOOKS_MASTER модифицира PUBLISH_YEAR невидима;Таблицата е променена.Сега колоната става невидимаSQL> desc books_masterName Null? Тип---- ---- -----BOOK_ID НЕ НУЛЕВ НОМЕР(6)ЗАГЛАВЛЕНИЕ VARCHAR2(20)АВТОР VARCHAR2(50)ISBN НОМЕР(6)BCOST НЕ НУЛЕВ НОМЕР(6)SQL> промяна на таблицата BOOKS_MASTER модифициране PUBLISH_YEAR видима;Таблицата е променена. Сега колоната става visibleSQL> desc books_masterName Null? Тип--- ----- ----- BOOK_ID НЕ НУЛЕВ НОМЕР(6)ЗАГЛАВАНЕ VARCHAR2(20)АВТОР VARCHAR2(50)ISBN НОМЕР(6)BCOST НЕ НУЛЕВ НОМЕР(6)ПУБЛИКАЦИЯ_ГОДИНА НЕ НУЛЕВ НОМЕР(4)Надявам се да ви хареса тази публикация в таблицата за промяна на оракула, модифициране на колоната. Моля, предоставете обратната връзка
Също чете
промяна на таблицата добавяне на колона оракул
промяна на таблицата преименуване на колона оракул
прехвърляне на колона в оракул
https://docs.oracle.com/cd/B28359_01/server.111/b28286/ statements_3001.htm