- 1 1. परिचय
- 2 2. UNIQUE प्रतिबंध की बुनियादी बातें
- 3 3. UNIQUE प्रतिबंध का उपयोग कैसे करें
- 4 4. UNIQUE प्रतिबंध के लिए महत्वपूर्ण विचार
- 5 5. Frequently Asked Questions (FAQ)
- 5.1 Q1: What is the difference between UNIQUE and PRIMARY KEY?
- 5.2 Q2: What happens if you apply a UNIQUE constraint to a column that allows NULL values?
- 5.3 Q3: When should a composite UNIQUE constraint be used?
- 5.4 Q4: Can you add a UNIQUE constraint if duplicate data already exists?
- 5.5 Q5: Does removing a UNIQUE constraint also remove its index?
- 6 6. Summary
1. परिचय
डेटाबेस डिज़ाइन में, डेटा की विशिष्टता बनाए रखना अत्यंत महत्वपूर्ण है। यदि एक ही डेटा कई बार पंजीकृत किया जाता है, तो यह सिस्टम में गड़बड़ी का कारण बन सकता है और डेटा असंगति उत्पन्न कर सकता है। MySQL एक सुविधा प्रदान करता है जिसे UNIQUE प्रतिबंध कहा जाता है, जो इस समस्या को रोकता है।
उदाहरण के लिए, जब उपयोगकर्ता किसी वेब सेवा के लिए पंजीकरण करते हैं, यदि एक ही ईमेल पता कई बार पंजीकृत हो जाता है, तो लॉगिन त्रुटियाँ हो सकती हैं। ऐसी स्थितियों से बचने के लिए, आप UNIQUE प्रतिबंध का उपयोग कर सकते हैं ताकि किसी विशिष्ट कॉलम में मान हमेशा अद्वितीय रहें।
इस लेख में, हम MySQL UNIQUE प्रतिबंध को स्पष्ट रूप से समझाते हैं—बुनियादी उपयोग से लेकर उन्नत उदाहरणों तक। हम महत्वपूर्ण विचारों और अक्सर पूछे जाने वाले प्रश्नों को भी कवर करते हैं ताकि आप इस ज्ञान को वास्तविक प्रोजेक्ट्स में तुरंत लागू कर सकें।
2. UNIQUE प्रतिबंध की बुनियादी बातें
UNIQUE प्रतिबंध क्या है?
MySQL में UNIQUE प्रतिबंध किसी विशिष्ट कॉलम या कॉलमों के संयोजन में दोहराए गए मानों को रोकता है। इस प्रतिबंध को लागू करके, आप सुनिश्चित करते हैं कि एक ही मान एक से अधिक बार नहीं डाला जा सकता।
UNIQUE और PRIMARY KEY में अंतर
MySQL एक PRIMARY KEY प्रतिबंध भी प्रदान करता है, जो कई पहलुओं में UNIQUE प्रतिबंध से अलग होता है।
- PRIMARY KEY हमेशा NOT NULL होता है
PRIMARY KEYन केवल विशिष्टता की गारंटी देता है बल्कि NULL मानों को भी प्रतिबंधित करता है। इसके विपरीत,UNIQUEप्रतिबंध NULL मानों की अनुमति देता है। - प्रति तालिका केवल एक PRIMARY KEY एक तालिका में केवल एक
PRIMARY KEYहो सकता है, जबकि कईUNIQUEप्रतिबंध एक ही तालिका में परिभाषित किए जा सकते हैं।
UNIQUE प्रतिबंध के सामान्य उपयोग केस
UNIQUE प्रतिबंध आमतौर पर निम्नलिखित परिदृश्यों में उपयोग किया जाता है:
- ईमेल पते या उपयोगकर्ता नाम जब प्रत्येक उपयोगकर्ता का एक अद्वितीय ईमेल पता या उपयोगकर्ता नाम होना आवश्यक हो।
- उत्पाद संख्या या ऑर्डर संख्या जब उत्पाद ID या ऑर्डर ID दोहराए नहीं जाने चाहिए।
- संयुक्त शर्तें जब आपको दो या अधिक कॉलमों के बीच विशिष्टता सुनिश्चित करनी हो।
3. UNIQUE प्रतिबंध का उपयोग कैसे करें
तालिका बनाते समय इसे परिभाषित करें
MySQL में, आप नई तालिका बनाते समय सीधे UNIQUE प्रतिबंध को परिभाषित कर सकते हैं।
उदाहरण: एकल कॉलम पर लागू करें
CREATE TABLE users (
id INT AUTO_INCREMENT,
email VARCHAR(255) UNIQUE,
PRIMARY KEY (id)
);
इस उदाहरण में, email कॉलम पर UNIQUE प्रतिबंध लागू किया गया है। एक ही ईमेल पते को कई बार डालने का प्रयास करने पर त्रुटि उत्पन्न होगी।
उदाहरण: कई कॉलम (संयुक्त UNIQUE प्रतिबंध)
CREATE TABLE orders (
order_id INT AUTO_INCREMENT,
product_id INT,
user_id INT,
UNIQUE (product_id, user_id),
PRIMARY KEY (order_id)
);
यह उदाहरण सुनिश्चित करता है कि product_id और user_id का संयोजन अद्वितीय हो। यह तब उपयोगी होता है जब आप चाहते हैं कि एक ही उपयोगकर्ता एक ही उत्पाद को कई बार ऑर्डर न कर सके।
मौजूदा तालिका में प्रतिबंध जोड़ें
आप मौजूदा तालिका में भी UNIQUE प्रतिबंध जोड़ सकते हैं।
उदाहरण: एकल कॉलम में प्रतिबंध जोड़ें
ALTER TABLE users
ADD CONSTRAINT unique_email UNIQUE (email);
उदाहरण: संयुक्त प्रतिबंध जोड़ें
ALTER TABLE orders
ADD CONSTRAINT unique_product_user UNIQUE (product_id, user_id);
प्रतिबंध को हटाने का तरीका
मौजूदा प्रतिबंध को हटाने के लिए, निम्नलिखित SQL कथनों का उपयोग करें:
एकल-कालम प्रतिबंध हटाएँ
ALTER TABLE users
DROP INDEX unique_email;
संयुक्त प्रतिबंध हटाएँ
ALTER TABLE orders
DROP INDEX unique_product_user;
4. UNIQUE प्रतिबंध के लिए महत्वपूर्ण विचार
NULL मानों को संभालना
जब आप किसी ऐसे कॉलम पर UNIQUE प्रतिबंध लागू करते हैं जो NULL मानों की अनुमति देता है, तो विशेष नियम लागू होते हैं। MySQL एक ही कॉलम में कई NULL मान मौजूद होने पर भी त्रुटि नहीं देता। इसका कारण यह है कि MySQL NULL मानों को “किसी भी चीज़ के बराबर नहीं” मानता है।
उदाहरण:
CREATE TABLE test_table (
id INT AUTO_INCREMENT,
column1 INT UNIQUE,
PRIMARY KEY (id)
);
अब, निम्नलिखित डेटा डालें:
INSERT INTO test_table (column1) VALUES (NULL);
INSERT INTO test_table (column1) VALUES (NULL);
कोई त्रुटि नहीं होगी। इसका कारण यह है कि NULL मानों को किसी भी अन्य मान, यहाँ तक कि दूसरे NULL के बराबर नहीं माना जाता।
Performance Impact
जब आप एक UNIQUE प्रतिबंध निर्धारित करते हैं, तो MySQL स्वचालित रूप से आंतरिक रूप से एक इंडेक्स बनाता है। यह इंडेक्स डेटा की खोज और क्रमबद्ध करने में मदद करता है, लेकिन बड़े पैमाने पर डेटा डालते या अपडेट करते समय प्रदर्शन को कम कर सकता है।
- नोट 1: जब एक साथ बड़ी मात्रा में डेटा डाला जाता है, तो
UNIQUEप्रतिबंध की जाँच करनी पड़ती है, जिससे प्रक्रिया धीमी हो सकती है। - नोट 2: इष्टतम प्रदर्शन बनाए रखने के लिए, डेटा की मात्रा बहुत बड़ी होने से पहले इंडेक्स को पुनः बनाना विचार करें।
Handling Errors When They Occur
यदि UNIQUE प्रतिबंध का उल्लंघन होता है, तो MySQL त्रुटि कोड “1062” लौटाता है। यह त्रुटि तब उत्पन्न होती है जब डुप्लिकेट डेटा डालने का प्रयास किया जाता है।
उदाहरण:
INSERT INTO users (email) VALUES ('test@example.com');
INSERT INTO users (email) VALUES ('test@example.com');
दूसरा डालना त्रुटि देगा।
समाधान:
- डालने से पहले जाँचें कि डेटा पहले से मौजूद है या नहीं।
SELECT COUNT(*) FROM users WHERE email = 'test@example.com';
- जब डुप्लिकेट पाया जाए तो डेटा को अपडेट करने के लिए
ON DUPLICATE KEY UPDATEका उपयोग करें।INSERT INTO users (email) VALUES ('test@example.com') ON DUPLICATE KEY UPDATE email = 'test@example.com';
5. Frequently Asked Questions (FAQ)
Q1: What is the difference between UNIQUE and PRIMARY KEY?
PRIMARY KEY अद्वितीयता की गारंटी देता है और NULL मानों की अनुमति नहीं देता। प्रत्येक तालिका में केवल एक PRIMARY KEY परिभाषित किया जा सकता है। इसके विपरीत, UNIQUE प्रतिबंध कई कॉलमों पर परिभाषित किए जा सकते हैं और NULL मानों की अनुमति देते हैं।
Q2: What happens if you apply a UNIQUE constraint to a column that allows NULL values?
कई NULL मान डाले जा सकते हैं। इसका कारण यह है कि MySQL NULL मानों को असमान मानता है।
Q3: When should a composite UNIQUE constraint be used?
यह तब उपयोग किया जाता है जब आप कॉलमों के संयोजन में अद्वितीयता की गारंटी देना चाहते हैं, जैसे कि product_id और user_id के संयोजन को अद्वितीय बनाना। यह उपयोगकर्ता को एक ही उत्पाद को कई बार ऑर्डर करने से रोकता है।
Q4: Can you add a UNIQUE constraint if duplicate data already exists?
नहीं। यदि डुप्लिकेट डेटा पहले से मौजूद है, तो आप UNIQUE प्रतिबंध नहीं जोड़ सकते। प्रतिबंध जोड़ने से पहले आपको डुप्लिकेट रिकॉर्ड को हटाना या सुधारना होगा।
Q5: Does removing a UNIQUE constraint also remove its index?
हाँ। जब आप एक UNIQUE प्रतिबंध को हटाते हैं, तो संबंधित इंडेक्स भी हट जाता है।

6. Summary
MySQL का UNIQUE प्रतिबंध डेटा की अद्वितीयता सुनिश्चित करने के लिए एक अत्यंत उपयोगी सुविधा है। PRIMARY KEY से इसके अंतर और NULL मानों को कैसे संभाला जाता है, इसे समझकर आप अपने डेटाबेस डिज़ाइन की गुणवत्ता को काफी सुधार सकते हैं।
UNIQUE प्रतिबंध का उचित उपयोग डेटाबेस की अखंडता बनाए रखने के लिए विशेष रूप से महत्वपूर्ण है। इस लेख में समझाए गए तरीकों और विचारों का उपयोग करके अपने डेटाबेस डिज़ाइन और कार्यान्वयन को बेहतर बनाएं।
अगले लेख में, हम MySQL में इंडेक्स को प्रभावी ढंग से उपयोग करने और FOREIGN KEY तथा CHECK जैसे अन्य प्रतिबंधों पर चर्चा करेंगे। जुड़े रहें!


