MySQL AUTO_INCREMENT उदाहरण सहित
ऑटो इंक्रीमेंट क्या है?
ऑटो इंक्रीमेंट एक ऐसा फ़ंक्शन है जो संख्यात्मक डेटा प्रकारों पर काम करता है। यह स्वचालित रूप से अनुक्रमिक संख्यात्मक मान उत्पन्न करता है जब भी ऑटो इंक्रीमेंट के रूप में परिभाषित फ़ील्ड के लिए तालिका में रिकॉर्ड डाला जाता है।
ऑटो इंक्रीमेंट का उपयोग कब करें?
डेटाबेस सामान्यीकरण के पाठ में, हमने देखा कि प्राथमिक और विदेशी कुंजियों का उपयोग करके एक दूसरे से संबंधित कई छोटी तालिकाओं में डेटा संग्रहीत करके, डेटा को न्यूनतम अतिरेक के साथ कैसे संग्रहीत किया जा सकता है।
प्राथमिक कुंजी अद्वितीय होनी चाहिए क्योंकि यह डेटाबेस में पंक्ति को विशिष्ट रूप से पहचानती है। लेकिन, हम यह कैसे सुनिश्चित कर सकते हैं कि प्राथमिक कुंजी हमेशा अद्वितीय हो? संभावित समाधानों में से एक प्राथमिक कुंजी उत्पन्न करने के लिए एक सूत्र का उपयोग करना होगा, जो डेटा जोड़ने से पहले तालिका में कुंजी के अस्तित्व की जांच करता है। यह अच्छी तरह से काम कर सकता है लेकिन जैसा कि आप देख सकते हैं कि दृष्टिकोण जटिल है और मूर्खतापूर्ण नहीं है। ऐसी जटिलता से बचने के लिए और यह सुनिश्चित करने के लिए कि प्राथमिक कुंजी हमेशा अद्वितीय हो, हम इसका उपयोग कर सकते हैं MySQLप्राथमिक कुंजी उत्पन्न करने के लिए ऑटो इंक्रीमेंट सुविधा। ऑटो इंक्रीमेंट का उपयोग INT डेटा प्रकार के साथ किया जाता है। INT डेटा प्रकार हस्ताक्षरित और अहस्ताक्षरित दोनों मानों का समर्थन करता है। अहस्ताक्षरित डेटा प्रकारों में केवल सकारात्मक संख्याएँ हो सकती हैं। सर्वोत्तम अभ्यास के रूप में, ऑटो इंक्रीमेंट प्राथमिक कुंजी पर अहस्ताक्षरित बाधा को परिभाषित करने की अनुशंसा की जाती है।
स्वचालित वृद्धि सिंटैक्स
आइए अब मूवी श्रेणियों की तालिका बनाने के लिए प्रयुक्त स्क्रिप्ट पर नजर डालें।
CREATE TABLE `categories` ( `category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category_id`) );
Category_id फ़ील्ड पर “AUTO_INCREMENT” पर ध्यान दें। इससे हर बार जब तालिका में कोई नई पंक्ति डाली जाती है, तो श्रेणी आईडी स्वचालित रूप से उत्पन्न हो जाती है। तालिका में डेटा डालते समय इसे प्रदान नहीं किया जाता है, MySQL इसे उत्पन्न करता है.
डिफ़ॉल्ट रूप से, AUTO_INCREMENT का प्रारंभिक मान 1 है, और यह प्रत्येक नए रिकॉर्ड के लिए 1 से बढ़ेगा
आइए श्रेणियाँ तालिका की वर्तमान सामग्री की जाँच करें।
SELECT * FROM `categories`;
उपरोक्त स्क्रिप्ट को निष्पादित करना MySQL वर्कबेंच को मायफ्लिक्सडीबी के विरुद्ध चलाने से हमें निम्नलिखित परिणाम प्राप्त होते हैं।
category_id | category_name | remarks |
---|---|---|
1 | Comedy | Movies with humour |
2 | Romantic | Love stories |
3 | Epic | Story acient movies |
4 | Horror | NULL |
5 | Science Fiction | NULL |
6 | Thriller | NULL |
7 | Action | NULL |
8 | Romantic Comedy | NULL |
आइए अब श्रेणियों तालिका में एक नई श्रेणी डालें।
INSERT INTO `categories` (`category_name`) VALUES ('Cartoons');
myflixdb के विरुद्ध उपरोक्त स्क्रिप्ट निष्पादित करना MySQL कार्यक्षेत्र हमें नीचे दिखाए गए निम्नलिखित परिणाम मिलते हैं।
category_id | category_name | remarks |
---|---|---|
1 | Comedy | Movies with humour |
2 | Romantic | Love stories |
3 | Epic | Story acient movies |
4 | Horror | NULL |
5 | Science Fiction | NULL |
6 | Thriller | NULL |
7 | Action | NULL |
8 | Romantic Comedy | NULL |
9 | Cartoons | NULL |
कृपया ध्यान दें कि हमने श्रेणी आईडी नहीं दी है। MySQL स्वचालित रूप से हमारे लिए इसे उत्पन्न किया क्योंकि श्रेणी आईडी को ऑटो वृद्धि के रूप में परिभाषित किया गया है।
यदि आप अंतिम इन्सर्ट आईडी प्राप्त करना चाहते हैं जो इसके द्वारा उत्पन्न की गई थी MySQL, आप ऐसा करने के लिए LAST_INSERT_ID फ़ंक्शन का उपयोग कर सकते हैं। नीचे दिखाई गई स्क्रिप्ट अंतिम आईडी प्राप्त करती है जो उत्पन्न की गई थी।
SELECT LAST_INSERT_ID();
उपरोक्त स्क्रिप्ट को निष्पादित करने से INSERT क्वेरी द्वारा उत्पन्न अंतिम ऑटो इंक्रीमेंट संख्या प्राप्त होती है। परिणाम नीचे दिखाए गए हैं।
सारांश
- जब किसी कॉलम पर संख्यात्मक डेटा प्रकार के साथ ऑटो इंक्रीमेंट विशेषता निर्दिष्ट की जाती है, तो जब भी डेटाबेस में कोई नई पंक्ति जोड़ी जाती है, तो यह क्रमिक रूप से संख्याएं उत्पन्न करती है।
- ऑटो इंक्रीमेंट का उपयोग आमतौर पर प्राथमिक कुंजी उत्पन्न करने के लिए किया जाता है।
- ऑटो इंक्रीमेंट पर परिभाषित डेटा प्रकार कई रिकॉर्ड को समायोजित करने के लिए पर्याप्त बड़ा होना चाहिए। ऑटो इंक्रीमेंट फ़ील्ड के लिए डेटा प्रकार के रूप में TINYINT को परिभाषित करने से तालिका में जोड़े जा सकने वाले रिकॉर्ड की संख्या केवल 255 तक सीमित हो जाती है क्योंकि इससे अधिक कोई भी मान TINYINT डेटा प्रकार द्वारा स्वीकार नहीं किया जाएगा।
- ऋणात्मक संख्याओं से बचने के लिए स्वचालित वृद्धि प्राथमिक कुंजियों पर अहस्ताक्षरित प्रतिबंध निर्दिष्ट करना एक अच्छा अभ्यास माना जाता है।
- जब किसी तालिका से कोई पंक्ति हटा दी जाती है, तो उसकी स्वचालित रूप से बढ़ी हुई आईडी का पुनः उपयोग नहीं किया जाता। MySQL क्रमिक रूप से नई संख्याएँ उत्पन्न करना जारी रखता है।
- डिफ़ॉल्ट रूप से, AUTO_INCREMENT का प्रारंभिक मान 1 है, और यह प्रत्येक नए रिकॉर्ड के लिए 1 से बढ़ेगा
- AUTO_INCREMENT अनुक्रम को किसी अन्य मान से आरंभ करने के लिए, AUTO_INCREMENT = 10 का उपयोग करें