কম্পিউটার টিউটোরিয়াল

MySQL-এ SERIAL এবং AUTO_INCREMENT-এর পার্থক্য কী?


MySQL-এ SERIAL এবং AUTO_INCREMENT উভয়ই একটি ফিল্ডের জন্য ডিফল্ট মান হিসেবে সিকোয়েন্স সংজ্ঞায়িত করতে ব্যবহৃত হয়। কিন্তু техনিকালভাবে সেগুলো একে অপরের থেকে আলাদা।

AUTO_INCREMENT অ্যাট্রিবিউট BIT এবং DECIMAL ছাড়া সব সংখ্যাসূচক ডেটা টাইপের জন্য সমর্থিত। একটি টেবিলে শুধু একটি AUTO_INCREMENT ফিল্ড থাকতে পারে এবং একটি টেবিলের AUTO_INCREMENT ফিল্ড দ্বারা জেনারেটেড সিকোয়েন্স অন্য কোনো টেবিলে ব্যবহার করা যায় না। 

এই অ্যাট্রিবিউটের জন্য ফিল্ডে UNIQUE इंडেক্স থাকতে হয় যাতে সিকোয়েন্সে ডুপ্লিকেট না থাকে। সিকোয়েন্স ডিফল্টভাবে ১ থেকে শুরু হয় এবং প্রতিটি ইনসার্টের জন্য ১ করে বৃদ্ধি পায়।

উদাহরণ

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)

  1. MySQL-এ INT এবং INTEGER ডেটা টাইপের পার্থক্য

  2. MySQL-এ AND এবং && অপারেটরের পার্থক্য কি? (স্ট্যান্ডার্ড vs মালিকানা সিনট্যাক্স)

  3. MySQL-এ TINYINT(1) এবং Boolean-এর পার্থক্য

  4. MySQL-এ != NULL এবং IS NOT NULL-এর পার্থক্য