MySQL में, SERIAL और AUTO_INCREMENT दोनों का उपयोग किसी फील्ड के लिए डिफ़ॉल्ट मान के रूप में अनुक्रम को परिभाषित करने के लिए किया जाता है। लेकिन वे तकनीकी रूप से एक-दूसरे से भिन्न हैं।
AUTO_INCREMENT विशेषता BIT और DECIMAL को छोड़कर सभी संख्यात्मक डेटा प्रकारों द्वारा समर्थित है। प्रति टेबल केवल एक AUTO_INCREMENT फील्ड हो सकता है और एक टेबल में AUTO_INCREMENT फील्ड द्वारा उत्पन्न अनुक्रम का उपयोग किसी अन्य टेबल में नहीं किया जा सकता है।
इस विशेषता के लिए फील्ड पर एक UNIQUE इंडेक्स होना आवश्यक है ताकि यह सुनिश्चित हो सके कि अनुक्रम में कोई डुप्लिकेट नहीं है। अनुक्रम डिफ़ॉल्ट रूप से 1 से शुरू होगा और प्रत्येक इन्सर्ट के लिए 1 से बढ़ेगा।
उदाहरण
mysql> Create Table Student(Student_id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, Name Varchar(20)); Query OK, 0 rows affected (0.18 sec)
उपरोक्त क्वेरी Student_id को AUTO_INCREMENT घोषित करती है।
mysql> Insert Into Student(Name) values('RAM'),('SHYAM');
Query OK, 2 rows affected (0.06 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> Select * from Student;
+------------+-------+
| Student_id | Name |
+------------+-------+
| 1 | RAM |
| 2 | SHYAM |
+------------+-------+
2 rows in set (0.00 sec)
mysql> Show Create Table Student\G
*************************** 1. row ***************************
Table: Student
Create Table: CREATE TABLE `student` (
`Student_id` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`Student_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
दूसरी ओर, SERIAL DEFAULT VALUE, NOT NULL AUTO_INCREMENT UNIQUE KEY का संक्षिप्त रूप है। TINYINT, SMALLINT, MEDIUMINT, INT, और BIGINT जैसे पूर्णांक संख्यात्मक प्रकार SERIAL DEFAULT VALUE कीवर्ड का समर्थन करते हैं।
उदाहरण
mysql> Create Table Student_serial(Student_id SERIAL, Name Varchar(20));
Query OK, 0 rows affected (0.17 sec)
mysql> Insert into Student_serial(Name) values('RAM'),('SHYAM');
Query OK, 2 rows affected (0.12 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> Select * from Student_serial;
+------------+-------+
| Student_id | Name |
+------------+-------+
| 1 | RAM |
| 2 | SHYAM |
+------------+-------+
2 rows in set (0.00 sec)
mysql> Show Create Table Student_serial\G
*************************** 1. row ***************************
Table: Student_serial
Create Table: CREATE TABLE `student_serial` (
`Student_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`Name` varchar(20) DEFAULT NULL,
UNIQUE KEY `Student_id` (`Student_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)