- What is PostgreSQL?
- What is the purpose of a database schema in PostgreSQL?
- Explain the Primary Key and Foreign Key concepts in PostgreSQL.
- What is the difference between the
VARCHARandCHARdata types? - Explain the purpose of the
WHEREclause in aSELECTstatement. - What are the
LIMITandOFFSETclauses used for? - How can you modify data using
UPDATEstatements? - What is the significance of the
JOINoperation, and how does it work in PostgreSQL? - Explain the
GROUP BYclause and its role in aggregation operations. - How can you calculate aggregate functions like
COUNT(),SUM(), andAVG()in PostgreSQL?
💡 Pro Tip: Don't be short and concise in your answers; explain the idea behind each question and provide in-depth analysis with relevant examples.
PostgreSQL একটি ওপেন‑সোর্স, উচ্চক্ষমতা সম্পন্ন রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেম (RDBMS)। এটি স্ট্রং Atomicity, Consistency, Isolation, Durability (ACID) এবং উন্নত কুয়েরি ক্ষমতা প্রদান করে। PostgreSQL-কে প্রায়শই “advanced” বা “object‑relational” বলা হয় কারণ এটি রিলেশনাল ডাটাবেসের সব সুবিধা রাখে এবং একই সাথে কাস্টম ডাটা টাইপ, ফাংশন, এক্সটেনশন সাপোর্ট করে।
কেন ব্যবহার করবেন — মূল সুবিধা:
- ACID কমপ্লায়েন্ট ট্রাঞ্জেকশন: ডেটার নির্ভুলতা ও স্থায়িত্ব নিশ্চিত করে।
- স্টোরড প্রসিডিউর, টেবিল‑লেভেল ট্রিগার, এবং কাস্টম ফাংশন তৈরি করা যায়।
- বড় স্কেলে কনকারেন্ট রিড/রাইট হ্যান্ডল করতে পারে।
- এক্সটেনসিবিলিটি — নতুন ডাটা টাইপ, অপারেটর বা ইন্ডেক্সিং পদ্ধতি যোগ করতে পারবেন।
- সামাজিক ও শিল্পোন্নত সমর্থন — enterprise‑grade ব্যবহারেও প্রচলিত।
2) What is the purpose of a database schema in PostgreSQL? or, PostgreSQL‑এ একটি Database Schema (স্কিমা) এর উদ্দেশ্য কী?
Schema হল ডাটাবেসের ভেতরে একটি নামকৃত ব্লক বা কনটেইনার যেখানে টেবিল, ভিউ, ইন্ডেক্স, ফাংশন ইত্যাদি গুচ্ছবদ্ধভাবে রাখা হয়। এটি সাধারণত বড় ডাটাবেসে যৌক্তিক সংগঠন ও এক্সপোজার নিয়ন্ত্রণ করতে ব্যবহার করা হয়।
কারণে দরকার:
- সংগঠন (Organization): একই ডাটাবেসে বিভিন্ন অংশ বা মডিউল আলাদা করে রাখা যায় — উদাহরণ: public, analytics, archive ইত্যাদি।
- নেমস্পেসিং (Namespace): একই নামের টেবিল বিভিন্ন স্কিমায় থাকতে পারে (যেমন hr.employees এবং sales.employees)।
- অ্যাক্সেস কন্ট্রোল: যে‑ইউজার কোন স্কিমা দেখতে/অ্যাক্সেস করতে পারবে তা নিয়ন্ত্রণ করা যায়।
- ডেপ্লয়মেন্ট/মাইগ্রেশন সহজ করা: মডিউল ভিত্তিক ডেভেলপমেন্টে স্কিমা সুবিধা দেয়।
3) Explain the Primary Key and Foreign Key concepts in PostgreSQL? or, PostgreSQL এ Primary Key এবং Foreign Key ব্যাখ্যা করুন?
Primary Key (প্রাইমারি কী):
একটি টেবিলের এমন একটি কলাম বা কলামের সমষ্টি যা প্রতিটি রেকর্ডকে অনন্যভাবে চিহ্নিত করে। প্রাইমারি কী NULL থাকতে পারে না এবং তার ওপর ইনডেক্স অটোম্যাটিকভাবে তৈরি হয়। এটি টেবিলের ইন্টিগ্রিটি রক্ষা করে — কোনো দুইটি রেকর্ড একই প্রাইমারি কী শেয়ার করবে না।
Foreign Key (ফরেইন কী):
একটি কলাম (বা কলামের সেট) যেটি অন্য কোনো টেবিলের প্রাইমারি কী (বা ইউনিক কনস্ট্রেইন্ট) রেফার করে। ফরেইন কী ডেটার রিলেশন তৈরি করে এবং রেফারেনশিয়াল ইন্টিগ্রিটি বজায় রাখে — অর্থাৎ সম্পর্কিত পয়েন্টার লিংক ভাঙলে (যেমন রেফার করা রেকর্ড মুছলে) কন্ট্রোল করতে পারে (CASCADE, RESTRICT, SET NULL ইত্যাদি)।
4) What is the difference between the VARCHAR and CHAR data types? or, VARCHAR এবং CHAR এর মধ্যে পার্থক্য কী?
CHAR(n) (Fixed-length): i. CHAR(n) সর্বদা নির্দিষ্ট দৈর্ঘ্যের স্টোর করে। যদি আপনি ছোট স্ট্রিং ইনসার্ট করেন, PostgreSQL প্যাডিং করে (space‑padding) নির্দিষ্ট দৈর্ঘ্য পূরণ করে। ii. এটি স্থায়ী দৈর্ঘ্যের ডাটা জন্য উপযুক্ত (যেখানে প্রতিটি মান একই লেন’s থাকবে), যেমন স্ট্যাটাস কোড বা ফিক্সড‑ফিল্ড কোড। iii. অপ্রয়োজনীয় প্যাডিং কখনও কখনও পারফরম্যান্স বা মেমরি তে ক্ষুদ্র প্রভাব ফেলতে পারে।
VARCHAR(n) (Variable-length): i. VARCHAR(n) সর্বোচ্চ n অক্ষর অনুমোদন করে কিন্তু প্রকৃত স্টোরেজতে শুধুমাত্র প্রয়োজনীয় বাইট ব্যবহার করে (প্যাডিং নেই)। ii. সাধারণত নাম, ঠিকানা, বিবরণ ইত্যাদি জন্য ব্যবহার করা হয় যেখানে দৈর্ঘ্য পরিবর্তনশীল। iii. VARCHAR ব্যবহার করা অধিক নমনীয় এবং আজকের বিশ্বে বেশিরভাগ ক্ষেত্রেই VARCHAR-ই পছন্দ করা হয়।
5) Explain the purpose of the WHERE clause in a SELECT statement? or, WHERE ক্লজের উদ্দেশ্য SELECT স্টেটমেন্টে কী?
WHERE ক্লজ হল একটি ফিল্টারিং মেকানিজম যা রেকর্ডগুলোকে শর্ত অনুসারে নির্বাচন (filter) করে। একটি SELECT স্টেটমেন্টে WHERE নির্দিষ্ট করে কোন রো(গুলো) ফলাফলের অংশ হবে — অর্থাৎ এটি কন্ডিশন‑বেইজড রো নির্বাচন করে, ফলে আপনি বড় টেবিল থেকে নির্দিষ্ট ডাটা আলাদা করে আনতে পারেন।
ব্যবহার ও গুরুত্ব:
- ফিল্টারিং ডাটা: যেমন নির্দিষ্ট তারিখ পরের সকল ইভেন্ট, নির্দিষ্ট অঞ্চলের সব রেকর্ড ইত্যাদি।
- পারফরম্যান্স অপ্টিমাইজেশন: সঠিক WHERE ক্লজ অপ্টিমাইজারকে সাহায্য করে কেবল প্রয়োজনীয় ডেটা পড়তে ও প্রক্রিয়া করতে, ফলে কুয়েরি দ্রুত হয়।
- কমপ্লেক্স কন্ডিশন: লজিকাল অপারেটর (AND, OR, NOT) ও তুলনা অপারেটর ব্যবহার করে জটিল ফিল্টার তৈরি করা যায়।
- JOINs‑এ ফিল্টারিং: WHERE কে JOIN কন্ডিশন (যদি ON ব্যবহার না করা হয়) বা যুক্ত রোতে অতিরিক্ত শর্ত যোগ করতে ব্যবহার করে, যদিও সুস্পষ্ট ON‑ক্লজ ব্যবহার করা ভাল অভ্যাস।