SQL AUTO INCREMENT এট্রিবিউট
যখন কোনো টেবিলের মধ্যে নতুন তথ্য যোগ করা হবে তখন Auto-increment
এট্রিবিউটটি একটি নির্দিষ্ট কলামের জন্য একটি ইউনিক নম্বর তৈরি করবে।
SQL ফিল্ড AUTO INCREMENT
Auto-increment
এট্রিবিউটটি ডেটাবেজ টেবিলের প্রত্যেক নতুন সারির জন্য একটি ইউনিক আইডেন্টিটি জেনারেট করে। ডেটাবেজ টেবিলে তথ্য ইনপুট করার সময় আপনি এমনটা চাইতেই পারেন যে, প্রত্যেক সারি ইনপুটের জন্য একটি ইউনিক নম্বর তৈরি হোক।
এক্ষেত্রে আপনি একটি auto-increment
ফিল্ড(column) তৈরি করতে পারেন। আপনার নতুন তথ্য ইনপুট করার সাথে সাথে প্রত্যেক সারি ইনপুটের জন্য এটি স্বয়ংক্রিয়ভাবে একটি ইউনিক নম্বর জেনারেট করবে।
প্রতি ফিল্ডের ক্ষেত্রে এটি স্বয়ংক্রিয়ভাবে বৃদ্ধি পাবে। আর আমরা বেশীরভাগ সময়েই চাই টেবিলে নতুন তথ্য যোগ হওয়ার সাথে সাথে primary key
এর মান স্বয়ংক্রিয়ভাবে তৈরি হয়ে যাক।। টেবিলের মধ্যে auto-increment
ফিল্ড তৈরি করার মাধ্যমে আমরা এটি করতে পারি।
MySQL সিনট্যাক্স
নিম্নের SQL স্টেটমেন্টটি "Student_details" টেবিলের "Id" কলামকে primary key
ফিল্ডে রূপান্তর করবে এবং এটি auto-increment
হবেঃ
CREATE TABLE Student_details(
Id int NOT NUll AUTO_INCREMENT,
Roll_number varchar(255),
Student_name varchar(255),
Institute varchar(255),
Address varchar(255),
PRIMARY KEY (Id)
);
MySQL এ কোনো ফিল্ডের মান স্বয়ংক্রিয়ভাবে বৃদ্ধি করার জন্য AUTO_INCREMENT
কিওয়ার্ডটি ব্যবহার করা হয়। ডিফল্টভাবে AUTO_INCREMENT
এর মান ১ থেকে শুরু হয় এবং প্রতিটি নতুন রেকর্ডের জন্য ১ করে বৃদ্ধি পায়।
যদি AUTO_INCREMENT
এর মান অন্য কোনো মান দ্বারা শুরু করতে চান তাহলে নিম্নের SQL স্টেটমেন্টটি ব্যবহার করতে হবেঃ
ALTER TABLE Student_details AUTO_INCREMENT=100;
যখন আমরা "Student_details" টেবিলে তথ্য ইনপুট করবো তখন "Id" কলামের জন্য কোনো তথ্য ইনপুট করবো না, কারন এর জন্য একটি ইউনিক মান স্বয়ংক্রিয়ভাবে যুক্ত হয়ে যাবেঃ
INSERT INTO Student_details (Roll_number,Student_name)
VALUES ('১৩১','শাহরিয়ার হাসান');
উপরের SQL স্টেটমেন্টটি "Student_details" টেবিলে একটি নতুন তথ্য ইনপুট করবে।
"Id" কলামে স্বয়ংক্রিয়ভাবেই একটি ইউনিক মান যুক্ত হয়ে যাবে। "রোল নাম্বার(Roll_number)" কলামে "১৩১" এবং "শিক্ষার্থীর নাম(Student_name)" কলামে "শাহরিয়ার হাসান" মান যুক্ত করবে।
SQL Server এর সিনট্যাক্স
নিম্নের SQL স্টেটমেন্টটি "Student_details" টেবিলের "Id" কলামকে primary key
ফিল্ডে রূপান্তর করবে এবং এটি auto-increment
হবেঃ
CREATE TABLE Student_details(
Id int IDENTITY(1,1) PRIMARY KEY,
Roll_number varchar(255),
Student_name varchar(255),
Institute varchar(255),
Address varchar(255)
);
MS SQL Server-এ কোনো ফিল্ডের মান স্বয়ংক্রিয়ভাবে বৃদ্ধি করার জন্য IDENTITY
কিওয়ার্ডটি ব্যবহার করা হয়। ডিফল্টভাবে IDENTITY
এর মান ১ থেকে শুরু হয় এবং প্রতিটি নতুন রেকর্ডের জন্য ১ করে বৃদ্ধি পায়।
বিঃদ্রঃ আপনি "Id" কলামের শুরুর মান এবং বৃদ্ধি হওয়ার মান নির্দিষ্ট করে দেওয়ার জন্য নিম্নের সিনট্যাক্সটি ব্যবহার করতে পারেনঃ
IDENTITY(শুরুর মান, বৃদ্ধির মান)
আমরা যখন "Student_details" টেবিলে তথ্য ইনপুট করবো তখন "Id" কলামের জন্য কোনো তথ্য ইনপুট করবো না, কারন এর জন্য টেবিলে একটি ইউনিক মান স্বয়ংক্রিয়ভাবে যুক্ত হয়ে যাবেঃ
INSERT INTO Student_details (Roll_number,Student_name)
VALUES ('১৩১','শাহরিয়ার হাসান');
উপরের SQL স্টেটমেন্টটি "Student_details" টেবিলে একটি নতুন তথ্য ইনপুট করবে। "Id" কলামে একটি মান স্বয়ংক্রিয়ভাবে যুক্ত হয়ে যাবে। আর "রোল নাম্বার(Roll_number)" কলামে "১৩১" এবং "শিক্ষার্থীর নাম(Student_name)" কলামে "শাহরিয়ার হাসান" মান যুক্ত করবে।
MS Access এর সিনট্যাক্স
নিম্নের SQL স্টেটমেন্টটি "Student_details" টেবিলের "Id" কলামকে primary key
ফিল্ডে রূপান্তর করবে এবং এটি auto-increment
হবেঃ
CREATE TABLE Student_details(
Id Integer PRIMARY KEY AUTOINCREMENT,
Roll_number varchar(255),
Student_name varchar(255),
Institute varchar(255),
Address varchar(255)
);
MS Access -এ কোনো ফিল্ডের মান স্বয়ংক্রিয়ভাবে বৃদ্ধি করার জন্য AUTOINCREMENT
কিওয়ার্ডটি ব্যবহার করা হয়। ডিফল্টভাবে AUTOINCREMENT
এর মান ১ থেকে শুরু হয় এবং প্রতিটি নতুন রেকর্ডের জন্য ১ করে বৃদ্ধি পায়।
বিঃদ্রঃ আপনি "Id" কলামের শুরুর মান এবং বৃদ্ধি হওয়ার মান নির্দিষ্ট করে দেওয়ার জন্য নিম্নের সিন্ট্যাক্সটি ব্যবহার করতে পারেনঃ
IDENTITY(শুরুর মান, বৃদ্ধির মান)
আমরা যখন "Student_details" টেবিলে তথ্য ইনপুট করবো তখন "Id" কলামের জন্য কোনো তথ্য ইনপুট করবো না, কারন এর জন্য টেবিলে একটি ইউনিক মান স্বয়ংক্রিয়ভাবে যুক্ত হয়ে যাবেঃ
INSERT INTO Student_details (Roll_number,Student_name)
VALUES ('১৩১','শাহরিয়ার হাসান');
উপরের SQL স্টেটমেন্টটি "Student_details" টেবিলে একটি নতুন তথ্য ইনপুট করবে। "Id" কলামে স্বয়ংক্রিয়ভাবেই একটি ইউনিক মান যুক্ত হয়ে যাবে। "রোল নাম্বার(Roll_number)" কলামে "১৩১" এবং "শিক্ষার্থীর নাম(Student_name)" কলামে "শাহরিয়ার হাসান" মান যুক্ত করবে।
Oracle এর সিনট্যাক্স
উপরের কোড থেকে ওরাকলের কোড একটু ভিন্ন। সিকুয়েন্স অবজেক্টের মাধ্যমে আপনি একটি auto-increment
ফিল্ড তৈরি করতে পারেন। এই অবজেক্টটি নম্বরের একটি সিকুয়েন্স অবজেক্ট তৈরি করে।
নিম্নে CREATE SEQUENCE
এর সিনট্যাক্স দেওয়া হলঃ
CREATE SEQUENCE Student_id
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
উপরের কোডটি "Student_id" নামে একটি সিকুয়েন্স অবজেক্ট তৈরি করবে। যাহা ১ থেকে শুরু হবে এবং এক এক করে বৃদ্ধি পাবে। এছাড়া এটি পারফরম্যান্সের জন্য ১০ টি পর্যন্ত মান ক্যাশ(cache) করে রাখবে। মেমরি দ্রুত অ্যাক্সেস করার জন্য ক্যাশ অপসনটি মেমোরিতে জমাকৃত মান নির্ধারন করে। ।
এখন আমরা "Student_details" টেবিলে নতুন তথ্য ইনপুট করবো। এক্ষেত্রে আমরা nextval
ফাংশনটি ব্যবহার করবো। এই ফাংশনটি "Student_id" সিকুয়েন্স থেকে পরবর্তী মান ধারন করবেঃ
INSERT INTO Student_details (Id, Roll_number,Student_name)
VALUES (Student_id.nextval, '১৩১','শাহরিয়ার হাসান');
উপরের SQL স্টেটমেন্টটি "Student_details" টেবিলে একটি নতুন তথ্য ইনপুট করবে। Student_id সিকুয়েন্স থেকে "Id" কলামে স্বয়ংক্রিয়ভাবেই ইউনিক মান যুক্ত হয়ে যাবে। "রোল নাম্বার(Roll_number)" কলামে "১৩১" এবং "শিক্ষার্থীর নাম(Student_name)" কলামে "শাহরিয়ার হাসান" মান যুক্ত করবে।