Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> MySql

MySQL में टेबल के मूल्य को कम करने के लिए ऑटो-इन्क्रीमेंट कैसे करें?

<घंटा/>

यदि आप InnoDB इंजन का उपयोग कर रहे हैं, तो आप तालिकाओं के auto_increment मान को कम मान पर सेट नहीं कर सकते। आपको अपने इंजन को InnoDB से MyISAM में बदलना होगा।

नोट: MyISAM इंजन आपको कम मान सेट करने की अनुमति देता है। यहाँ, हम उसी का उपयोग कर रहे हैं।

आधिकारिक दस्तावेजों के अनुसार:

You cannot reset the counter to a value less than or equal to any that have
already been used. For MyISAM, if the value is less than or equal to the
maximum value currently in the AUTO_INCREMENT column, the value is reset
to the current maximum plus one. For InnoDB, if the value is less than the
current maximum value in the column, no error occurs and the current sequence
value is not changed.

जैसा कि ऊपर दिखाया गया है, MyISAM में, मान लें कि कुछ आईडी हटा दी गई हैं। उसके बाद, अगर आप फिर से auto_increment जोड़ेंगे, तो आईडी कम मान से शुरू होंगी यानी अंतिम आईडी से शुरू होकर (कुछ आईडी हटाने के बाद)।

आइए सबसे पहले MyISAM इंजन के साथ एक टेबल बनाएं:

mysql> create table DemoTable (Id int NOT NULL AUTO_INCREMENT PRIMARY KEY)ENGINE='MyISAM';
Query OK, 0 rows affected (0.23 sec)

इंसर्ट कमांड का उपयोग करके टेबल में रिकॉर्ड्स डालने के लिए क्वेरी निम्नलिखित है:

mysql> insert into DemoTable values();
Query OK, 1 row affected (0.04 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.03 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.03 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.02 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.05 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.08 sec)

चयन कमांड का उपयोग करके तालिका से रिकॉर्ड प्रदर्शित करने के लिए क्वेरी निम्नलिखित है:

mysql> select *from DemoTable;

यह निम्नलिखित आउटपुट उत्पन्न करेगा

+----+
| Id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
+----+
6 rows in set (0.00 sec)

अब, आईडी 4,5 और 6 हटाएं:

mysql> delete from DemoTable where Id=4 or Id=5 or Id=6;
Query OK, 3 rows affected (0.06 sec)

आइए एक बार फिर से सभी रिकॉर्ड प्रदर्शित करें। निम्नलिखित प्रश्न है:

mysql> select *from DemoTable;

यह कुछ आईडी हटाने के बाद निम्न आउटपुट देगा:

+----+
| Id |
+----+
|  1 |
|  2 |
|  3 |
+----+
3 rows in set (0.00 sec)

अब, हम नई auto_increment id सेट करते हैं।

MyISAM इंजन में auto_increment मान को कम करने के लिए निम्न क्वेरी है। हालाँकि, वर्तमान auto_increment मान अब 7 से शुरू होना चाहिए, लेकिन चूंकि हम MyISAM इंजन का उपयोग कर रहे हैं, इसलिए मान को वर्तमान अधिकतम पर रीसेट कर दिया गया है, जो कि 3 प्लस वन है यानी 3+ 1 =4 नई आईडी होगी।

निम्नलिखित प्रश्न है:

mysql> alter table DemoTable auto_increment=4;
Query OK, 3 rows affected (0.38 sec)
Records: 3 Duplicates: 0 Warnings: 0

अब एक बार फिर से कुछ रिकॉर्ड डालें और फिर 4 से शुरू होने वाले auto_increment मान की जांच करने के लिए तालिका से सभी रिकॉर्ड प्रदर्शित करें:

mysql> insert into DemoTable values();
Query OK, 1 row affected (0.03 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.06 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.02 sec)

तालिका से सभी रिकॉर्ड प्रदर्शित करने के लिए क्वेरी निम्नलिखित है:

mysql> select *from DemoTable;

यह निम्नलिखित आउटपुट का उत्पादन करेगा। नई आईडी 4 से शुरू होती हैं:

+----+
| Id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
+----+
6 rows in set (0.00 sec)

  1. यदि कोई क्वेरी MySQL में शून्य मान देता है तो मैं 0 कैसे सेट कर सकता हूं?

    इसके लिए आप IFNULL() का इस्तेमाल कर सकते हैं। आइए पहले एक टेबल बनाएं - );क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.71 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - डेमोटेबल (मान) मानों में डालें (शून्य);क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.10 सेकंड) चयन कथन का उपयोग करके तालिका से सभी

  1. कैसे दो MySQL टेबल्स के बीच लापता मूल्य खोजने के लिए?

    दो MySQL तालिकाओं के बीच लापता मान खोजने के लिए, NOT IN का उपयोग करें। आइए पहले एक टेबल बनाएं - टेबल बनाएं DemoTable1(Value int);क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.56 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - DemoTable1 मानों में डालें (8); क्वेरी ठीक है, 1 पंक्ति प्रभावित ह

  1. मैं अपने ऑटो-इन्क्रीमेंट वैल्यू को MySQL में 1 से शुरू करने के लिए कैसे सेट कर सकता हूं?

    आप MySQL में 1 से शुरू करने के लिए auto_increment मान सेट करने के लिए तालिका को छोटा कर सकते हैं। आइए पहले एक टेबल बनाएं - टेबल बनाएं DemoTable(StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY);क्वेरी ओके, 0 पंक्तियाँ प्रभावित (1.44 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें -