PRIMARY KEY
PRIMARY KEY কনস্ট্রেইন্ট(Constraint) ডেটাবেজ টেবিলের প্রতিটি রেকর্ডকে ইউনিকভাবেে শনাক্ত করে। Primary key এর ভ্যালু-সমূহ অবশ্যই ইউনিক হতে হবে।
primary key বিশিষ্ট কলামে NULL ভ্যালু থাকতে পারবে না। অশিকাংশ টেবিলেই primary key থাকা উচিৎ এবং প্রত্যেক টেবিলে শুধুমাত্র একটি primary key থাকতে পারবে।
টেবিল তৈরির সময় SQL PRIMARY KEY কনস্ট্রেইন্ট এর ব্যবহার।
নিম্নের SQL স্টেটমেন্টটি "Student_details" টেবিল তৈরির সময় "Id" কলামে PRIMARY KEY কনস্ট্রেইন্ট সেট করবেঃ
MySQL এর জন্যঃ
CREATE TABLE Student_details(
Id int NOT NUll,
Roll_number varchar(255),
Student_name varchar(255),
Institute varchar(255),
Address varchar(255),
PRIMARY KEY (Id)
);Oracle/SQL Server/MS Access এর জন্যঃ
CREATE TABLE Student_details(
Id int NOT NUll PRIMARY KEY,
Roll_number varchar(255),
Student_name varchar(255),
Institute varchar(255),
Address varchar(255)
);একটি PRIMARY KEY কনস্ট্রেইন্ট এর নাম দেওয়ার জন্য এবং একাধিক কলামে PRIMARY KEY কনস্ট্রেইন্ট ডিফাইন করার জন্য নিম্নের SQL সিনট্যাক্সটি ব্যবহার করা হয়ঃ
MySQL/Oracle/SQL Server/MS Access এর জন্যঃ
CREATE TABLE Student_details(
Id int NOT NUll PRIMARY KEY,
Roll_number varchar(255),
Student_name varchar(255),
Institute varchar(255),
Address varchar(255),
CONSTRAINT Student_Id PRIMARY KEY (Id,Roll_number)
);বিঃদ্রঃ উপরের উদাহরণে শুধুমাত্র একটি PRIMARY KEY(Student_Id) রয়েছে। যদিও primary key ভ্যালুটি দুইটি কলামের(Id + Roll_number) উপর ভিত্তি করে গঠিত।
পূর্বের তৈরি টেবিলে SQL PRIMARY KEY কনস্ট্রেইন্ট এর ব্যবহার।
ডেটাবেজে পূর্ব থেকে বিদ্যমান একটি টেবিলের "Id" কলামে PRIMARY KEY সেট করতে ALTER TABLE স্টেটমেন্টটের সাথে নিম্নের ন্যায় add PRIMARY KEY কনস্ট্রেইন্ট ব্যবহার করা হয়ঃ
MySQL/Oracle/SQL Server/MS Access এর জন্যঃ
ALTER TABLE Student_details(
ADD PRIMARY KEY (Id);একটি PRIMARY KEY কনস্ট্রেইন্ট এর নাম দেওয়ার জন্য এবং একাধিক কলামে PRIMARY KEY কনস্ট্রেইন্ট ডিফাইন করার জন্য নিম্নের SQL সিনট্যক্সটি ব্যবহার করা হয়।
মাMySQL/Oracle/SQL Server/MS Access এর জন্যঃ
ALTER TABLE Student_details(
ADD CONSTRAINT Student_Id PRIMARY KEY (Id,Roll_number);বিঃদ্রঃ ALTER TABLE স্টেটমেন্ট ব্যবহার করে কোনো কলামে primary key যোগ করতে হলে টেবিল তৈরির সময়ে ঐ কলামকে অবশ্যই প্রাইমারি কী কলাম হিসাবে ডিক্লেয়ার করতে হবে যেন সে NULL ভ্যালু গ্রহণ করতে না পারে।
PRIMARY KEY কনস্ট্রেইন্ট ডিলেট করা
PRIMARY KEY কনস্ট্রেইন্ট ডিলেট করতে নিম্নের SQL স্টেটমেন্টটি ব্যবহার করা হয়ঃ
ALTER TABLE Student_details(
DROP PRIMARY KEY;ALTER TABLE Student_details(
DROP CONSTRAINT Student_Id;FOREIGN KEY
এক টেবিলের FOREIGN KEY অন্য টেবিলের PRIMARY KEY কে নির্দেশ করে। সুতরাং দুটি টেবিলের মধ্যে সংযোগ সৃষ্টি করে।
দুটি টেবিলের সংযোগ বিচ্ছিন্ন করে এমন ক্রিয়া কলাপে FOREIGN KEY কনস্ট্রেইন্ট বাধা দেয়।
FOREIGN KEY কনস্ট্রেইন্ট ফরেন কী কলামে অবৈধ ডেটা ইনপুটেও বাধা দেয়, কারন প্রাইমারি কী কলাম এর ভ্যালুই হলো ফরেন কি কলাম এর ভ্যালু।
চলুন একটি উদাহরণের সাহায্য FOREIGN KEY বুঝার চেষ্টা করি। নিম্নের টেবিল দুটিতে ভালভাবে লক্ষ্য করুনঃ
নিচের অংশটি "Student_details" টেবিল থেকে নেওয়া হয়েছেঃ
| আইডি নং | রোল নাম্বার | শিক্ষার্থীর নাম | প্রতিষ্ঠানের নাম | ঠিকানা |
|---|---|---|---|---|
| ১ | ১০১ | তামজীদ হাসান | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
| ২ | ১০২ | মিনহাজুর রহমান | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
| ৩ | ১০৩ | মোঃ সবুজ হোসেন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
| ৪ | ১০৪ | ইয়াসিন হোসেন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
| ৫ | ১০৫ | ফরহাদ উদ্দিন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
নিচের অংশটি "Student_result" টেবিল থেকে নেওয়া হয়েছেঃ
| আইডি নং | রোল নাম্বার | ফলাফল |
|---|---|---|
| ১ | ১০১ | A+ |
| ২ | ১০২ | A+ |
| ৩ | ১০৩ | A+ |
| ৪ | ১০৪ | A+ |
| ৫ | ১০৫ | A+ |
উপরের টেবিল দুটিতে লক্ষ্য করলে দেখবেন, "Student_result" টেবিলের "Roll_number" কলামটি "Student_details" টেবিলের "Roll_number" কলামকে নির্দেশ(Point) করছে।
"Student_details" টেবিলের "Roll_number" কলামটি হচ্ছে ঐ টেবিলের PRIMARY KEY কনস্ট্রেইন্ট এবং "Student_result" টেবিলের "Roll_number" কলামটি হচ্ছে "Student_result" টেবিলের FOREIGN KEY কনস্ট্রেইন্ট।
বিঃদ্রঃ PRIMARY KEY এবং FOREIGN KEY কে যথাক্রমে পিতা এবং পুত্র বলা হয়। পুত্রের কোনো কিছু প্রয়োজন হলে সে পিতার কাছেই চাই। একইভাবে FOREIGN KEY তার প্রয়োজনে PRIMARY KEY এর কাছে রেফার করে।
টেবিল তৈরির সময় FOREIGN KEY কনস্ট্রেইন্ট সেট করা
নিম্নের SQL স্টেটমেন্টটি "Student_result" টেবিল তৈরি করার সময় "Roll_number" কলামে একটি FOREIGN KEY কনস্ট্রেইন্ট সেট করবেঃ
CREATE TABLE Student_result(
Id int NOT NUll,
Roll_number varchar(255) NOT NULL,
Result varchar(255) NOT NULL,
PRIMARY KEY (Id),
FOREIGN KEY (Roll_number) REFERENCES Student_details(Roll_number)
);CREATE TABLE Student_result(
Id int NOT NUll,
Roll_number varchar(255) FOREIGN KEY REFERENCES Student_details(Roll_number),
Result varchar(255) NOT NULL
);FOREIGN KEY কনস্ট্রেইন্ট এর নামকরন এবং একাধিক কলামে FOREIGN KEY কনস্ট্রেইন্ট ডিফাইন করতে নিম্নের SQL স্টেটমেন্টটি ব্যবহার করা হয়ঃ
CREATE TABLE Student_result(
Id int NOT NUll,
Roll_number varchar(255) NOT NULL,
Result varchar(255) NOT NULL,
PRIMARY KEY (Id),
CONSTRAINT link_Student_result FOREIGN KEY(Roll_number) REFERENCES Student_details(Roll_number)
);টেবিল পরিবর্তন করার সময় FOREIGN KEY সেট করা
নিম্নের SQL স্টেটমেন্টটি "Student_result" টেবিল পরিবর্তন(modify) করার সময় "Roll_number" কলামে FOREIGN KEY কনস্ট্রেইন্ট সেট করবেঃ
ALTER TABLE Student_result
ADD FOREIGN KEY (Roll_number)
REFERENCES Student_details(Roll_number);FOREIGN KEY কনস্ট্রেইন্ট এর নামকরন এবং একাধিক কলামে FOREIGN KEY কনস্ট্রেইন্ট ডিফাইন করতে নিম্নের SQL স্টেটমেন্টটি ব্যবহার করা হয়ঃ
ALTER TABLE Student_result
ADD CONSTRAINT link_Student_result
ADD FOREIGN KEY (Roll_number)
REFERENCES Student_details(Roll_number);FOREIGN KEY কনস্ট্রেইন্ট ডিলেট
FOREIGN KEY কনস্ট্রেইন্টকে ডিলেট করতে নিম্নের SQL স্টেটমেন্টটি ব্যবহার করুনঃ
ALTER TABLE Student_result
DROP FOREIGN KEY link_Student_result;ALTER TABLE Student_result
DROP CONSTRAINT link_Student_result;SQL IN অপারেটর
IN অপারেটর দ্বারা WHERE clause এর মধ্যে একত্রে একাধিক ভ্যালু উল্লেখ করা যায়।
SQL IN সিনটেক্স
SELECT name_of_column's
FROM name_of_table
WHERE name_of_column IN (value_1, value_2,...);নমুনা ডেটাবেজ
IN অপারেটর এর ব্যবহার দেখার জন্য আমরা আমাদের নমুনা ডেটাবেজ Student ব্যবহার করবো।
নিচের অংশটি "Student_details" টেবিল থেকে নেওয়া হয়েছেঃ
| আইডি নং | রোল নাম্বার | শিক্ষার্থীর নাম | প্রতিষ্ঠানের নাম | ঠিকানা |
|---|---|---|---|---|
| ১ | ১০১ | তামজীদ হাসান | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
| ২ | ১০২ | মিনহাজুর রহমান | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
| ৩ | ১০৩ | মোঃ সবুজ হোসেন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
| ৪ | ১০৪ | ইয়াসিন হোসেন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
| ৫ | ১০৫ | ফরহাদ উদ্দিন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
IN অপারেটরের উদাহরণ
নিম্নের SQL IN স্টেটমেন্টটি "Student_details" টেবিল থেকে "ঢাকা" অথবা "রাজশাহী" শহরের রেকর্ডকে সিলেক্ট করবেঃ
উদাহরণ
SELECT * FROM Student_details
WHERE Address IN ('ঢাকা','রাজশাহী');SQL BETWEEN অপারেটর
একটি নির্দিষ্ট রেঞ্জের মধ্যে ভ্যালু সিলেক্ট করার জন্য SQL BETWEEN অপারেটর ব্যবহার করা হয়।
SQL BETWEEN অপারেটর
BETWEEN অপারেটর একটি নির্দিষ্ট রেঞ্জের ভ্যালু সিলেক্ট করে। এই ভ্যালু-সমূহ টেক্সট, সংখ্যা অথবা তারিখ হতে পারে।
SQL BETWEEN সিনট্যাক্স
SELECT name_of_column's
FROM name_of_table
WHERE name_of_column BETWEEN value_1 AND value_2;নমুনা ডেটাবেজ
IN অপারেটর এর ব্যবহার দেখার জন্য আমরা আমাদের নমুনা ডেটাবেজ Student ব্যবহার করবো।
নিচের অংশটি "Student_details" টেবিল থেকে নেওয়া হয়েছেঃ
| আইডি নং | রোল নাম্বার | শিক্ষার্থীর নাম | প্রতিষ্ঠানের নাম | ঠিকানা |
|---|---|---|---|---|
| ১ | ১০১ | তামজীদ হাসান | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
| ২ | ১০২ | মিনহাজুর রহমান | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
| ৩ | ১০৩ | মোঃ সবুজ হোসেন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
| ৪ | ১০৪ | ইয়াসিন হোসেন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
| ৫ | ১০৫ | ফরহাদ উদ্দিন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
BETWEEN অপারেটরের উদাহরণ
নিম্নের SQL BETWEEN স্টেটমেন্টটি "Student_details" টেবিলের "Roll_number" কলামের ১০১ থেকে ১০৫ রেঞ্জ পর্যন্ত সকল রেকর্ড গুলো নিয়ে আসবেঃ
SELECT * FROM Student_details
WHERE Roll_number BETWEEN '১০১' AND '১০৫';সতর্কতাঃ BETWEEN অপারেটরটি বিভিন্ন ডেটাবেজে বিভিন্ন ফলাফল দেখাতে পারে!
- কিছু ডেটাবেজে
BETWEENঅপারেটরটি টেষ্ট ভ্যালুসহ এর মাঝখানের ভ্যালুগুলোর জন্য ফলাফল দেয়। - আবার কিছু ডেটাবেজে টেষ্ট ভ্যালুছাড়া এর মাঝখানের ভ্যালুগুলোর জন্য ফলাফল দেয়।
- আবার কিছু ডেটাবেজে প্রথম টেষ্ট ভ্যালুসহ এবং শেষ টেষ্ট ভ্যালু ছাড়া এর মাঝখানের ভ্যালুগুলোর জন্য ফলাফল দেয়।
সুতরাং BETWEEN নিয়ে কাজ করার পূর্বে BETWEEN অপারেটরটি আপনার ডেটাবেজে কিভাবে কাজ করে তা চেক করে দেখুন!
NOT BETWEEN অপারেটরের উদাহরণ
পূর্ববর্তী উদাহরণে আমরা রেঞ্জের ভিতরের ভ্যলু-সমূহ সিলেক্ট করেছিলাম। আর এই উদাহরণে আমরা ঐ নির্দিষ্ট রেঞ্জের বাইরের ভ্যালু-সমূহ সিলেক্ট করবো। এজন্য আমরা BETWEEN এর পরিবর্তে NOT BETWEEN ব্যবহার করবো।
SELECT * FROM Student_details
WHERE Roll_number NOT BETWEEN '১০১' AND '১০৫';BETWEEN এবং IN অপারেটর একত্রে ব্যবহার করা
নিম্নের SQL স্টেটমেন্টটি "Student_details" টেবিলের "Roll_number" কলামের ১০১ থেকে ১১০ রেঞ্জ পর্যন্ত রেকর্ড গুলো নিয়ে আসবে, কিন্তু ৪, ৭ এবং ৯ "Id" বিশিষ্ট রেকর্ড গুলো দেখাবে নাঃ
SELECT * FROM Student_details
WHERE (Roll_number BETWEEN '১০১' AND '১১০')
AND NOT Id IN(৪, ৭, ৯);টেক্সট ভ্যালুসহ BETWEEN অপারেটরের ব্যবহার
নিম্নের SQL স্টেটমেন্টটি "Student_details" টেবিল এর রেকর্ড-সমূহের মধ্যে যে সকল "শিক্ষার্থীর নাম(Student_name)" 'ক' থেকে 'ম' পর্যন্ত অক্ষর দ্বারা শুরু হয়েছে শুধুমাত্র তাদেরকে নিয়ে আসবেঃ
SELECT * FROM Student_details
WHERE Student_name BETWEEN 'ক' AND 'ম';টেক্সট ভ্যালুসহ NOT BETWEEN অপারেটরের ব্যবহার
নিম্নের SQL স্টেটমেন্টটি "Student_details" টেবিল এর রেকর্ড-সমূহের মধ্যে যে সকল "শিক্ষার্থীর নাম(Student_name)" 'ক' থেকে 'ম' পর্যন্ত অক্ষর দ্বারা শুরু হয়েছে শুধুমাত্র তাদেরকে ছাড়া বাকীদেরকে নিয়ে আসবেঃ
SELECT * FROM Student_details
WHERE Student_name NOT BETWEEN 'ক' AND 'ম';নমুনা ডেটাবেজ
নিচের অংশটি "Student_attendance" টেবিল থেকে নেওয়া হয়েছেঃ
| আইডি নং | রোল নাম্বার | শতকরা উপস্থিতি | ভর্তির তারিখ |
|---|---|---|---|
| ১ | ১০১ | ৮৯% | ০১-১১-২০১৫ |
| ২ | ১০২ | ৯১% | ০১-১১-২০১৫ |
| ৩ | ১০৩ | ৮০% | ০১-১১-২০১৫ |
| ৪ | ১০৪ | ৭৫% | ০২-১১-২০১৫ |
| ৫ | ১০৫ | ৭৭% | ০২-১১-২০১৫ |
ডেট ভ্যালুসহ BETWEEN অপারেটরের ব্যবহার
নিম্নের SQL স্টেটমেন্টটি "Student_attendance" টেবিল এর রেকর্ড-সমূহের মধ্যে যে সকল শিক্ষার্থীর "ভর্তির তারিখ(Admission_date)" '০১-১১-২০১৫' থেকে '১০-১১-২০১৫' এর মধ্যে শুধুমাত্র তাদেরকে নিয়ে আসবেঃ
SELECT * FROM Student_attendance
WHERE Admission_date BETWEEN '০১-১১-২০১৫' AND '১০-১১-২০১৫';
