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

SQL Server-এ SEQUENCE (ক্রম/অনुक্রম)

Sequence (ক্রম) হলো ক্রমানুসারে সাজানো পূর্ণসংখ্যাগুলোর একটি সেট। সিকোয়েন্সগুলো ডেটাবেসে সচরাচর ব্যবহৃত হয় কারণ অনেক অ্যাপ্লিকেশনের আবশ্যকতা হয় টেবিলের প্রতিটি সারি একটি অনন্য মান ধারণ করুক, যা প্রাইমারি কির মতো কাজ করে।

এই নিবন্ধে SQL Server-এ সিকোয়েন্স তৈরি এবং ডিলিট করার সিনট্যাক্স এবং উদাহরণ দেওয়া হয়েছে।

CREATE SEQUENCE (সিকোয়েন্স তৈরি)

সিনট্যাক্স

সিকোয়েন্স তৈরি করার জন্য নিচের সিনট্যাক্স ব্যবহার করুন:

CREATE SEQUENCE [schema.] sequence_name
[AS datatype]
[START WITH value]
[INCREMENT BY value]
[MINVALUE value | NO MINVALUE]
[MAXVALUE value | NO MAXVALUE]
[CYCLE | NO CYCLE]
[CACHE value | NO CACHE];

প্যারামিটার:

  1. AS datatype: BIGINT, INT, TINYINT, SMALLINT, DECIMAL, বা NUMERIC টাইপ হতে পারে। নির্দিষ্ট না করলে ডিফল্ট BIGINT হয়।
  2. START WITH value: সিকোয়েন্স যেটি ফেরত দেবে সেই শুরু মান।
  3. INCREMENT BY value: সিকোয়েন্স বৃদ্ধি/হ্রাসের নিয়ম, ধনাত্মক বা ঋণাত্মক হতে পারে। ধনাত্মক হলে ক্রমবর্ধমান, ঋণাত্মক হলে ক্রমহ্রাসমান।
  4. MINVALUE value: সিকোয়েন্সে সর্বনিম্ন মান।
  5. NO MINVALUE: সর্বনিম্ন মান নির্দিষ্ট না করা।
  6. MAXVALUE value: সিকোয়েন্সে সর্বোচ্চ মান।
  7. NO MAXVALUE: সর্বোচ্চ মান নির্দিষ্ট না করা।
  8. CYCLE: সিকোয়েন্স শেষ হলে আবার শুরু থেকে শুরু হবে।
  9. NO CYCLE: সিকোয়েন্স শেষ হলে ফেইল করবে, পুনরায় শুরু হবena।
  10. CACHE value: ক্যাশে (cache) সেভ করবে ডিস্ক I/O কমাতে।
  11. NO CACHE: ক্যাশে সেভ করবে না।

উদাহরণ

CREATE SEQUENCE contacts_seq
AS BIGINT
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 99999
NO CYCLE
CACHE 10;

এখানে contacts_seq নামে একটি সিকোয়েন্স তৈরি করা হয়েছে, ১ থেকে শুরু, প্রতিটি পরবর্তী মান এক একক বৃদ্ধি পাবে (২, ৩, ৪...)। সিকোয়েন্স প্রায় ১০টি মান ক্যাশে-এ রাখবে। সর্বোচ্চ মান ৯৯৯৯৯ এবং সিকোয়েন্স শেষ হলে পুনরায় শুরু হবena।

আপনি উপরের কমান্ডকে সরলভাবে ও লিখতে পারেন:

CREATE SEQUENCE contacts_seq
START WITH 1
INCREMENT BY 1;

এখন আপনি একটি অটোনাম্বার ফিল্ডের মতো সিকোয়েন্স তৈরি করেছেন। এরপর, এই সিকোয়েন্স থেকে মান বের করতে NEXT VALUE FOR কমান্ড ব্যবহার করুন:

SELECT NEXT VALUE FOR contacts_seq;

এই স্টেটমেন্ট contacts_seq-এর পরবর্তী মান বের করবে। তারপর আপনার প্রয়োজনীয় কমান্ডগুলো ব্যবহার করুন। উদাহরণ:

INSERT INTO contacts
(contact_id, last_name)
VALUES
(NEXT VALUE FOR contacts_seq, 'Smith');

এই INSERT স্টেটমেন্ট contacts টেবিলে একটি নতুন রেকর্ড ইনসার্ট করবে। contact_id ফিল্ডে contacts_seq-এর পরবর্তী নম্বর অ্যাসাইন হবে, last_name ফিল্ডে 'Smith' হবে।

DROP SEQUENCE (সিকোয়েন্স ডিলিট)

একবার সিকোয়েন্স তৈরি হলে, ডেটাবেস থেকে সিকোয়েন্স মুছে ফেলার প্রয়োজনও পড়তে পারে।

সিনট্যাক্স

সিকোয়েন্স ডিলিট করার জন্য নিচের সিনট্যাক্স ব্যবহার করুন:

DROP SEQUENCE sequence_name;

প্যারামিটার:

sequence_name: ডিলিট করতে চাওয়া সিকোয়েন্সের নাম।

উদাহরণ

DROP SEQUENCE contacts_seq;

এই কমান্ড এক্সিকিউট করলে আপনি ডেটাবেস থেকে contacts_seq সিকোয়েন্স মুছে ফেলেছেন।

সিকোয়েন্স প্রপার্টি (Sequence Properties)

সিকোয়েন্সের প্রপার্টি চেক করার জন্য নিচের সিনট্যাক্স ব্যবহার করুন:

SELECT * FROM sys.sequences WHERE name = 'sequence_name';

প্যারামিটার:

sequence_name: প্রপার্টি চেক করতে চাওয়া সিকোয়েন্সের নাম।

উদাহরণ

SELECT *
FROM sys.sequences
WHERE name = 'contacts_seq';

এই উদাহরণে sys.sequences সিস্টেম থেকে কোয়েরি করে contacts_seq সিকোয়েন্সের ফলাফল বের করা হয়েছে।

Sys.sequences সিস্টেম নিচের কলামগুলো ধারণ করে:

কলাম বিবরণ
name CREATE SEQUENCE স্টেটমেন্টে তৈরি সিকোয়েন্সের নাম
object_id অবজেক্টের আইডি
principal_id সিকোয়েন্সের প্রিন্সিপাল আইডি (সাংখ্যিক মান)
schema_id সিকোয়েন্সের স্কিমা আইডি
parent_object_id প্যারেন্ট অবজেক্টের আইডি
type SO
type_desc SEQUENCE_OBJECT
create_date CREATE SEQUENCE কমান্ড দিয়ে সিকোয়েন্স তৈরি করার ডেট/টাইম
modify_date সিকোয়েন্স শেষ মডিফিকেশন ডেট/টাইম
is_ms_shipped মান ০ বা ১
is_published মান ০ বা ১
is_schema_published মান ০ বা ১
start_value সিকোয়েন্সের শুরু মান
increment সিকোয়েন্স বৃদ্ধি/হ্রাসের নিয়ম মান
minimum_value সিকোয়েন্সে সর্বনিম্ন মান
maximum_value সিকোয়েন্সে সর্বোচ্চ মান
is_cycling মান ০ বা ১। ০ = NO CYCLE, ১ = CYCLE
is_cached মান ০ বা ১। ০ = NO CACHE, ১ = CACHE
cache_size is_cached = 1 হলে মেমরি বাফার সাইজ
system_type_id সিকোয়েন্সের সিস্টেম টাইপ আইডি
user_type_id সিকোয়েন্সের ইউজার টাইপ আইডি
precision সিকোয়েন্সের ডেটা টাইপের সর্বোচ্চ প্রিসিশন
scale সিকোয়েন্সের স্কেল
current_value সিকোয়েন্স থেকে শেষ বের করা মান
is_exhausted মান ০ বা ১। ০ = সিকোয়েন্সে মান বাকি। ১ = কোনো মান নেই
  1. SQL Server-এ IN কন্ডিশন

  2. SQL Server-এ IS NULL কন্ডিশন

  3. SQL Server-এ IS NOT NULL কন্ডিশন

  4. MS SQL Server কী?