उदाहरण के साथ MySQL AUTO_INCREMENT

Anonim

ऑटो वेतन वृद्धि क्या है?

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`));

"AUTO_INCREMENT" को category_id फ़ील्ड पर ध्यान दें। इसके कारण श्रेणी आईडी स्वचालित रूप से हर बार तालिका में एक नई पंक्ति सम्मिलित होने पर उत्पन्न होती है। तालिका में डेटा सम्मिलित करते समय इसकी आपूर्ति नहीं की जाती है, MySQL इसे उत्पन्न करता है।

डिफ़ॉल्ट रूप से, AUTO_INCREMENT का शुरुआती मूल्य 1 है, और यह प्रत्येक नए रिकॉर्ड के लिए 1 से वृद्धि करेगा

श्रेणियों तालिका की वर्तमान सामग्री की जांच करते हैं।

SELECT * FROM `categories`;

MySQL कार्यक्षेत्र में उपरोक्त स्क्रिप्ट को Myflixdb के खिलाफ निष्पादित करने से हमें निम्नलिखित परिणाम मिलते हैं।

 
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');

MySQL कार्यक्षेत्र में myflixdb के खिलाफ उपरोक्त स्क्रिप्ट को निष्पादित करना हमें नीचे दिखाए गए निम्न परिणाम देता है।

 
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 का उपयोग करें