1. ENUM प्रकार का अवलोकन
ENUM प्रकार क्या है?
MySQL में ENUM (enumeration) प्रकार एक डेटा टाइप है जो पूर्वनिर्धारित सूची में से ठीक एक मान को संग्रहीत करता है। चूँकि केवल विशिष्ट पूर्वनिर्धारित स्ट्रिंग्स को कॉलम में सहेजा जा सकता है, यह डेटा की स्थिरता सुनिश्चित करता है और अवैध मानों के सम्मिलन को रोकता है।
उदाहरण के लिए, जब कोई उपयोगकर्ता लिंग या उत्पाद श्रेणी जैसी सीमित विकल्पों में से एक विकल्प चुनता है, तो ENUM प्रकार का उपयोग अनावश्यक त्रुटि‑जाँच लॉजिक को समाप्त कर देता है। नीचे ENUM कॉलम वाले टेबल को बनाने का एक उदाहरण दिया गया है:
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
category ENUM('食品', '衣料品', '家電', '家具') NOT NULL
);
इस उदाहरण में, category कॉलम केवल निम्नलिखित मानों में से एक को संग्रहीत कर सकता है: “食品”, “衣料品”, “家電”, या “家具”. यह डेटा प्रबंधन को सरल बनाता है और गलत इनपुट के जोखिम को कम करता है।
ENUM के मुख्य उपयोग केस
ENUM प्रकार आमतौर पर निम्नलिखित परिदृश्यों में उपयोग किया जाता है:
- स्थिति प्रबंधन : “未開始”, “進行中”, या “完了” जैसी कार्य‑प्रवाह चरणों को ट्रैक करना।
- श्रेणी परिभाषा : उत्पाद श्रेणियाँ, उपयोगकर्ता प्रकार, या नौकरी पदों जैसी पूर्वनिर्धारित विकल्पों का प्रबंधन।
- रैंकिंग या स्तर समूहबद्धता : गेम कठिनाई स्तर (“初級”, “中級”, “上級”) या उत्पाद रेटिंग (“良い”, “普通”, “悪い”)।
2. ENUM के फायदे और नुकसान
फायदे
- डेटा स्थिरता में सुधार
ENUM केवल अपनी पूर्वनिर्धारित सूची में शामिल मानों को स्वीकार करता है, जिससे डेटा को सुसंगत रूप से संभालना आसान हो जाता है। उदाहरण के लिए, लिंग प्रबंधन में केवल “男性” या “女性” जैसे परिभाषित मानों को अनुमति देकर अवैध इनपुट को रोका जा सकता है। - कुशल स्टोरेज उपयोग
प्रत्येक ENUM मान को आंतरिक रूप से एक पूर्णांक इंडेक्स के रूप में संग्रहीत किया जाता है। परिणामस्वरूप, यह VARCHAR की तुलना में कम स्टोरेज लेता है। उदाहरण के लिए, ‘small’ या ‘large’ जैसे मान VARCHAR के रूप में अधिक जगह लेते हैं, जबकि ENUM इन्हें संख्यात्मक इंडेक्स के माध्यम से कुशलता से संग्रहीत करता है।
नुकसान
- लचीलापन की कमी
ENUM मान स्थिर होते हैं। नई विकल्प जोड़ने के लिए टेबल संरचना को बदलना पड़ता है, इसलिए अक्सर बदलते डेटा सेट के लिए ENUM उपयुक्त नहीं है। - जटिल त्रुटि प्रबंधन
यदि कोई अवैध मान डाला जाता है, तो MySQL त्रुटि उत्पन्न कर सकता है या खाली स्ट्रिंग संग्रहीत कर सकता है। यह डेवलपर्स के लिए डिबगिंग को जटिल बना सकता है।
3. ENUM का कॉन्फ़िगरेशन और व्यावहारिक उपयोग
बुनियादी सेटअप और त्रुटि प्रबंधन
ENUM प्रकार को कॉन्फ़िगर करने के लिए, केवल वैध स्ट्रिंग्स की सूची को परिभाषित करें। नीचे दिया गया उदाहरण टेबल में एक ENUM कॉलम को परिभाषित करता है:
CREATE TABLE shirts (
id INT AUTO_INCREMENT PRIMARY KEY,
size ENUM('XS', 'S', 'M', 'L', 'XL') NOT NULL
);
यहाँ, size कॉलम केवल “XS”, “S”, “M”, “L”, या “XL” को स्वीकार करता है। सूची में नहीं मौजूद मान (जैसे ‘XXL’) डालने का प्रयास करने पर Data truncated त्रुटि आती है। यह अवैध डेटा को रोकता है और स्थिरता बनाए रखता है।
व्यावहारिक उपयोग उदाहरण
निम्न उदाहरण ENUM का उपयोग करके उपयोगकर्ता भूमिकाओं जैसे “管理者”, “一般ユーザー”, और “ゲスト” को प्रबंधित करता है:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
role ENUM('管理者', '一般ユーザー', 'ゲスト') NOT NULL
);
ENUM कॉलम का उपयोग करने से अनुमतियों और भूमिका‑आधारित नियंत्रण को सुसंगत रूप से बनाए रखना आसान हो जाता है।

4. ENUM के साथ इंडेक्सिंग और NULL का प्रबंधन
इंडेक्स का उपयोग
ENUM मानों को उनकी सूची में स्थिति के आधार पर पूर्णांक इंडेक्स सौंपे जाते हैं। उदाहरण के लिए:
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
size ENUM('S', 'M', 'L', 'XL')
);
“S” का इंडेक्स 1 है, “M” का इंडेक्स 2, आदि। इन इंडेक्सों का उपयोग WHERE क्लॉज़ में किया जा सकता है:
SELECT * FROM products WHERE size = 2;
यह क्वेरी उन रिकॉर्ड्स को प्राप्त करती है जहाँ आकार “M” के अनुरूप है।
NULL और खाली स्ट्रिंग का प्रबंधन
यदि NULL की अनुमति है, तो कॉलम NULL को एक वैध स्थिति के रूप में संग्रहीत कर सकता है, भले ही वह ENUM सूची में न हो। अतिरिक्त रूप से, यदि अवैध डेटा खाली स्ट्रिंग के रूप में डाला जाता है, तो उसे इंडेक्स 0 के साथ संग्रहीत किया जाता है, जिससे गलत इनपुट को आसानी से पहचाना जा सकता है।
5. ENUM के लिए कैरेक्टर सेट और कोलेशन
कैरेक्टर सेट और कोलेशन कैसे सेट करें?
ENUM, CHAR या VARCHAR की तरह, कैरेक्टर सेट और कोलेशन परिभाषाओं का समर्थन करता है। यह बहुभाषी डेटा या सॉर्टिंग ऑपरेशन्स को संभालते समय महत्वपूर्ण है। उदाहरण:
CREATE TABLE documents (
id INT AUTO_INCREMENT PRIMARY KEY,
language ENUM('日本語', '英語', '中国語')
CHARACTER SET utf8
COLLATE utf8_general_ci
);
यह उदाहरण UTF-8 और एक सामान्य‑उद्देश्य कोलेशन को निर्दिष्ट करता है।
6. ENUM का विस्तार और विकल्प
ENUM को विस्तारित करने की तकनीकें
चूंकि ENUM गतिशील मानों के लिए लचीलापन नहीं देता, आप एक “Other” विकल्प शामिल कर सकते हैं और फ्री‑फ़ॉर्म इनपुट को एक अलग कॉलम में संग्रहीत कर सकते हैं:
ALTER TABLE products
MODIFY COLUMN category ENUM('食品', '衣料品', '家電', '家具', 'その他') NOT NULL,
ADD COLUMN category_other VARCHAR(255) DEFAULT NULL;
यह ENUM सूची में शामिल नहीं किए गए मानों को संरचना बनाए रखते हुए संग्रहीत करने की अनुमति देता है।
वैकल्पिक डेटा प्रकार: SET या VARCHAR
आवश्यकताओं के आधार पर, विकल्प शामिल हैं:
- SET प्रकार : सूची से कई चयन संग्रहीत करता है।
- VARCHAR : पूर्वनिर्धारित प्रतिबंधों के बिना अधिकतम लचीलापन प्रदान करता है।

