Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में AUTO_INCREMENT को कैसे पढ़ें और रीसेट करें

यह ट्यूटोरियल InnoDB टेबल का उपयोग करके MySQL में AUTO_INCREMENT को रीसेट करने के लिए क्वेरी प्रदान करता है। यह दिखाता है कि एक InnoDB तालिका की AUTO_INCREMENT विशेषता को कैसे अपडेट किया जाए।

सावधानियां

बड़े डेटा वाले टेबल पर ALTER कमांड का प्रयोग न करें। टेबल का आकार बड़ा होने की स्थिति में MySQL को टेबल को अपडेट करने में काफी समय लगता है।

ALTER कमांड का उपयोग केवल तभी किया जाना चाहिए जब यह वास्तव में आवश्यक हो।

AUTO_INCREMENT को अधिकतम मौजूदा मानों से कम मान के साथ असाइन नहीं किया जा सकता है।

डेटाबेस और टेबल बनाएं

इस खंड में, हम AUTO_INCREMENT विशेषता को अपडेट करने के लिए उपयोग किए जाने वाले डेटाबेस और तालिका का निर्माण करेंगे।

# Create the Database
CREATE SCHEMA `autoinc` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

# Create the Table
CREATE TABLE `autoinc`.`user` (
`id` INT NOT NULL AUTO_INCREMENT,
`firstName` VARCHAR(100) NOT NULL,
`lastName` VARCHAR(100) NULL,
`username` VARCHAR(45) NOT NULL,
PRIMARY KEY (`id`));

AUTO_INCREMENT संचालन प्रदर्शित करने के लिए, हम नीचे दिखाए गए अनुसार कुछ पंक्तियाँ सम्मिलित करेंगे।

# Insert Rows
INSERT INTO `autoinc`.`user`(`firstName`,`lastName`,`username`) values('John', 'Dave', 'johndave007');
INSERT INTO `autoinc`.`user`(`firstName`,`lastName`,`username`) values('Vijay', 'Mallik', 'mallikvijay');
INSERT INTO `autoinc`.`user`(`firstName`,`lastName`,`username`) values('Ricky', 'Walker', 'rickyhunt');
INSERT INTO `autoinc`.`user`(`firstName`,`lastName`,`username`) values('Vikas', 'Roy', 'vikasroy');

AUTO_INCREMENT उदाहरण पढ़ें

 

हम नीचे दिखाए गए अनुसार क्वेरी का उपयोग करके किसी भी तालिका के लिए वर्तमान AUTO_INCREMENT मान प्राप्त कर सकते हैं। हो सकता है कि यह मान को सही ढंग से प्रतिबिंबित न करे क्योंकि INFORMATION_SCHEMA अनुमानित मान दिखाता है जो कि वास्तविक मान नहीं हो सकता है।

# Syntax
SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '<database>' AND TABLE_NAME = '<table>';

# Example
SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'autoinc' AND TABLE_NAME = 'user';

# Result
---------------
AUTO_INCREMENT
---------------
5

अब एक मिनट प्रतीक्षा करें और नीचे दिए गए प्रश्नों को निष्पादित करें।

INSERT INTO `autoinc`.`user`(`firstName`,`lastName`,`username`) values( 'Nick', 'Jones', 'nick' );

SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'autoinc' AND TABLE_NAME = 'user';

# Result
---------------
AUTO_INCREMENT
---------------
5

यह अभी भी AUTO_INCREMENT मान को 5 के रूप में दिखाता है, लेकिन अपेक्षित मान 6 है। अनुमानित मान के साथ मेरा यही मतलब है।

हम फ़ंक्शन को LAST_INSERT_ID . भी कॉल कर सकते हैं AUTO_INCREMENT . प्राप्त करने के लिए मान कम एक INSERT क्वेरी निष्पादित करने के तुरंत बाद। विशेष रूप से उत्पादन में अधिकांश परिदृश्यों में LAST_INSERT_ID का उपयोग करके AUTO_INCREMENT मान प्राप्त करना सबसे अच्छा नहीं हो सकता है।

# Example
INSERT INTO `autoinc`.`user`(`firstName`,`lastName`,`username`) values('Nicolas', 'Dave', 'nicolas' );
SELECT LAST_INSERT_ID() as `id`;

# Result
---------------
id
---------------
6

उपरोक्त प्रश्नों को निष्पादित करने के बाद, अपेक्षित AUTO_INCREMENT मान 7 है, और LAST_INSERT_ID() पर कॉल करना 6 दिखाता है जो सही है, लेकिन AUTO_INCREMENT मान प्राप्त करने के लिए LAST_INSERT_ID() का उपयोग करना आदर्श नहीं हो सकता है।

AUTO_INCREMENT मान प्राप्त करने का दूसरा तरीका SHOW कमांड का उपयोग करना है जैसा कि नीचे दिखाया गया है। यह अनुमानित मूल्य भी दिखाता है जो वास्तविक मूल्य नहीं हो सकता है।

# Syntax
SHOW TABLE STATUS FROM `<database>` WHERE `name` LIKE '<table>';

# Example
SHOW TABLE STATUS FROM `autoinc` WHERE `name` LIKE 'user';

# Result
------------------------------
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
------------------------------
user InnoDB 10 Dynamic 4 4096 16384 0 0 0 5 2020-05-26 20:01:31 2020-05-26 20:04:14 NULL utf8mb4_unicode_ci NULL

Rows का मान 4 है और Auto_Increment 5 है जो वास्तविक मान नहीं है। ये अनुमानित मान हैं।

सटीक मान प्राप्त करने के लिए, हम Show CREATE . कमांड का उपयोग कर सकते हैं जैसा कि नीचे दिखाया गया है।

# Example
SHOW CREATE TABLE user;

# Result
Table Create Table
------------------------------
user CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`firstName` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`lastName` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`username` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

यह AUTO_INCREMENT विशेषता का सटीक मान दिखाता है।

AUTO_INCREMENT अपडेट उदाहरण

AUTO_INCREMENT के मान को अपडेट करने के लिए, हम नीचे दिखाए गए अनुसार ALTER क्वेरी का उपयोग कर सकते हैं। खाली तालिका का AUTO_INCREMENT मान सेट करना आसान है क्योंकि MySQL को ALTER कमांड को निष्पादित करने के लिए मौजूदा पंक्तियों की प्रतिलिपि बनाने की आवश्यकता नहीं है। साथ ही, हम या तो AUTO_INCREMENT को 1 पर रीसेट कर सकते हैं या अनुक्रम शुरू करने के लिए इसे किसी भी पसंदीदा मान पर सेट कर सकते हैं।

# Syntax
ALTER TABLE <table> AUTO_INCREMENT = <value>;

# Examples

ALTER TABLE `autoinc`.`user` AUTO_INCREMENT = 1;

ALTER TABLE user AUTO_INCREMENT = 1;

ALTER TABLE `autoinc`.`user` AUTO_INCREMENT = 100000;

सारांश

इस ट्यूटोरियल ने एक InnoDB तालिका की AUTO_INCREMENT विशेषता का मान प्राप्त करने के लिए उदाहरण के साथ प्रश्नों को प्रदान किया। इसने AUTO_INCREMENT विशेषता को अपडेट करने के उदाहरण भी दिए।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संबंधपरक डीबी में वृक्ष संरचना को स्टोर करने के ज्ञात तरीके क्या हैं?

  2. Android के लिए JDBC बनाम वेब सेवा

  3. शीर्ष 5 MySQL T-SQL डेवलपर्स के लिए युक्तियों के साथ सिंटैक्स हटाएं

  4. MySQL - मैं एक एकल INSERT कथन में कितनी पंक्तियाँ सम्मिलित कर सकता हूँ?

  5. MySQL में nth रैंक कैसे पता करें?