এসকিউএল-৬ [Constraints-কনস্ট্রেইন্টস, SQL Join, SQL INNER JOIN Keyword, SQL LEFT JOIN Keyword, SQL RIGHT JOIN Keyword, SQL FULL JOIN Keyword] - SMH Amiri

সর্বশেষ লিখাসমূহ

এসকিউএল-৬ [Constraints-কনস্ট্রেইন্টস, SQL Join, SQL INNER JOIN Keyword, SQL LEFT JOIN Keyword, SQL RIGHT JOIN Keyword, SQL FULL JOIN Keyword]


SQL কনস্ট্রেইন্ট

SQL কনস্ট্রেইন্ট(Constraints) একটি টেবিলের ডেটা কলামগুলির উপর নিয়ম আরোপ করতে ব্যবহৃত হয়। এটি একটি টেবিলে ইনপুটকৃত তথ্যের সীমা নির্ধারন করতে পারে। এটি ডেটাবেজ তথ্যের সঠিকতা এবং নির্ভরযোগ্যতা নিশ্চিত করে।

কনস্ট্রেইন্ট(constraint) কর্তৃক আরোপিত সীমা লংঘনকারী সকল কর্মকান্ডকে কনস্ট্রেইন্ট বাধা দেয়।

SQL এ Constraints সমূহঃ

  • NOT NULL - একটি কলামে NULL ভ্যালু থাকতে পারবে না।
  • UNIQUE - একটি কলামের প্রতিটি সারিতে ইউনিক ভ্যালু থাকবে।
  • PRIMARY KEY - ইহা NOT NULL এবং UNIQUE এর সংমিশ্রণ।
  • FOREIGN KEY - দুইটি টেবিলের মধ্যে সংযোগ সৃষ্টি করে।
  • CHECK- একটি টেবিলের প্রতিটি সারিতে একটি শর্ত আরোপ করে।
  • DEFAULT - একটি কলামের জন্য ডিফল্ট ভ্যালু নির্দিষ্ট করে।

টেবিল তৈরি করার সময়ে আমরা Constraints সেট করতে পারি। এছাড়া পূর্বের তৈরি টেবিলেও Constraints যোগ করতে পারি।

টেবিল তৈরির সময়ে SQL CONSTRAINT সিনটেক্স

CREATE TABLE name_of_table
(
name_of_column_1 data_type(size) name_of_constraint,
name_of_column_2 data_type(size) name_of_constraint,
....
);

SQL CONSTRAINT ডিলেট করা

ALTER TABLE name_of_table DROP CONSTRAINT name_of_constraint;


SQL Join

Join এর বাংলা অর্থ কোন কিছু একত্রিত করা। SQL -এ JOIN দুই বা ততোধিক টেবিলকে একত্রিত করে।
একটি ডেটাবেজ দুই বা ততোধিক টেবিলের কলাম ফিল্ডের উপর ভিত্তিকরে যথাক্রমে দুই বা ততোধিক টেবিল থেকে সারি নিয়ে তাদের একত্রিত করার জন্য SQL JOIN clause ব্যবহৃত হয়।


ANSI স্ট্যান্ডার্ড অনুসারে SQL এ ৫ ধরনের JOIN রয়েছে

নিম্নে JOIN সমূহের তালিকা ও ব্যবহার তুলে ধরা হলোঃ

  • INNER JOIN - উভয় টেবিলে অন্তত একটি কলামের মিল থাকলে সকল সারি রিটার্ন করে।
  • LEFT JOIN - ডান টেবিলের মিলিত সারিসহ বাম টেবিলের সকল সারি রিটার্ন করে।
  • RIGHT JOIN - বাম টেবিলের মিলিত সারিসহ ডান টেবিলের সকল সারি রিটার্ন করে।
  • FULL JOIN -যেকোনো একটি টেবিলের সাথে মিল থাকলে উভয় টেবিলের সকল সারি রিটার্ন করে।
  • CROSS JOIN - বাম পাশের মিলিত সারির একটি কলামের জন্য ডান পাশের মিলিত সারির প্রতিটি কলামকে রিটার্ন করে।

SQL এর সবচেয়ে সাধারণ JOIN হলোঃ SQL INNER JOIN
join এর সাধারণ সর্ত পুরণ হলে SQL INNER JOIN একাধিক টেবিল থেকে সারি রির্টান করে।


নমুনা ডেটাবেজ

JOIN কীওয়ার্ডের ব্যবহার দেখানোর জন্য আমরা আমাদের নমুনা ডেটাবেজ Student ব্যবহার করবো।

নিচের অংশটি "Student_details" টেবিল থেকে নেওয়া হয়েছেঃ

রোল নাম্বারশিক্ষার্থীর নামপ্রতিষ্ঠানের নামঠিকানা
১০১তামজীদ হাসানজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০২মিনহাজুর রহমানজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০৩মোঃ সবুজ হোসেনজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০৪ইয়াসিন হোসেনজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০৫ফরহাদ উদ্দিনজাতীয় বিশ্ববিদ্যালয়চাঁদপুর


নিচের অংশটি "Student_attendance" টেবিল থেকে নেওয়াঃ

রোল নাম্বারউপস্থিতিভর্তির তারিখ
১০১৮৯০১-১১-২০১৫
১০২৯১০১-১১-২০১৫
১০৩৮০০১-১১-২০১৫
১০৪৭৫০২-১১-২০১৫
১০৫৭৭০২-১১-২০১৫

উপরের টেবিল দুটিতে লক্ষ্য করলে দেখবেন যে, "রোল নাম্বার(Roll_number)" কলামটি উভয় টেবিলে রয়েছে। "Student_details" টেবিলের "রোল নাম্বার(Roll_number)" কলামটি "Student_attendance" টেবিলের "রোল নাম্বার(Roll_number)" কলামকে নির্দেশ করে। "রোল নাম্বার(Roll_number)" কলামটি উভয় টেবিলের মধ্যে সম্পর্ক তৈরি করছে।

উদাহরণ

SELECT Student_attendance.Roll_number, Student_details.Student_name, Student_attendance.Admission_date
FROM Student_attendance INNER JOIN Student_details
ON Student_attendance.Roll_number=Student_details.Roll_number;

উপরের উদাহরণটির ফলাফল নিম্নের ন্যায় দেখাবেঃ

রোল নাম্বারশিক্ষার্থীর নামভর্তির তারিখ
১০১তামজীদ হাসান০১-১১-২০১৫
১০২মিনহাজুর রহমান০১-১১-২০১৫
১০৩মোঃ সবুজ হোসেন০১-১১-২০১৫
১০৪ইয়াসিন হোসেন০২-১১-২০১৫
১০৫ফরহাদ উদ্দিন০২-১১-২০১৫


SQL INNER JOIN কীওয়ার্ড

Join এর সবচেয়ে গুরুত্বপূর্ণ এবং সর্বাধিক ব্যবহৃত ধরন হচ্ছে INNER JOIN। দুই বা ততোধিক টেবিলের কলামের ভ্যালু গুলোকে একত্রিত করার মাধ্যমে INNER JOIN একটি নতুন টেবিল তৈরি করে।
কুয়েরী করার সময় ON কীওয়ার্ড ের মাধ্যমে শর্ত জুড়ে দেওয়া হয়। যখন ঐ শর্ত বা শর্ত-সমূহ পূর্ণ হয় তখন উভয় টেবিলের তথ্য গুলো একত্রিত হয়ে একটি ফলাফল টেবিল তৈরি হয়।

SQL INNER JOIN সিনটেক্স

SELECT name_of_column's
FROM first_table
INNER JOIN second_table
ON first_table.name_of_column=second_table.name_of_column;

অথবাঃ

SELECT name_of_column's
FROM first_table
JOIN second_table
ON first_table.name_of_column=second_table.name_of_column;

মনে রাখবেন, INNER JOIN এবং JOIN একই অর্থে ব্যবহৃত হয়।

SQL INNER JOIN


নমুনা ডেটাবেজ

JOIN কীওয়ার্ডের ব্যবহার দেখানোর জন্য আমরা আমাদের নমুনা ডেটাবেজ Student ব্যবহার করবো।

নিচের অংশটি "Student_details" টেবিল থেকে নেওয়া হয়েছেঃ

রোল নাম্বারশিক্ষার্থীর নামপ্রতিষ্ঠানের নামঠিকানা
১০১তামজীদ হাসানজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০২মিনহাজুর রহমানজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০৩মোঃ সবুজ হোসেনজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০৪ইয়াসিন হোসেনজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০৫ফরহাদ উদ্দিনজাতীয় বিশ্ববিদ্যালয়চাঁদপুর


নিচের অংশটি "Student_attendance" টেবিল থেকে নেওয়াঃ

রোল নাম্বারউপস্থিতিভর্তির তারিখ
১০১৮৯০১-১১-২০১৫
১০২৯১০১-১১-২০১৫
১০৩৮০০১-১১-২০১৫
১০৪৭৫০২-১১-২০১৫
১০৫৭৭০২-১১-২০১৫

SQL INNER JOIN উদাহরণ

নিম্নের SQL স্টেটমেন্টটি সকল শিক্ষার্থীর নামের সাথে তাদের ভর্তির তারিখ ফেরত দিবেঃ

উদাহরণ

SELECT Student_attendance.Roll_number, Student_details.Student_name, Student_attendance.Admission_date
FROM Student_attendance INNER JOIN Student_details
ON Student_attendance.Roll_number=Student_details.Roll_number;

বিঃদ্রঃ উভয় টেবিলের যেসকল কলামের তথ্য গুলো ম্যাচ করবে INNER JOIN শুধুমাত্র ঐ সকল সারি গুলোকে একত্রিত করে ফলাফল দেখাবে।

উপরের উদাহরণটির ফলাফল নিম্নের ন্যায় দেখাবেঃ

রোল নাম্বারশিক্ষার্থীর নামভর্তির তারিখ
১০১তামজীদ হাসান০১-১১-২০১৫
১০২মিনহাজুর রহমান০১-১১-২০১৫
১০৩মোঃ সবুজ হোসেন০১-১১-২০১৫
১০৪ইয়াসিন হোসেন০২-১১-২০১৫
১০৫ফরহাদ উদ্দিন০২-১১-২০১৫


SQL LEFT JOIN কীওয়ার্ড

SQL LEFT JOIN কীওয়ার্ডটি বাম টেবিলের(first_table) সকল সারিকে এবং ডান টেবিলের(second_table) শুধুমাত্র সদৃশ(matched) সারি গুলোকে একত্রিত করে ফলাফল-টেবিলে ফলাফল রিটার্ন করে। যদি সদৃশ কিছু খুঁজে না পায় তাহলে ডান টেবিল থেকে কোনো কিছু কুয়েরি/রিটার্ন করবে না।

SQL LEFT JOIN সিনটেক্স

SELECT name_of_column's
FROM first_table
LEFT JOIN second_table
ON first_table.name_of_column=second_table.name_of_column;

অথবাঃ

SELECT name_of_column's
FROM first_table
LEFT OUTER JOIN second_table
ON first_table.name_of_column=second_table.name_of_column;

কিছু ডেটাবেজে LEFT JOIN কে LEFT OUTER JOIN বলা হয়ে থাকে।

SQL LEFT JOIN


নমুনা ডেটাবেজ

LEFT JOIN কীওয়ার্ডের ব্যবহার দেখানোর জন্য আমরা আমাদের নমুনা ডেটাবেজ Student ব্যবহার করবো।

নিচের অংশটি "Student_details" টেবিল থেকে নেওয়া হয়েছেঃ

রোল নাম্বারশিক্ষার্থীর নামপ্রতিষ্ঠানের নামঠিকানা
১০১তামজীদ হাসানজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০২মিনহাজুর রহমানজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০৩মোঃ সবুজ হোসেনজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০৪ইয়াসিন হোসেনজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০৫ফরহাদ উদ্দিনজাতীয় বিশ্ববিদ্যালয়চাঁদপুর

নিচের অংশটি "Student_result" টেবিল থেকে নেওয়া হয়েছেঃ

রোল নাম্বারফলাফল
১০১A+
১০২A+
১০৩A+
১০৪A+
১০৫A+

SQL LEFT JOIN উদাহরণ

নিম্নের SQL স্টেটমেন্টটি সকল শিক্ষার্থীর তথ্য রিটার্ন করবে এবং যদি তাদের পরীক্ষার ফলাফল থাকে তবে তাও রিটার্ন করবেঃ

উদাহরণ

SELECT Student_details.Student_name ,Student_details.Roll_number, Student_result.Result
FROM Student_details
LEFT JOIN Student_result
ON Student_details.Roll_number=Student_result.Roll_number
ORDER BY Student_details.Student_name;

বিঃদ্রঃ ডান টেবিলের মধ্যে সদৃশ(matched) কোনো কিছু খুঁজে না পেলেও LEFT JOIN কীওয়ার্ড টি বাম টেবিলের সকল সারি রিটার্ন করবে।

উপরের উদাহরণটির ফলাফল নিম্নের ন্যায় দেখাবেঃ

রোল নাম্বারশিক্ষার্থীর নামফলাফল
১২৩আসমা আক্তারA-
১০৪ইয়াসিন হোসেনA+
১২৮উম্মে কুলসুমB
১১৪ওমর ফারুকA
১০৯ওয়াহিদুল ইসলামA


SQL RIGHT JOIN কীওয়ার্ড

SQL RIGHT JOIN কীওয়ার্ডটি ডান টেবিলের(second_table) সকল সারিকে এবং বাম টেবিলের(first_table) শুধুমাত্র সদৃশ(matched) সারি গুলোকে একত্রিত করে ফলাফল-টেবিলে ফলাফল রিটার্ন করে। যদি সদৃশ কিছু খুঁজে না পায় তাহলে বাম টেবিল থেকে কোনো কিছু কুয়েরি/রিটার্ন করবে না।

SQL RIGHT JOIN সিনট্যাক্স

SELECT name_of_column's
FROM first_table
RIGHT JOIN second_table
ON first_table.name_of_column=second_table.name_of_column;

অথবাঃ

SELECT name_of_column's
FROM first_table
RIGHT OUTER JOIN second_table
ON first_table.name_of_column=second_table.name_of_column;

কিছু ডাটাবেজে RIGHT JOIN কে RIGHT OUTER JOIN বলা হয়ে থাকে।

SQL RIGHT JOIN


নমুনা ডেটাবেজ

RIGHT JOIN কীওয়ার্ডের ব্যবহার দেখানোর জন্য আমরা আমাদের নমুনা ডেটাবেজ Student ব্যবহার করবো।

নিচের অংশটি "Student_details" টেবিল থেকে নেওয়া হয়েছেঃ

রোল নাম্বারশিক্ষার্থীর নামপ্রতিষ্ঠানের নামঠিকানা
১০১তামজীদ হাসানজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০২মিনহাজুর রহমানজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০৩মোঃ সবুজ হোসেনজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০৪ইয়াসিন হোসেনজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০৫ফরহাদ উদ্দিনজাতীয় বিশ্ববিদ্যালয়চাঁদপুর

নিচের অংশটি "Student_attendance" টেবিল থেকে নেওয়া হয়েছেঃ

রোল নাম্বারউপস্থিতিভর্তির তারিখ
১০১৮৯০১-১১-২০১৫
১০২৯১০১-১১-২০১৫
১০৩৮০০১-১১-২০১৫
১০৪৭৫০২-১১-২০১৫
১০৫৭৭০২-১১-২০১৫

SQL RIGHT JOIN উদাহরণ

নিম্নের SQL স্টেটমেন্টটি সকল শিক্ষার্থীর তথ্য রিটার্ন করবে এবং যদি তাদের ভর্তির তারিখ দেওয়া থাকে তবে তাও রিটার্ন করবেঃ

উদাহরণ

SELECT Student_details.Roll_number, Student_details.Student_name, Student_attendance.Admission_date
FROM Student_attendance
RIGHT JOIN Student_details
ON Student_details.Roll_number=Student_attendance.Roll_number
ORDER BY Student_attendance.Admission_date;

বিঃদ্রঃ বাম টেবিলের মধ্যে সদৃশ(matched) কোনো কিছু খুঁজে না পেলেও RIGHT JOIN কীওয়ার্ড টি ডান টেবিলের সকল সারি রিটার্ন করবে।

উপরের উদাহরণটির ফলাফল নিম্নের ন্যায় দেখাবেঃ

রোল নাম্বারশিক্ষার্থীর নামভর্তির তারিখ
১০১তামজীদ হাসান০১-১১-২০১৫
১০২মিনহাজুর রহমান০১-১১-২০১৫
১০৩মোঃ সবুজ হোসেন০১-১১-২০১৫
১০৪ইয়াসিন হোসেন০২-১১-২০১৫
১০৫ফরহাদ উদ্দিন০২-১১-২০১৫


SQL FULL JOIN কীওয়ার্ড

FULL JOIN কীওয়ার্ডটি বাম(first_table) এবং ডান(second_table) উভয় টেবিলের সকল সারি রিটার্ন করে।

সুতরাং FULL JOIN কীওয়ার্ডটি LEFT JOIN এবং RIGHT JOIN এর ফলাফল গুলো একত্রিত করে। এক্ষেত্রে যদি কোনো ফলাফল না পায় তাহলে NULL ভ্যালু রিটার্ন করে।

SQL FULL JOIN সিনট্যাক্স

SELECT name_of_column's
FROM first_table
FULL JOIN second_table
ON first_table.name_of_column=second_table.name_of_column;

অথবাঃ

SELECT name_of_column's
FROM first_table
FULL OUTER JOIN second_table
ON first_table.name_of_column=second_table.name_of_column;

কিছু ডেটাবেজে FULL JOIN কে FULL OUTER JOIN বলা হয়ে থাকে।

SQL FULL OUTER JOIN


নমুনা ডেটাবেজ

FULL JOIN কীওয়ার্ডের ব্যবহার দেখানোর জন্য আমরা আমাদের নমুনা ডেটাবেজ Student ব্যবহার করবো।

নিচের অংশটি "Student_details" টেবিল থেকে নেওয়া হয়েছেঃ

রোল নাম্বারশিক্ষার্থীর নামপ্রতিষ্ঠানের নামঠিকানা
১০১তামজীদ হাসানজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০২মিনহাজুর রহমানজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০৩মোঃ সবুজ হোসেনজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০৪ইয়াসিন হোসেনজাতীয় বিশ্ববিদ্যালয়চাঁদপুর
১০৫ফরহাদ উদ্দিনজাতীয় বিশ্ববিদ্যালয়চাঁদপুর


নিচের অংশটি "Student_attendance" টেবিল থেকে নেওয়া হয়েছেঃ

রোল নাম্বারউপস্থিতিভর্তির তারিখ
১০১৮৯০১-১১-২০১৫
১০২৯১০১-১১-২০১৫
১০৩৮০০১-১১-২০১৫
১০৪৭৫০২-১১-২০১৫
১০৫৭৭০২-১১-২০১৫

SQL FULL JOIN উদাহরণ

নিম্নের SQL স্টেটমেন্টটি সকল শিক্ষার্থীর তথ্য গুলো একত্রিত করবেঃ

SELECT Student_details.Roll_number, Student_details.Student_name, Student_attendance.Admission_date
FROM Student_details
FULL JOIN Student_attendance
ON Student_details.Roll_number=Student_attendance.Roll_number
ORDER BY Student_details.Student_name;

ফলাফলটি কিছুটা এমন দেখাবেঃ

রোল নাম্বারশিক্ষার্থীর নামভর্তির তারিখ
১০১তামজীদ হাসান০১-১১-২০১৫
১০২মিনহাজুর রহমান০১-১১-২০১৫
১০৩মোঃ সবুজ হোসেন০১-১১-২০১৫
১০৪ইয়াসিন হোসেন০১-১১-২০১৫
১০৫ফরহাদ উদ্দিন

বিঃদ্রঃ FULL JOIN কীওয়ার্ডটি বাম টেবিল(first_table) এবং ডান টেবিলের(second_table) সকল সারি রিটার্ন করবে। এক্ষেত্রে কোনো সদৃশ সারি না থাকলেও উভয় টেবিলের সকল সারি রিটার্ন করবে।