हम तालिका में . का उपयोग करके स्तंभ डेटाटाइप को बदल सकते हैं ऑरैकल में तालिका संशोधित कॉलम बदलें
ALTER TABLE table_name MODIFY column_name <action>;
कार्रवाई कई चीजें हो सकती हैं जैसे
(a) डेटा प्रकार बदलें
(b) डेटा प्रकार को छोटा या चौड़ा करें
(c) डिफ़ॉल्ट मान बदलें
(d) में बदलें अशक्त या शून्य की अनुमति दें
(e) कॉलम दृश्यता
(d) वर्चुअल कॉलम संशोधन
आइए एक-एक करके शुरू करते हैं
Oracle MODIFY कॉलम डेटा प्रकार बदलें
कॉलम खाली होने पर ही आप कॉलम परिवर्तन डेटाटाइप को संशोधित कर सकते हैं
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 (Book_Id), CONSTRAINT Books_master_UK1 UNIQUE (Title, Author), CONSTRAINT Books_master_UK2 UNIQUE (ISBN) ) ; Table Created
चूंकि तालिका खाली है, हम कॉलम परिवर्तन डेटाटाइप को संशोधित कर सकते हैं
SQL> alter table Books_master modify ISBN NUMBER(6,0); Table altered. SQL> alter table Books_master modify ISBN VARCHAR2(25); Table altered.
आइए कुछ डेटा डालें
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 row created. commit;
अब फिर से डेटाटाइप बदलने के लिए कॉलम को संशोधित करने का प्रयास करें
SQL> alter table Books_master modify ISBN NUMBER(6,0); alter table Books_master modify ISBN NUMBER(6,0) * ERROR at line 1: ORA-01439: column to be modified must be empty to change datatype
अब हम उस कॉलम को खाली कर सकते हैं और इस स्टेटमेंट को सफलतापूर्वक चला सकते हैं
SQL> update Books_master set ISBN=null; 1 row updated. SQL> commit; Commit complete. SQL> alter table Books_master modify ISBN NUMBER(6,0); Table altered.
अब अगर हम डेटा रखना चाहते हैं तो क्या करें, कई विकल्प हैं
(ए) नए डेटाटाइप के रूप में नया कॉलम जोड़ें, इस कॉलम में डेटा कॉपी करें, पुराने कॉलम को हटाएं, नए कॉलम को वास्तविक कॉलम नाम के रूप में नाम बदलें:पी>
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;
(बी) DBMS_REDEFINITION का उपयोग करें और अपनी तालिका को नए कॉलम के साथ पुनर्निर्माण करें
Oracle MODIFY कॉलम डेटाटाइप को छोटा या चौड़ा करता है (टेबल संशोधित कॉलम आकार oracle)
इसका उपयोग तब किया जाता है जब हम VARCHAR बाइट्स या कैरेक्टर को बदलना चाहते हैं।
उदाहरण
यहां हम VARCHAR की लंबाई 50 से बढ़ाकर 100 कर रहे हैं
SQL> alter table Books_master modify title VARCHAR2(100); Table altered.
अब अगर हम लंबाई को 100 से 10 तक छोटा करने की कोशिश कर रहे हैं
SQL> alter table Books_master modify title VARCHAR2(10); alter table Books_master modify title VARCHAR2(10) * ERROR at line 1: ORA-01441: cannot decrease column length because some value is too big
ऐसा इसलिए होता है क्योंकि मौजूदा डेटा उस आकार में फ़िट नहीं होता है। तो या तो लंबाई बढ़ा सकते हैं या उस कॉलम को अपडेट कर सकते हैं
SQL> alter table Books_master modify title VARCHAR2(20); Table altered.
Oracle कॉलम का डिफ़ॉल्ट मान संशोधित करें
अगर हमें कॉलम के डिफ़ॉल्ट मान को संशोधित करना है
SQL> alter table BOOKS_MASTER modify BCOST default 1000; Table altered.
अब अगली बार यदि कोई इंसर्ट होता है और BCOST शून्य है, तो उसका डिफ़ॉल्ट मान 1000 होगा
alter table 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 row created.
SQL> commit;
Commit complete.
SQL> select BCOST from Books_master where book_id=21;
BCOST
-----
1000
Oracle संशोधित कॉलम NULL या NOT NULL
हम अशक्त या शून्य की अनुमति देने के लिए कॉलम को संशोधित कर सकते हैं
SQL> desc books_master Name 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 modify PUBLISH_YEAR not null; Table altered. SQL> desc books_master Name 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)
यदि आप नॉट नल में बदल रहे हैं, तो हमारे पास मौजूदा मान होना चाहिए, अन्यथा यह विफल हो जाएगा
Oracle MODIFY कॉलम दृश्यता
हम कॉलम की दृश्यता को संशोधित कॉलम के साथ बदल सकते हैं
SQL> desc books_master Name 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> alter table BOOKS_MASTER modify PUBLISH_YEAR invisible; Table altered. Now the column become invisible SQL> desc books_master Name Null? Type ---- ---- ---- BOOK_ID NOT NULL NUMBER(6) TITLE VARCHAR2(20) AUTHOR VARCHAR2(50) ISBN NUMBER(6) BCOST NOT NULL NUMBER(6) SQL> alter table BOOKS_MASTER modify PUBLISH_YEAR visible; Table altered. Now the column become visible SQL> desc books_master Name 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)
मुझे आशा है कि आपको यह पोस्ट ऑरैकल चेंज टेबल पर कॉलम को संशोधित करना पसंद आएगा। कृपया फ़ीडबैक प्रदान करें
यह भी पढ़ता है
टेबल जोड़ें कॉलम ऑरैकल बदलें
टेबल का नाम बदलें कॉलम ऑरैकल
ऑरैकल में ड्रॉप कॉलम
https://docs.oracle.com/cd/B28359_01/server.111/b28286/ स्टेटमेंट_3001.htm