MYSQL - बदलें, छोड़ें, नाम बदलें, संशोधित करें

⚡ स्मार्ट सारांश

ALTER, DROP, RENAME और MODIFY वे क्रियाएं हैं जो MySQL ये वे कमांड हैं जो डेटाबेस के उपयोग में होने के बाद उसे नया रूप देते हैं। ये पहले से संग्रहीत पंक्तियों को हटाए बिना टेबल और कॉलम जैसे ऑब्जेक्ट को जोड़ते, हटाते, नाम बदलते और पुनर्परिभाषित करते हैं।

  • ALTER कमांड: ALTER TABLE एक पहले से मौजूद ऑब्जेक्ट को पुनर्परिभाषित करता है, इसलिए एक लाइव स्कीमा बिना पुनर्निर्माण के नई आवश्यकताओं को समाहित कर लेता है।
  • कॉलम जोड़ें: ALTER TABLE ADD COLUMN कमांड एक फ़ील्ड जोड़ता है, और मौजूदा पंक्तियों में पहले से मौजूद सभी मान बने रहते हैं।
  • ड्रॉप कमांड: DROP कमांड डेटाबेस, टेबल या किसी एक कॉलम को स्थायी रूप से हटा देता है, जैसा कि ALTER TABLE DROP COLUMN कमांड के माध्यम से किया जाता है।
  • 🔁 RENAME कमांड: RENAME TABLE कमांड केवल टेबल का नाम बदलता है, और इसके अंदर का कोई भी डेटा नष्ट नहीं होता है।
  • परिवर्तन मुख्य शब्द: CHANGE एक ही स्टेटमेंट में कॉलम का नाम बदलता है और उसके प्रकार और बाधाओं को पुनर्परिभाषित करता है, इसलिए दोनों कॉलम नाम आवश्यक हैं।
  • 🧩 मॉडिफाई कीवर्ड: MODIFY कमांड kee कमांड के टाइप और कंस्ट्रेंट को बदलता है।ping नाम, केवल टाइप-आधारित संपादन के लिए अधिक सुरक्षित विकल्प है।
  • 📍 बाद का कीवर्ड: AFTER फ़ंक्शन नए जोड़े गए कॉलम को तालिका के अंत में रखने के बजाय चुने हुए स्थान पर रखता है।

MySQL बदलना, हटाना, नाम बदलना और संशोधित करना

ALTER कमांड क्या है? MySQL?

RSI बदलने यह कमांड डेटाबेस के जीवन चक्र के दौरान बदलने की आवश्यकता वाले मौजूदा डेटाबेस, टेबल, व्यू या अन्य डेटाबेस ऑब्जेक्ट को संशोधित करता है। यह वह कमांड है जो स्कीमा को पहले से बनाए जाने और डेटा से भरे जाने के बाद भी विकसित होने देता है।

व्यावसायिक आवश्यकताएं कभी स्थिर नहीं रहतीं, और डेटाबेस डिज़ाइन को भी इनके साथ-साथ विकसित होना पड़ता है। मान लीजिए कि Myflix डेटाबेस का डिज़ाइन लागू हो चुका है और उपयोगकर्ता इसका उपयोग कर रहे हैं, और तभी टीम को पता चलता है कि कुछ महत्वपूर्ण जानकारी छूट गई है। कोई भी मौजूदा पंक्तियों को खोना नहीं चाहता; वे बस नई जानकारी को उनके साथ दर्ज करना चाहते हैं।

ALTER फ़ंक्शन ठीक इसी स्थिति को हल करता है। यह किसी फ़ील्ड के डेटा प्रकार को स्ट्रिंग से संख्या में बदल सकता है, किसी फ़ील्ड का नाम बदल सकता है, या किसी तालिका में पूरी तरह से एक नया कॉलम जोड़ सकता है, और यह सब तब होता है जब तालिका में पहले से संग्रहीत डेटा अपरिवर्तित रहता है।

एक बार कमांड का उद्देश्य निर्धारित हो जाने के बाद, अगला चरण उस कमांड को क्रियान्वित करने के लिए आवश्यक सिंटैक्स तैयार करना है।

MySQL ALTER सिंटैक्स

पहले से मौजूद तालिका में एक कॉलम जोड़ने के लिए उपयोग किए जाने वाले मूल सिंटैक्स को नीचे दिखाया गया है।

ALTER TABLE `table_name` ADD COLUMN `column_name` `data_type`;

यहाँ

  • “टेबल `table_name` बदलें” यह वह आदेश है जो बताता है MySQL सर्वर को `table_name` नामक तालिका को संशोधित करने के लिए कहा।
  • “कॉलम जोड़ें `column_name` `data_type`” यह वह आदेश है जो बताता है MySQL सर्वर में `column_name` नाम का एक नया कॉलम और `data_type` डेटा प्रकार जोड़ने का निर्देश दिया गया है।

मान लीजिए कि Myflix ने ऑनलाइन बिलिंग और भुगतान शुरू कर दिया है। इसके लिए, सदस्यों की तालिका में क्रेडिट कार्ड नंबर के लिए एक फ़ील्ड जोड़ना होगा। कोई भी संशोधन करने से पहले, तालिका की वर्तमान संरचना को देखना उचित होगा। नीचे दिया गया स्क्रिप्ट यही करता है।

SHOW COLUMNS FROM `members`;
क्षेत्र प्रकार अशक्त कुंजी चूक अतिरिक्त
सदस्यता_संख्या पूर्णांक (11) नहीं पंचायती राज नल स्वत: वेतनवृद्धि
पूरे नाम वर्चर(350) नहीं नल
लिंग वर्चर(6) हाँ नल
जन्म तिथि डेटा हाँ नल
भौतिक_पता वर्चर(255) हाँ नल
डाक का पता वर्चर(255) हाँ नल
संपर्क संख्या वर्चर(75) हाँ नल
ईमेल वर्चर(255) हाँ नल

💡 int(11) पर टिप्पणी: कोष्ठक में दी गई संख्या केवल डिस्प्ले की चौड़ाई है। MySQL 8.0.17 ने इसे पूर्णांक प्रकारों के लिए अप्रचलित कर दिया, इसलिए एक आधुनिक सर्वर इस कॉलम को बस इस प्रकार रिपोर्ट करता है intभंडारण क्षमता अपरिवर्तित है।

नीचे दी गई स्क्रिप्ट सदस्यों की तालिका में नया फ़ील्ड जोड़ती है।

ALTER TABLE `members` ADD COLUMN `credit_card_number` VARCHAR(25);

myflixdb पर इस स्क्रिप्ट को चलाने से members टेबल में credit_card_number नाम का एक कॉलम जुड़ जाता है, जिसका डेटा टाइप VARCHAR होता है। SHOW COLUMNS स्क्रिप्ट को दोबारा चलाने पर निम्नलिखित परिणाम मिलता है।

क्षेत्र प्रकार अशक्त कुंजी चूक अतिरिक्त
सदस्यता_संख्या पूर्णांक (11) नहीं पंचायती राज नल स्वत: वेतनवृद्धि
पूरे नाम वर्चर(350) नहीं नल
लिंग वर्चर(6) हाँ नल
जन्म तिथि डेटा हाँ नल
भौतिक_पता वर्चर(255) हाँ नल
डाक का पता वर्चर(255) हाँ नल
संपर्क संख्या वर्चर(75) हाँ नल
ईमेल वर्चर(255) हाँ नल
क्रेडिट कार्ड नंबर वर्चर(25) हाँ नल

हाइलाइट की गई पंक्ति इस बात की पुष्टि करती है कि क्रेडिट_कार्ड_नंबर को सदस्यों की तालिका में जोड़ दिया गया है, और अन्य स्तंभों में पहले से मौजूद डेटा इस जोड़ से अप्रभावित है।

एक कॉलम जोड़ना तो आधी बात है। स्कीमा को उन ऑब्जेक्ट्स को भी हटाना होता है जिनकी अब उसे आवश्यकता नहीं है, और यही काम DROP कमांड करता है।

ड्रॉप कमांड क्या है? MySQL?

DROP कमांड किसी ऑब्जेक्ट को स्थायी रूप से हटा देता है। इसका उपयोग किया जाता है

  1. डेटाबेस को हटाएं MySQL सर्वर.
  2. डेटाबेस से किसी ऑब्जेक्ट, जैसे कि टेबल या कॉलम को डिलीट करें।

⚠️ चेतावनी: DROP प्रक्रिया अपरिवर्तनीय है। बैकअप के बिना न तो ऑब्जेक्ट और न ही उसके अंदर की पंक्तियों को पुनर्प्राप्त किया जा सकता है, इसलिए लक्ष्य पर SELECT क्वेरी चलाएँ और पहले बैकअप की पुष्टि करें।

बूंदping एक कॉलम

ऊपर दिए गए ALTER उदाहरण में, members टेबल में credit_card_number नामक एक कॉलम जोड़ा गया था। मान लीजिए कि ऑनलाइन बिलिंग सुविधा स्थगित कर दी गई है और उस कॉलम को फिर से हटाना आवश्यक है। निम्नलिखित स्क्रिप्ट यही कार्य करती है।

ALTER TABLE `members` DROP COLUMN `credit_card_number`;

स्क्रिप्ट को चलाने पर मेंबर्स टेबल से क्रेडिट_कार्ड_नंबर कॉलम हट जाता है। कॉलमों को दोबारा सूचीबद्ध करने पर परिणाम की पुष्टि होती है।

SHOW COLUMNS FROM `members`;
क्षेत्र प्रकार अशक्त कुंजी चूक अतिरिक्त
सदस्यता_संख्या पूर्णांक (11) नहीं पंचायती राज नल स्वत: वेतनवृद्धि
पूरे नाम वर्चर(350) नहीं नल
लिंग वर्चर(6) हाँ नल
जन्म तिथि डेटा हाँ नल
भौतिक_पता वर्चर(255) हाँ नल
डाक का पता वर्चर(255) हाँ नल
संपर्क संख्या वर्चर(75) हाँ नल
ईमेल वर्चर(255) हाँ नल

क्रेडिट कार्ड नंबर फ़ील्ड सूची से हट गया है।

ड्रॉप तालिका

डेटाबेस से पूरी टेबल को हटाने का सिंटैक्स इस प्रकार है।

DROP TABLE `sample_table`;

किसी वास्तविक वस्तु पर लागू करने पर, यह कथन इस प्रकार दिखता है।

DROP TABLE `categories_archive`;

इसे निष्पादित करने से डेटाबेस से `categories_archive` नामक तालिका और उसके अंदर की सभी पंक्तियाँ हटा दी जाती हैं।

ड्रॉपडाउन

वही कीवर्ड पूरे स्कीमा को हटा देता है। IF EXISTS जोड़ने से त्रुटि दब जाती है। MySQL यह तब त्रुटि उत्पन्न करता है जब लक्ष्य पहले ही जा चुका होता है, जो उन स्क्रिप्ट के अंदर उपयोगी होता है जो एक से अधिक बार चलती हैं।

DROP DATABASE IF EXISTS `myflixdb_backup`;

किसी ऑब्जेक्ट को हटाना अंतिम प्रक्रिया है। जब ऑब्जेक्ट को बनाए रखना आवश्यक हो और केवल उसका नाम गलत हो, तो RENAME कमांड का उपयोग करना सही तरीका है।

RENAME कमांड क्या है? MySQL?

RENAME कमांड किसी मौजूदा डेटाबेस ऑब्जेक्ट, जैसे कि टेबल या कॉलम, का नाम बदलकर नया नाम रख देता है। किसी टेबल का नाम बदलने से उसमें मौजूद डेटा नष्ट नहीं होता है।

इस कमांड का मूल सिंटैक्स निम्नलिखित है।

RENAME TABLE `current_table_name` TO `new_table_name`;

मूवी रेंटल्स टेबल का नाम बदलकर मूवी_रेंटल्स करने के लिए, नीचे दिए गए स्क्रिप्ट का उपयोग किया जाता है।

RENAME TABLE `movierentals` TO `movie_rentals`;

इसे निष्पादित करने से `movierentals` टेबल का नाम बदलकर `movie_rentals` हो जाता है। चूंकि नाम में परिवर्तन केवल लेबल का परिवर्तन है, इसलिए उसी कथन को उलट कर चलाने से मूल नाम बहाल हो जाता है।

RENAME TABLE `movie_rentals` TO `movierentals`;

RENAME TABLE फ़ंक्शन किसी टेबल के नाम को नियंत्रित करता है। किसी टेबल का नाम बदलने के लिए इसका उपयोग किया जाता है। स्तंभऔर इसमें निहित सामग्री को बदलना, CHANGE कीवर्ड का काम है।

परिवर्तन कीवर्ड

CHANGE कीवर्ड आपको इसकी अनुमति देता है

  1. किसी कॉलम का नाम बदलें
  2. कॉलम डेटा प्रकार बदलें
  3. कॉलम की बाधाओं को बदलें

एक उदाहरण पर विचार करें। नीचे दिए गए स्क्रिप्ट से पुष्टि होती है कि मेंबर्स टेबल में full_names फ़ील्ड varchar डेटा प्रकार का है जिसकी चौड़ाई 350 है।

SHOW COLUMNS FROM `members`;
क्षेत्र प्रकार अशक्त कुंजी चूक अतिरिक्त
सदस्यता_संख्या पूर्णांक (11) नहीं पंचायती राज नल स्वत: वेतनवृद्धि
पूरे नाम वर्चर(350) नहीं नल
लिंग वर्चर(6) हाँ नल
जन्म तिथि डेटा हाँ नल
भौतिक_पता वर्चर(255) हाँ नल
डाक का पता वर्चर(255) हाँ नल
संपर्क संख्या वर्चर(75) हाँ नल
ईमेल वर्चर(255) हाँ नल

मान लीजिए कि आवश्यकता यह है कि

  1. फ़ील्ड का नाम “full_names” से बदलकर “fullname” कर दें।
  2. इसे 250 की चौड़ाई वाले char डेटा प्रकार में बदलें।
  3. NOT NULL प्रतिबंध जोड़ें

ये तीनों बदलाव एक ही CHANGE स्टेटमेंट के माध्यम से किए जाते हैं।

ALTER TABLE `members` CHANGE COLUMN `full_names` `fullname` char(250) NOT NULL;

इसे myflixdb के विरुद्ध निष्पादित करने और फिर SHOW COLUMNS स्क्रिप्ट चलाने पर निम्नलिखित परिणाम प्राप्त होता है।

क्षेत्र प्रकार अशक्त कुंजी चूक अतिरिक्त
सदस्यता_संख्या पूर्णांक (11) नहीं पंचायती राज नल स्वत: वेतनवृद्धि
पूरा नाम चार(250) नहीं नल
लिंग वर्चर(6) हाँ नल
जन्म तिथि डेटा हाँ नल
भौतिक_पता वर्चर(255) हाँ नल
डाक का पता वर्चर(255) हाँ नल
संपर्क संख्या वर्चर(75) हाँ नल
ईमेल वर्चर(255) हाँ नल

अब इस कॉलम को फुलनेम कहा जाता है, इसमें char(250) मान होते हैं और यह NULL मानों को अस्वीकार करता है।

कीवर्ड संशोधित करें

MODIFY कीवर्ड आपको इसकी अनुमति देता है

  1. कॉलम डेटा प्रकार को संशोधित करें
  2. कॉलम की बाधाओं को संशोधित करें

ऊपर दिए गए CHANGE उदाहरण में, फ़ील्ड का नाम दो बार देना पड़ा, जबकि नाम बदलना लक्ष्य का केवल एक हिस्सा था। CHANGE स्टेटमेंट से फ़ील्ड नाम को हटा देने पर त्रुटि उत्पन्न होती है। जब केवल डेटा प्रकार और बाधाओं को समायोजित करने की आवश्यकता होती है और नाम को यथावत रखना होता है, तो MODIFY फ़ंक्शन कॉलम का एक बार उल्लेख करके ही काम कर देता है।

नीचे दी गई स्क्रिप्ट "fullname" फ़ील्ड की चौड़ाई को 250 से बदलकर 50 कर देती है।

ALTER TABLE `members` MODIFY `fullname` char(50) NOT NULL;

इसे myflixdb के विरुद्ध निष्पादित करने और फिर SHOW COLUMNS स्क्रिप्ट चलाने पर नीचे दिखाया गया परिणाम प्राप्त होता है।

क्षेत्र प्रकार अशक्त कुंजी चूक अतिरिक्त
सदस्यता_संख्या पूर्णांक (11) नहीं पंचायती राज नल स्वत: वेतनवृद्धि
पूरा नाम चार(50) नहीं नल
लिंग वर्चर(6) हाँ नल
जन्म तिथि डेटा हाँ नल
भौतिक_पता वर्चर(255) हाँ नल
डाक का पता वर्चर(255) हाँ नल
संपर्क संख्या वर्चर(75) हाँ नल
ईमेल वर्चर(255) हाँ नल

⚠️ चेतावनी: किसी कॉलम को संकुचित करने से वह डेटा हट जाता है जो उसमें फिट नहीं हो पाता। 50 अक्षरों से अधिक लंबा कोई भी नाम इस कथन द्वारा छोटा कर दिया जाता है, इसलिए सबसे लंबे मौजूदा मान की जाँच करें। चुनते हैं किसी फ़ील्ड को छोटा करने से पहले क्वेरी करें।

कॉलम को बदलें, संशोधित करें या उसका नाम बदलें

ये तीनों कीवर्ड आपस में मिलते-जुलते हैं, और गलत कीवर्ड का चुनाव इस क्षेत्र में होने वाली गलतियों का सबसे आम कारण है। नीचे दी गई तालिका में इन्हें साथ-साथ दिखाया गया है।

खोजशब्द कॉलम का नाम बदलता है प्रकार और बाधाओं को बदलता है पुराना नाम आवश्यक है विशिष्ट उपयोग
बदलें हाँ हाँ हाँ, साथ ही नया नाम भी। एक ही कथन में नाम बदलें और पुनर्परिभाषित करें
संशोधित नहीं हाँ नाम एक बार दिया गया किसी कॉलम को चौड़ा, संकरा या पुनः टाइप करें
कॉलम का नाम बदलें हाँ नहीं हाँ, साथ ही नया नाम भी। केवल नाम बदलें, से MySQL 8.0 आगे

MySQL 8.0 ने सबसे सरल मामले के लिए एक चौथा विकल्प जोड़ा, जिसमें बिना किसी पुनर्परिभाषा के नाम बदलना शामिल है।

ALTER TABLE `members` RENAME COLUMN `fullname` TO `full_name`;

प्रकार और नाम तय हो चुके हैं। अब सवाल यह है कि टेबल में नया कॉलम कहाँ रखा जाएगा, जिसे AFTER कीवर्ड नियंत्रित करता है।

बाद में कीवर्ड

सामान्यतः, ALTER TABLE कमांड से जोड़ा गया कॉलम टेबल के अंत में आता है। इसे किसी विशिष्ट स्थान पर रखने के लिए, ALTER कमांड को AFTER कीवर्ड के साथ प्रयोग किया जाता है।

नीचे दी गई स्क्रिप्ट सदस्यों की तालिका में जन्मतिथि के ठीक बाद "पंजीकरण तिथि" जोड़ देती है।

ALTER TABLE `members` ADD `date_of_registration` date NULL AFTER `date_of_birth`;

इसे myflixdb के विरुद्ध निष्पादित करने और फिर SHOW COLUMNS स्क्रिप्ट चलाने पर नीचे दिखाया गया परिणाम प्राप्त होता है।

क्षेत्र प्रकार अशक्त कुंजी चूक अतिरिक्त
सदस्यता_संख्या पूर्णांक (11) नहीं पंचायती राज नल स्वत: वेतनवृद्धि
पूरा नाम चार(50) नहीं नल
लिंग वर्चर(6) हाँ नल
जन्म तिथि डेटा हाँ नल
पंजीकरण की तिथि डेटा हाँ नल
भौतिक_पता वर्चर(255) हाँ नल
डाक का पता वर्चर(255) हाँ नल
संपर्क संख्या वर्चर(75) हाँ नल
ईमेल वर्चर(255) हाँ नल

हाइलाइट की गई पंक्ति जन्मतिथि के बाद जोड़ा गया कॉलम है। FIRST कीवर्ड भी इसी तरह काम करता है और नए कॉलम को टेबल के बिल्कुल आगे ले जाता है।

अक्सर पूछे जाने वाले प्रश्न

नहीं। ALTER, DROP और RENAME जैसे DDL स्टेटमेंट स्वतः ही कमिट हो जाते हैं। MySQLइसलिए, एक खुला लेनदेन उन्हें रद्द नहीं कर सकता। बैकअप से पुनर्स्थापित करना ही एकमात्र उपाय है।

यह बदलाव पर निर्भर करता है। कई InnoDB परिवर्तन ऑनलाइन चलते हैं और एक साथ कई रीड और राइट ऑपरेशन की अनुमति देते हैं, जबकि अन्य पूरी टेबल की कॉपी बनाते हैं और राइट ऑपरेशन को ब्लॉक कर देते हैं। आप क्या स्वीकार करेंगे, यह बताने के लिए ALGORITHM और LOCK क्लॉज़ जोड़ें।

DROP फ़ंक्शन ऑब्जेक्ट को हटा देता है। TRUNCATE फ़ंक्शन टेबल को खाली कर देता है लेकिन उसकी संरचना को बरकरार रखता है। हटाएँ यह चयनित पंक्तियों को हटाता है और इसे WHERE क्लॉज़ के साथ फ़िल्टर किया जा सकता है।

आमतौर पर, हाँ। ग्राहकों में निर्मित एआई सहायक जैसे कि MySQL कार्यक्षेत्र “जन्म तिथि के बाद एक नलेबल दिनांक कॉलम जोड़ें” जैसे अनुरोध को मान्य सिंटैक्स में बदलें। Revइसे चलाने से पहले उत्पन्न स्टेटमेंट की तुलना लाइव स्कीमा से करें।

आंशिक रूप से ही। एआई समीक्षा उपकरण स्पष्ट जोखिमों को चिह्नित करते हैं, जैसे कि क्वेरी में अभी भी नामित एक छूटा हुआ कॉलम या एक संकुचित प्रकार जो डेटा को छोटा कर देता है। वे हर कॉलर को नहीं देख सकते, इसलिए एक चरणबद्ध परीक्षण अभी भी आवश्यक है।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: