Database Tutorials SQLite এর SQL Syntax এবং কুয়েরি গাইড ও নোট

488

SQLite একটি রিলেশনাল ডেটাবেস সিস্টেম যা SQL (Structured Query Language) ব্যবহার করে ডাটাবেস পরিচালনা করে। SQLite SQL কমান্ডগুলোর মাধ্যমে ডাটাবেস তৈরি, ডাটা যোগ, আপডেট, মুছা এবং অনুসন্ধান করতে সাহায্য করে। এখানে কিছু মূল SQL সিনট্যাক্স এবং কুয়েরি উদাহরণ দেওয়া হলো যা SQLite-এ ব্যবহৃত হয়।


১. ডাটাবেস তৈরি করা

SQLite-এ ডাটাবেস তৈরি করার জন্য CREATE DATABASE কমান্ড ব্যবহার করা হয়। তবে SQLite-এ ডাটাবেস ফাইল তৈরি করা একটি সহজ প্রক্রিয়া। ডাটাবেস ফাইল তৈরি করতে কোনো বিশেষ SQL কমান্ডের প্রয়োজন নেই; আপনি সরাসরি একটি ফাইলের মাধ্যমে ডাটাবেস তৈরি করতে পারেন।


২. টেবিল তৈরি করা

SQLite-এ টেবিল তৈরি করতে CREATE TABLE কমান্ড ব্যবহার করা হয়। এখানে একটি উদাহরণ:

CREATE TABLE users (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    age INTEGER,
    email TEXT UNIQUE
);

এটি একটি users টেবিল তৈরি করবে যেখানে id প্রাইমারি কি, name একটি টেক্সট ফিল্ড, age একটি ইনটিজার ফিল্ড, এবং email একটি ইউনিক ফিল্ড হবে।


৩. ডাটা ইনসার্ট করা

SQLite-এ টেবিলে ডাটা ইনসার্ট করতে INSERT INTO কমান্ড ব্যবহার করা হয়:

INSERT INTO users (name, age, email) 
VALUES ('Alice', 30, 'alice@example.com');

এটি users টেবিলে একটি নতুন রেকর্ড ইনসার্ট করবে, যেখানে name হবে "Alice", age হবে 30, এবং email হবে 'alice@example.com'।


৪. ডাটা নির্বাচন করা

SQLite-এ একটি টেবিল থেকে ডাটা নির্বাচন করতে SELECT কমান্ড ব্যবহার করা হয়:

SELECT * FROM users;

এটি users টেবিলের সমস্ত ডাটা নির্বাচন করবে। যদি নির্দিষ্ট কলাম নির্বাচন করতে চান, তাহলে:

SELECT name, age FROM users;

এটি শুধুমাত্র name এবং age কলামগুলোর ডাটা নির্বাচন করবে।


৫. ডাটা আপডেট করা

SQLite-এ টেবিলের ডাটা আপডেট করতে UPDATE কমান্ড ব্যবহার করা হয়:

UPDATE users
SET age = 31
WHERE name = 'Alice';

এটি users টেবিলের name কলামে "Alice" এর সাথে মিলে যাওয়া রেকর্ডের age ফিল্ড আপডেট করবে।


৬. ডাটা মুছা

SQLite-এ টেবিল থেকে ডাটা মুছতে DELETE কমান্ড ব্যবহার করা হয়:

DELETE FROM users
WHERE name = 'Alice';

এটি users টেবিল থেকে name কলামে "Alice" এর সাথে মিলে যাওয়া সমস্ত রেকর্ড মুছে ফেলবে।


৭. টেবিল মুছা

SQLite-এ একটি টেবিল মুছতে DROP TABLE কমান্ড ব্যবহার করা হয়:

DROP TABLE users;

এটি users টেবিলটি মুছে ফেলবে এবং সেই টেবিলের সমস্ত ডাটা স্থায়ীভাবে মুছে যাবে।


৮. টেবিলের কাঠামো দেখা

SQLite-এ একটি টেবিলের কাঠামো দেখতে PRAGMA table_info কমান্ড ব্যবহার করা হয়:

PRAGMA table_info(users);

এটি users টেবিলের সকল কলামের তথ্য দেখাবে, যেমন: কলামের নাম, প্রকার, কী নেই, ইত্যাদি।


৯. ইনডেক্স তৈরি করা

SQLite-এ টেবিলের ইনডেক্স তৈরি করতে CREATE INDEX কমান্ড ব্যবহার করা হয়:

CREATE INDEX idx_users_name ON users(name);

এটি users টেবিলে name কলামে একটি ইনডেক্স তৈরি করবে, যাতে name কলামে ডাটা অনুসন্ধান দ্রুত হয়।


১০. লিমিট ব্যবহার করা

SQLite-এ কোনো নির্দিষ্ট সংখ্যক রেকর্ড নির্বাচন করতে LIMIT কমান্ড ব্যবহার করা হয়:

SELECT * FROM users LIMIT 5;

এটি users টেবিল থেকে প্রথম 5টি রেকর্ড নির্বাচন করবে।


১১. অর্ডার BY ব্যবহার করা

SQLite-এ ডাটাকে একটি নির্দিষ্ট অর্ডারে সাজাতে ORDER BY কমান্ড ব্যবহার করা হয়:

SELECT * FROM users ORDER BY age DESC;

এটি users টেবিলের সকল রেকর্ড বয়স অনুযায়ী অবতরণ (ডেস্কেন্ডিং) অর্ডারে সাজিয়ে দেখাবে। আপনি ASC (অ্যাসেন্ডিং) ব্যবহার করলে তা উল্টোভাবে সাজাবে।


১২. যোগ (JOIN) অপারেশন

SQLite-এ দুটি বা তার বেশি টেবিলের ডাটা একসাথে দেখতে JOIN ব্যবহার করা হয়। যেমন:

SELECT users.name, orders.amount
FROM users
JOIN orders ON users.id = orders.user_id;

এটি users এবং orders টেবিলের ডাটা একত্রে দেখাবে যেখানে users.id এবং orders.user_id মিলে যাবে।


সারাংশ

SQLite SQL সিনট্যাক্স খুবই সহজ এবং ডাটাবেস পরিচালনায় কার্যকরী। CREATE, INSERT, SELECT, UPDATE, DELETE ইত্যাদি কমান্ডগুলি SQLite-এ ডাটাবেসের প্রধান অপারেশনগুলো সম্পাদন করতে ব্যবহৃত হয়। SQLite ছোট অ্যাপ্লিকেশন এবং মোবাইল অ্যাপ্লিকেশনগুলির জন্য একটি আদর্শ সিস্টেম, কারণ এটি সহজ, দ্রুত এবং সার্ভারবিহীন।

Content added By

WHERE, ORDER BY, এবং LIMIT এর ব্যবহার

410

WHERE ক্লজ

WHERE ক্লজটি SQL কুয়েরিতে ব্যবহৃত হয় একটি নির্দিষ্ট শর্ত অনুসারে ডেটা ফিল্টার করতে। এটি ডাটাবেস থেকে শুধুমাত্র সেই রেকর্ডগুলো নির্বাচন করে যেগুলি প্রদত্ত শর্ত মেনে চলে।

উদাহরণ:

SELECT * FROM users WHERE age > 25;

এই কুয়েরিটি users টেবিল থেকে শুধু সেই রেকর্ডগুলো নির্বাচন করবে, যেখানে age ২৫ এর চেয়ে বেশি।

WHERE ক্লজে বিভিন্ন ধরণের শর্ত ব্যবহার করা যেতে পারে, যেমন:

  • =, !=, <, >, <=, >= (তুলনামূলক অপারেটর)
  • BETWEEN (একটি পরিসরের মধ্যে)
  • LIKE (প্যাটার্ন ম্যাচিং)
  • IN (একাধিক মানের মধ্যে)
  • IS NULL (NULL মান চেক করা)

আরও উদাহরণ:

  1. BETWEEN ব্যবহার:

    SELECT * FROM users WHERE age BETWEEN 20 AND 30;
    

    এটি age ২০ থেকে ৩০ এর মধ্যে থাকা রেকর্ডগুলো নির্বাচন করবে।

  2. LIKE ব্যবহার:

    SELECT * FROM users WHERE name LIKE 'A%';
    

    এটি name কলামের যেসব রেকর্ডে 'A' দিয়ে শুরু হয়, সেগুলো নির্বাচন করবে।


ORDER BY ক্লজ

ORDER BY ক্লজটি SQL কুয়েরিতে ডেটাকে একটি নির্দিষ্ট কলামের উপর ভিত্তি করে সাজানোর জন্য ব্যবহৃত হয়। এটি ডেটাকে ascending (ASC) বা descending (DESC) অর্ডারে সাজাতে পারে। ডিফল্টভাবে ASC ব্যবহৃত হয়।

উদাহরণ:

SELECT * FROM users ORDER BY age;

এটি users টেবিলের সমস্ত রেকর্ড age কলামের অনুযায়ী ascending order (ছোট থেকে বড়) সাজাবে।

আরও উদাহরণ:

  1. Descending order:

    SELECT * FROM users ORDER BY age DESC;
    

    এটি age কলামের উপর ভিত্তি করে রেকর্ডগুলো descending order (বড় থেকে ছোট) সাজাবে।

  2. Multiple columns for sorting:

    SELECT * FROM users ORDER BY age DESC, name ASC;
    

    এটি প্রথমে age কলামের উপর descending অর্ডারে এবং তারপরে name কলামের উপর ascending অর্ডারে সাজাবে।


LIMIT ক্লজ

LIMIT ক্লজটি SQL কুয়েরিতে ডেটার সংখ্যা সীমাবদ্ধ করতে ব্যবহৃত হয়। এটি আপনাকে নির্দিষ্ট সংখ্যক রেকর্ড নির্বাচন করতে সাহায্য করে। সাধারণত এটি বড় ডাটাবেস থেকে ডেটা নির্বাচন করার সময় ব্যবহার করা হয়।

উদাহরণ:

SELECT * FROM users LIMIT 5;

এটি users টেবিল থেকে প্রথম ৫টি রেকর্ড নির্বাচন করবে।

আরও উদাহরণ:

  1. OFFSET সহ LIMIT:

    SELECT * FROM users LIMIT 5 OFFSET 10;
    

    এটি users টেবিলের ১১ তম রেকর্ড থেকে শুরু করে পরবর্তী ৫টি রেকর্ড নির্বাচন করবে। অর্থাৎ এটি প্রথম ১০টি রেকর্ড বাদ দিয়ে ১১ থেকে ১৫ পর্যন্ত রেকর্ড নিয়ে আসবে।


WHERE, ORDER BY, এবং LIMIT একসাথে ব্যবহার

এগুলোর সবকটি একসাথে ব্যবহার করে ডেটা ফিল্টার করা এবং সাজানো যায়, যাতে আপনি নির্দিষ্ট শর্তে সীমাবদ্ধ এবং সাজানো ডেটা পেতে পারেন।

উদাহরণ:

SELECT * FROM users WHERE age > 20 ORDER BY age DESC LIMIT 10;

এই কুয়েরিটি users টেবিল থেকে age > 20 শর্ত পূরণ করা রেকর্ডগুলো age কলামের উপর descending অর্ডারে সাজাবে এবং প্রথম ১০টি রেকর্ড ফিরিয়ে দেবে।


সারাংশ

  • WHERE: ডেটার উপর শর্ত প্রয়োগ করতে ব্যবহৃত হয়।
  • ORDER BY: ডেটাকে নির্দিষ্ট কলামের ওপর ভিত্তি করে সাজাতে ব্যবহৃত হয়।
  • LIMIT: নির্বাচিত রেকর্ডের সংখ্যা সীমাবদ্ধ করতে ব্যবহৃত হয়।

এই তিনটি কমান্ড একত্রে ব্যবহার করে আপনি খুবই কার্যকরী এবং নির্দিষ্ট ডেটা নির্বাচন করতে পারেন।

Content added By

JOIN (INNER, LEFT, RIGHT) এর মাধ্যমে কুয়েরি

303

JOIN SQL-এর একটি শক্তিশালী ফিচার যা একাধিক টেবিলের মধ্যে সম্পর্ক তৈরি করে এবং একযোগে ডাটা নির্বাচন করার জন্য ব্যবহৃত হয়। SQLite সহ অন্যান্য ডেটাবেস সিস্টেমে তিনটি প্রধান ধরনের JOIN রয়েছে: INNER JOIN, LEFT JOIN (বা LEFT OUTER JOIN), এবং RIGHT JOIN (বা RIGHT OUTER JOIN)।

এগুলোর মাধ্যমে আপনি একাধিক টেবিলের ডাটা যুক্ত (combine) করতে পারেন এবং বিভিন্ন ধরনের সম্পর্ক দেখতে পারেন। নিচে প্রতিটি JOIN-এর মাধ্যমে কুয়েরি করার পদ্ধতি দেওয়া হলো।


১. INNER JOIN

INNER JOIN দুটি টেবিলের মধ্যে সেই সব রেকর্ড বের করে যেগুলোর মধ্যে সম্পর্কিত কলামের মান মিলে। এর মাধ্যমে আপনি শুধুমাত্র সেই রেকর্ডগুলো পাবেন যেগুলোর মধ্যে মিল আছে।

উদাহরণ:

ধরা যাক, আমাদের দুটি টেবিল রয়েছে: employees এবং departments

employees টেবিল:

idnamedepartment_id
1Alice1
2Bob2
3Charlie1

departments টেবিল:

iddepartment_name
1HR
2IT

এখন আমরা INNER JOIN ব্যবহার করে কর্মচারীদের নাম এবং তাদের বিভাগের নাম দেখতে চাই।

SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;

আউটপুট:

namedepartment_name
AliceHR
BobIT
CharlieHR

এখানে শুধুমাত্র কর্মচারী এবং তাদের বিভাগের সম্পর্কিত রেকর্ডগুলো প্রদর্শিত হয়েছে, যেগুলোর মধ্যে মিল রয়েছে।


২. LEFT JOIN (বা LEFT OUTER JOIN)

LEFT JOIN (বা LEFT OUTER JOIN) বাম (left) টেবিলের সমস্ত রেকর্ড এবং ডান (right) টেবিলের মিল খুঁজে পাওয়া রেকর্ডগুলো দেখায়। যদি ডান টেবিলের সঙ্গে কোন মিল না থাকে, তবে বাম টেবিলের ডাটা এবং NULL শো করবে ডান টেবিলের জন্য।

উদাহরণ:

আমরা একই employees এবং departments টেবিল ব্যবহার করছি। এবার, আমরা LEFT JOIN ব্যবহার করে কর্মচারীদের নাম এবং তাদের বিভাগের নাম দেখতে চাই, এমনকি যদি কোনো কর্মচারী নির্দিষ্ট কোনো বিভাগের সাথে সম্পর্কিত না থাকে।

SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;

আউটপুট:

namedepartment_name
AliceHR
BobIT
CharlieHR
DaveNULL

এখানে Dave কর্মচারীর কোনো বিভাগ নেই, তাই NULL দেখানো হয়েছে department_name কলামে।


৩. RIGHT JOIN (বা RIGHT OUTER JOIN)

RIGHT JOIN (বা RIGHT OUTER JOIN) ডান (right) টেবিলের সমস্ত রেকর্ড এবং বাম (left) টেবিলের মিল খুঁজে পাওয়া রেকর্ডগুলো দেখায়। যদি বাম টেবিলের সঙ্গে মিল না থাকে, তবে ডান টেবিলের ডাটা এবং NULL শো করবে বাম টেবিলের জন্য।

উদাহরণ:

এখন, আমরা RIGHT JOIN ব্যবহার করব এবং টেবিলের নাম ও বিভাগ দেখতে চাই:

SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.id;

আউটপুট:

namedepartment_name
AliceHR
BobIT
CharlieHR
NULLSales

এখানে, Sales বিভাগের জন্য কোনো কর্মচারী নেই, তাই name কলামে NULL দেখানো হয়েছে।


সারাংশ

  • INNER JOIN: দুটি টেবিলের মধ্যে মিল থাকা রেকর্ডগুলো প্রদর্শন করে।
  • LEFT JOIN: বাম টেবিলের সমস্ত রেকর্ড এবং ডান টেবিলের মিল পাওয়া রেকর্ডগুলো প্রদর্শন করে। যদি ডান টেবিলের সাথে কোনো মিল না থাকে, তবে বাম টেবিলের রেকর্ড দেখানো হয় এবং ডান টেবিলের জন্য NULL থাকে।
  • RIGHT JOIN: ডান টেবিলের সমস্ত রেকর্ড এবং বাম টেবিলের মিল পাওয়া রেকর্ডগুলো প্রদর্শন করে। যদি বাম টেবিলের সাথে কোনো মিল না থাকে, তবে ডান টেবিলের রেকর্ড দেখানো হয় এবং বাম টেবিলের জন্য NULL থাকে।

JOIN অপারেশনগুলি ডাটাবেসে বিভিন্ন টেবিলের মধ্যে সম্পর্ক তৈরি করার জন্য খুবই গুরুত্বপূর্ণ এবং এটি ডেটা বিশ্লেষণ এবং রিপোর্ট তৈরি করতে ব্যবহৃত হয়।

Content added By

Aggregate Functions (COUNT, SUM, AVG, MIN, MAX)

330

SQLite-এ Aggregate Functions হল এমন ফাংশন যা একাধিক রেকর্ডের উপর কাজ করে এবং একটি ফলাফল প্রদান করে। এই ফাংশনগুলো সাধারণত GROUP BY কমান্ডের সাথে ব্যবহৃত হয়, কিন্তু এগুলো একক রেকর্ডের উপরেও কাজ করতে পারে। নিচে কিছু গুরুত্বপূর্ণ Aggregate Functions এবং তাদের ব্যবহার আলোচনা করা হলো:


১. COUNT() - মোট রেকর্ডের সংখ্যা গণনা

COUNT() ফাংশনটি একটি টেবিল বা কুয়েরিতে কতগুলো রেকর্ড বা সারি রয়েছে তা গণনা করে। এটি যেকোনো কলাম বা সারি সংখ্যার জন্য ব্যবহার করা যেতে পারে।

উদাহরণ:

SELECT COUNT(*) FROM users;

এই কুয়েরি users টেবিলের মোট সারির সংখ্যা গণনা করবে।

SELECT COUNT(age) FROM users;

এই কুয়েরি users টেবিলের age কলামে যতটি ভ্যালু রয়েছে, তার সংখ্যা গণনা করবে। এখানে NULL মানগুলো গণনা করা হবে না।


২. SUM() - মোট যোগফল

SUM() ফাংশনটি একটি নির্দিষ্ট কলামের সমস্ত মান যোগফল প্রদান করে। এটি সাধারণত সংখ্যাসূচক কলামের সাথে ব্যবহৃত হয়।

উদাহরণ:

SELECT SUM(age) FROM users;

এই কুয়েরি users টেবিলের age কলামের সমস্ত মান যোগফল হিসাব করবে।


৩. AVG() - গড় মান

AVG() ফাংশনটি একটি কলামের গড় মান প্রদান করে।

উদাহরণ:

SELECT AVG(age) FROM users;

এই কুয়েরি users টেবিলের age কলামের গড় মান প্রদান করবে।


৪. MIN() - সর্বনিম্ন মান

MIN() ফাংশনটি একটি কলামের সর্বনিম্ন মান প্রদান করে।

উদাহরণ:

SELECT MIN(age) FROM users;

এই কুয়েরি users টেবিলের age কলামের সর্বনিম্ন মান প্রদান করবে।


৫. MAX() - সর্বোচ্চ মান

MAX() ফাংশনটি একটি কলামের সর্বোচ্চ মান প্রদান করে।

উদাহরণ:

SELECT MAX(age) FROM users;

এই কুয়েরি users টেবিলের age কলামের সর্বোচ্চ মান প্রদান করবে।


Aggregate Functions এর ব্যবহার GROUP BY এর সাথে

GROUP BY কমান্ডের সাথে Aggregate Functions ব্যবহার করে আপনি প্রতিটি গ্রুপের জন্য একক ফলাফল পেতে পারেন।

উদাহরণ:

SELECT age, COUNT(*) FROM users GROUP BY age;

এই কুয়েরি users টেবিলের age কলামের প্রতিটি ইউনিক মানের জন্য কতটি রেকর্ড রয়েছে তা দেখাবে।

SELECT age, AVG(salary) FROM users GROUP BY age;

এই কুয়েরি users টেবিলের প্রতিটি age গ্রুপের গড় salary মান দেখাবে।


সারাংশ

SQLite-এ Aggregate Functions যেমন COUNT(), SUM(), AVG(), MIN(), এবং MAX() ব্যবহার করে আপনি একাধিক রেকর্ডের উপর বিভিন্ন গাণিতিক এবং পরিসংখ্যানিক কাজ করতে পারেন। এগুলো সাধারণত GROUP BY কমান্ডের সাথে ব্যবহৃত হয়, কিন্তু একক কলাম বা সারির ক্ষেত্রেও কার্যকর।

Content added By

GROUP BY এবং HAVING কুয়েরি

274

GROUP BY এবং HAVING SQL কুয়েরি ক্লজ দুইটি গুরুত্বপূর্ণ ফিচার যা ডাটাবেসের ডাটা গ্রুপিং এবং ফিল্টারিং করতে ব্যবহৃত হয়। এগুলি একসাথে ব্যবহার করলে, আপনি একটি টেবিলের ডাটাকে নির্দিষ্ট কলাম অনুসারে গ্রুপ করতে এবং গ্রুপের উপর ভিত্তি করে শর্ত প্রয়োগ করতে পারবেন।

GROUP BY ক্লজ

GROUP BY কুয়েরি একটি টেবিলের ডাটাকে একটি বা একাধিক কলাম ভিত্তিতে গ্রুপ করে, এবং আপনি এই গ্রুপগুলোর উপর গণনা বা অন্যান্য অপারেশন প্রয়োগ করতে পারেন (যেমন COUNT, SUM, AVG, MIN, MAX ইত্যাদি)।

উদাহরণ: GROUP BY ব্যবহার

ধরা যাক, আপনার একটি employees টেবিল আছে, যেটি নিম্নরূপ:

idnamedepartmentsalary
1AliceHR5000
2BobIT7000
3CharlieHR6000
4DavidIT8000
5EvaHR5500

এখন, আপনি যদি প্রতিটি বিভাগে কর্মীদের গড় বেতন বের করতে চান, তবে GROUP BY ব্যবহার করতে হবে।

SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department;

এটি প্রতি বিভাগ (HR, IT) এর জন্য গড় বেতন হিসাব করবে।


HAVING ক্লজ

HAVING কুয়েরি GROUP BY এর পরে ব্যবহৃত হয় এবং এটি গ্রুপের উপর শর্ত প্রয়োগ করতে ব্যবহৃত হয়। মূলত, HAVING হল WHERE ক্লজের সমকক্ষ, তবে WHERE কেবল রেকর্ডের ফিল্টারিংয়ের জন্য ব্যবহৃত হয়, আর HAVING গ্রুপের উপর শর্ত প্রয়োগ করে।

উদাহরণ: GROUP BY এবং HAVING ব্যবহার

ধরা যাক, আপনি এখন এমন বিভাগের গড় বেতন দেখতে চান, যেগুলোর গড় বেতন 6000 এর বেশি।

SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 6000;

এখানে, HAVING ক্লজটি GROUP BY গ্রুপগুলোর গড় বেতন 6000 এর বেশি এমন বিভাগের তথ্য ফিরিয়ে দেবে।


GROUP BY এবং HAVING এর মধ্যে পার্থক্য

  • GROUP BY: এটি ডাটাকে গ্রুপ করে (একাধিক রেকর্ডকে একত্রিত করে) এবং গ্রুপগুলোতে গণনা বা অন্যান্য অপারেশন চালায়।
  • HAVING: এটি GROUP BY এর পর ব্যবহৃত হয় এবং গ্রুপের উপর শর্ত প্রয়োগ করে (যেমন, গ্রুপের গড়, মোট বা অন্যান্য অপারেশনের উপর শর্তাবলী প্রয়োগ করা)।

সারাংশ

GROUP BY এবং HAVING SQL কুয়েরি দুটি খুবই শক্তিশালী ফিচার, যা ডাটাকে গ্রুপ করার এবং গ্রুপের উপর শর্ত প্রয়োগ করার জন্য ব্যবহৃত হয়। GROUP BY টেবিলের ডাটা গ্রুপ করতে সাহায্য করে, এবং HAVING গ্রুপ করা ডাটার ওপর শর্ত প্রয়োগ করতে ব্যবহৃত হয়।

Content added By

Subqueries এবং Nested Queries

428

Subqueries এবং Nested Queries হল দুটি SQL কৌশল যা একাধিক কুয়েরি একসাথে চালানোর জন্য ব্যবহৃত হয়। এরা মূল কুয়েরির মধ্যে আরেকটি কুয়েরি (একটি সাবকুয়েরি) ব্যবহার করে এবং এর মাধ্যমে আরো জটিল ডাটাবেস অপারেশন সম্পাদন করা সম্ভব হয়। SQLite এবং অন্যান্য SQL ডাটাবেস সিস্টেমে এগুলোর ব্যবহার অনেক গুরুত্বপূর্ণ।


Subqueries (সাবকুয়েরি)

Subquery বা সাবকুয়েরি হল একটি কুয়েরি যা অন্য কুয়েরির মধ্যে লেখা থাকে। এটি একটি প্রধান কুয়েরির (Main Query) অংশ হিসেবে কাজ করে এবং প্রধান কুয়েরি একটি সাবকুয়েরির ফলাফলের উপর ভিত্তি করে ডাটা নির্বাচন বা অন্য অপারেশন করতে পারে।

সাবকুয়েরি সাধারণত একটি SELECT, INSERT, UPDATE, অথবা DELETE কুয়েরির মধ্যে ব্যবহৃত হয় এবং এটি যে কুয়েরির মধ্যে রয়েছে সেই কুয়েরির ফলাফল হিসেবে ব্যবহৃত হয়।

Subquery এর সাধারণ সিনট্যাক্স:

SELECT column1, column2
FROM table_name
WHERE column1 IN (SELECT column_name FROM another_table WHERE condition);

উদাহরণ:

ধরা যাক, আমাদের একটি employees টেবিল আছে এবং সেখানে সকল কর্মচারীর তথ্য রয়েছে। আমরা জানি যে department_id ২ এর কর্মচারীদের সমস্ত নাম দেখতে চাই।

SELECT name
FROM employees
WHERE department_id IN (SELECT id FROM departments WHERE name = 'Sales');

এখানে:

  • প্রধান কুয়েরি employees টেবিল থেকে নাম নির্বাচন করছে যেখানে department_id সাবকুয়েরির ফলাফলের মধ্যে রয়েছে।
  • সাবকুয়েরি departments টেবিল থেকে সেই বিভাগের id নির্বাচন করছে যার নাম 'Sales'।

Nested Queries (নেস্টেড কুয়েরি)

Nested Query (নেস্টেড কুয়েরি) হল একটি কুয়েরি যা অন্য কুয়েরির মধ্যে লেখা থাকে, কিন্তু নেস্টেড কুয়েরি সবসময় সাবকুয়েরির মতো কাজ করে না। যদিও অনেক ক্ষেত্রে সাবকুয়েরি এবং নেস্টেড কুয়েরি একে অপরের সমার্থক, তবে নেস্টেড কুয়েরি সাধারণত কোনও আউটপুটের মধ্যে একটি কুয়েরি ব্যবহার করার মাধ্যমে কাজ করে।

সাধারণত, নেস্টেড কুয়েরি মানে একটি কুয়েরি যা অন্য কুয়েরির ভেতরে থাকে, যাকে একটি আউটপুট বা ফলাফল হিসেবে ব্যবহার করা হয়। একটি কুয়েরির মধ্যে অনেকগুলো সাবকুয়েরি থাকতে পারে, যা একে অন্যের সাথে সম্পর্কিত বা সম্পর্কহীন হতে পারে।

Nested Query এর সাধারণ সিনট্যাক্স:

SELECT column1
FROM table_name
WHERE column1 = (SELECT column_name FROM another_table WHERE condition);

উদাহরণ:

ধরা যাক, আমাদের দুটি টেবিল আছে — employees এবং departments। আমরা employees টেবিল থেকে তাদের নাম দেখতে চাই যাদের salary বেশি, তবে তাদের department_id IT বিভাগের সাথে সম্পর্কিত।

SELECT name
FROM employees
WHERE department_id = (SELECT id FROM departments WHERE name = 'IT') AND salary > 50000;

এখানে:

  • প্রধান কুয়েরি employees টেবিল থেকে কর্মচারীদের নাম নির্বাচন করছে, যেখানে salary ৫০,০০০ এর বেশি এবং তাদের department_id সাবকুয়েরির ফলাফলের সমান।
  • সাবকুয়েরি departments টেবিল থেকে 'IT' বিভাগের id নির্বাচন করছে।

Subqueries এবং Nested Queries এর মধ্যে পার্থক্য

  1. রূপ এবং ব্যবহার:
    • Subquery সাধারণত IN, EXISTS, ANY, বা ALL এর সাথে ব্যবহৃত হয় এবং একটি কুয়েরির ফলাফল হিসেবে ব্যবহৃত হয়।
    • Nested Query যেকোনো SQL কুয়েরির মধ্যে থাকতে পারে এবং সাধারণত WHERE ক্লজের মধ্যে ব্যবহৃত হয়।
  2. ফলাফল:
    • Subquery সাধারণত একাধিক ফলাফল বা একক মান প্রদান করতে পারে।
    • Nested Query একটি নির্দিষ্ট আউটপুট প্রদান করতে পারে যা অন্য কুয়েরির আউটপুট হিসেবে কাজ করে।

সারাংশ

Subqueries এবং Nested Queries উভয়ই SQL কুয়েরির মধ্যে অন্য কুয়েরি ব্যবহার করার কৌশল, যা জটিল ডাটাবেস অপারেশন এবং ডাটা ফিল্টারিং সহজ করে। এগুলি একাধিক কুয়েরির মধ্যে সম্পর্ক তৈরি করতে এবং কার্যকরীভাবে ডাটা পরিচালনা করতে সহায়তা করে।

Content added By
Promotion

Are you sure to start over?

Loading...