SQL Queries in HSQLDB

এইচএসকিউএলডিবি (HSQLDB) - Database Tutorials

350

HSQLDB (HyperSQL Database) সম্পূর্ণরূপে SQL সমর্থন করে, যার ফলে এটি ব্যবহারকারীদের বিভিন্ন ধরনের SQL কুয়েরি পরিচালনা করার সুযোগ দেয়। SQL (Structured Query Language) ব্যবহার করে ডেটাবেসে ডেটা অনুসন্ধান, আপডেট, এবং ম্যানিপুলেট করা হয়। HSQLDB-এ SQL কুয়েরি করার জন্য সমস্ত স্ট্যান্ডার্ড SQL কমান্ড এবং ফাংশন সমর্থিত।

এখানে HSQLDB-এ কিছু সাধারণ SQL কুয়েরি ব্যবহার এবং এর কার্যকারিতা সম্পর্কে আলোচনা করা হলো:


1. বেসিক SQL Queries (SELECT, INSERT, UPDATE, DELETE)

1.1 SELECT Query

SELECT কুয়েরি ডেটাবেস থেকে ডেটা রিট্রিভ করার জন্য ব্যবহৃত হয়। এটি সবচেয়ে সাধারণ SQL কুয়েরি।

উদাহরণ:

SELECT * FROM users;

এই কুয়েরিটি users টেবিলের সমস্ত রেকর্ড রিটার্ন করবে।

1.2 INSERT Query

INSERT কুয়েরি ডেটাবেসে নতুন রেকর্ড ইনসার্ট করতে ব্যবহৃত হয়।

উদাহরণ:

INSERT INTO users (id, name, age) VALUES (1, 'John Doe', 30);

এই কুয়েরিটি users টেবিলে একটি নতুন রেকর্ড ইনসার্ট করবে যার id 1, name 'John Doe' এবং age 30।

1.3 UPDATE Query

UPDATE কুয়েরি ডেটাবেসের একটি নির্দিষ্ট রেকর্ড আপডেট করতে ব্যবহৃত হয়।

উদাহরণ:

UPDATE users SET age = 31 WHERE id = 1;

এই কুয়েরিটি users টেবিলের id 1 সহ রেকর্ডটির age আপডেট করবে 31 এ।

1.4 DELETE Query

DELETE কুয়েরি ডেটাবেস থেকে রেকর্ড মুছে ফেলার জন্য ব্যবহৃত হয়।

উদাহরণ:

DELETE FROM users WHERE id = 1;

এই কুয়েরিটি users টেবিল থেকে id 1 সহ রেকর্ডটি মুছে ফেলবে।


2. Joins (INNER, OUTER) এবং Subqueries

2.1 INNER JOIN

INNER JOIN দুটি টেবিলের মধ্যে মিল থাকা রেকর্ডগুলোকে একত্রিত করে। এটি সাধারণত দুটি টেবিলের মধ্যে সম্পর্ক প্রতিষ্ঠার জন্য ব্যবহৃত হয়।

উদাহরণ:

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

এই কুয়েরিটি users এবং orders টেবিলের মধ্যে user_id এবং id এর মাধ্যমে মিলিত রেকর্ডগুলি রিটার্ন করবে।

2.2 LEFT OUTER JOIN

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

উদাহরণ:

SELECT users.name, orders.order_date
FROM users
LEFT OUTER JOIN orders ON users.id = orders.user_id;

এই কুয়েরিটি সমস্ত users রেকর্ড রিটার্ন করবে, এবং তাদের সাথে সম্পর্কিত orders রেকর্ড দেখাবে (যদি থাকে)।

2.3 Subquery

Subquery হল একটি কুয়েরি যা আরেকটি কুয়েরির মধ্যে ব্যবহৃত হয়। এটি সাধারণত একটি নির্দিষ্ট শর্তের মধ্যে ডেটা খুঁজে বের করতে ব্যবহৃত হয়।

উদাহরণ:

SELECT name, age
FROM users
WHERE id IN (SELECT user_id FROM orders WHERE order_date > '2024-01-01');

এই কুয়েরিটি users টেবিলের সেই সব name এবং age রিটার্ন করবে, যারা orders টেবিলে একটি নতুন অর্ডার করেছেন 2024 সালের 1 জানুয়ারির পর।


3. Aggregation এবং Grouping Functions

3.1 COUNT()

COUNT() ফাংশনটি একটি কলামে মোট রেকর্ডের সংখ্যা গণনা করে।

উদাহরণ:

SELECT COUNT(*) FROM users;

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

3.2 SUM()

SUM() ফাংশনটি একটি কলামে মোট মানের যোগফল বের করে।

উদাহরণ:

SELECT SUM(amount) FROM orders;

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

3.3 AVG()

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

উদাহরণ:

SELECT AVG(age) FROM users;

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

3.4 GROUP BY

GROUP BY কুয়েরি এক বা একাধিক কলাম অনুযায়ী রেকর্ডগুলোকে গ্রুপ করতে ব্যবহৃত হয়, এবং সাধারণত এটি অ্যাগ্রিগেট ফাংশনের সাথে ব্যবহৃত হয়।

উদাহরণ:

SELECT department, COUNT(*) FROM employees GROUP BY department;

এই কুয়েরিটি employees টেবিলের department অনুযায়ী গ্রুপ করবে এবং প্রতিটি বিভাগের মধ্যে কর্মীদের সংখ্যা রিটার্ন করবে।


4. বেসিক এবং Advanced SQL Functions

4.1 CASE WHEN

CASE ফাংশনটি শর্তাধীন লজিক প্রদান করতে ব্যবহৃত হয়।

উদাহরণ:

SELECT name, 
       CASE 
           WHEN age < 18 THEN 'Minor'
           WHEN age >= 18 AND age <= 60 THEN 'Adult'
           ELSE 'Senior'
       END AS age_group
FROM users;

এই কুয়েরিটি users টেবিলের age অনুযায়ী একটি শর্ত তৈরি করবে এবং age_group নামে একটি কলাম রিটার্ন করবে।

4.2 DISTINCT

DISTINCT কিওয়ার্ডটি ডুপ্লিকেট রেকর্ডগুলি সরিয়ে দেয় এবং একক মানগুলো রিটার্ন করে।

উদাহরণ:

SELECT DISTINCT department FROM employees;

এই কুয়েরিটি employees টেবিলের একক department মানগুলো রিটার্ন করবে, যেখানে ডুপ্লিকেট মান থাকবে না।


সারাংশ

HSQLDB-এ SQL কুয়েরি ব্যবহারের ক্ষেত্রে প্রচুর ক্ষমতা এবং ফিচার রয়েছে। এটি মৌলিক SQL অপারেশন যেমন SELECT, INSERT, UPDATE, DELETE থেকে শুরু করে, বিভিন্ন ধরণের জটিল কুয়েরি যেমন JOIN, SUBQUERY, এবং AGGREGATE ফাংশন পর্যন্ত সমর্থন করে। HSQLDB ব্যবহারকারীদের ডেটাবেস পরিচালনা এবং ডেটার উপর জটিল অপারেশন পরিচালনা করার জন্য সমস্ত মূল SQL কার্যকারিতা প্রদান করে।

Content added By

HSQLDB একটি রিলেশনাল ডেটাবেস ম্যানেজমেন্ট সিস্টেম, যা স্ট্যান্ডার্ড SQL সমর্থন করে। HSQLDB-এ বেসিক SQL কমান্ড যেমন SELECT, INSERT, UPDATE, এবং DELETE ব্যবহার করে ডেটাবেসের টেবিল থেকে ডেটা পড়া, নতুন ডেটা যোগ করা, ডেটা আপডেট করা এবং ডেটা মুছে ফেলা যায়।


উদাহরণ টেবিল: students

আমরা প্রথমে একটি সিম্পল টেবিল তৈরি করব, যেখানে শিক্ষার্থীদের তথ্য থাকবে।

CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT,
    grade VARCHAR(10)
);

টেবিল তৈরি করার পরে আমরা এর উপর বেসিক SQL কমান্ড প্রয়োগ করব।


INSERT Query

INSERT কমান্ড ব্যবহার করে টেবিলে নতুন ডেটা যোগ করা হয়।

উদাহরণ:

INSERT INTO students (id, name, age, grade) 
VALUES (1, 'Rahim', 20, 'A');

অন্য একটি উদাহরণ:

INSERT INTO students (id, name, age, grade) 
VALUES (2, 'Karim', 22, 'B');

ফলাফল: টেবিলে দুটি রেকর্ড যোগ করা হলো।


SELECT Query

SELECT কমান্ড ব্যবহার করে টেবিল থেকে ডেটা পড়া হয়। এটি নির্দিষ্ট কলাম বা পুরো টেবিল থেকে ডেটা রিটার্ন করতে পারে।

সমস্ত ডেটা রিড করতে:

SELECT * FROM students;

ফলাফল:

+----+-------+-----+-------+
| id | name  | age | grade |
+----+-------+-----+-------+
|  1 | Rahim |  20 | A     |
|  2 | Karim |  22 | B     |
+----+-------+-----+-------+

নির্দিষ্ট কলাম রিড করতে:

SELECT name, grade FROM students;

ফলাফল:

+-------+-------+
| name  | grade |
+-------+-------+
| Rahim | A     |
| Karim | B     |
+-------+-------+

WHERE ক্লজ ব্যবহার করে ফিল্টার করা:

SELECT * FROM students WHERE grade = 'A';

ফলাফল:

+----+-------+-----+-------+
| id | name  | age | grade |
+----+-------+-----+-------+
|  1 | Rahim |  20 | A     |
+----+-------+-----+-------+

UPDATE Query

UPDATE কমান্ড ব্যবহার করে টেবিলের ডেটা পরিবর্তন করা যায়।

উদাহরণ:

UPDATE students 
SET grade = 'A+' 
WHERE id = 1;

ফলাফল: id = 1 রেকর্ডের grade কলামটি 'A+' এ আপডেট হবে।

পুরো টেবিল আপডেট করতে:

UPDATE students 
SET grade = 'C';

DELETE Query

DELETE কমান্ড ব্যবহার করে টেবিল থেকে ডেটা মুছে ফেলা হয়।

উদাহরণ:

DELETE FROM students WHERE id = 2;

ফলাফল: id = 2 রেকর্ডটি মুছে ফেলা হবে।

পুরো টেবিলের ডেটা মুছে ফেলতে:

DELETE FROM students;

ফলাফল: students টেবিলের সমস্ত ডেটা মুছে যাবে। (তবে টেবিলটি থাকবে।)


সারাংশ

HSQLDB-এ বেসিক SQL কমান্ড ব্যবহার করে সহজে ডেটাবেস পরিচালনা করা যায়।

  • INSERT নতুন ডেটা যোগ করতে,
  • SELECT ডেটা পড়তে,
  • UPDATE বিদ্যমান ডেটা পরিবর্তন করতে, এবং
  • DELETE ডেটা মুছে ফেলতে ব্যবহৃত হয়।

এই কমান্ডগুলির সঠিক ব্যবহার HSQLDB ডেটাবেসের কার্যক্ষমতা বাড়ায় এবং ডেটা পরিচালনা সহজ করে।

Content added By

Joins এবং Subqueries SQL ডেটাবেসে ডেটা পুনরুদ্ধার এবং বিশ্লেষণ করার জন্য অত্যন্ত গুরুত্বপূর্ণ কৌশল। HSQLDB SQL:2011 স্ট্যান্ডার্ড অনুসরণ করে, যা এই দুটি ফিচার ব্যবহারে শক্তিশালী সমর্থন প্রদান করে। Joins ব্যবহার করে একাধিক টেবিলের ডেটা একত্রিত করা যায় এবং Subqueries ব্যবহার করে একটি প্রশ্নের ভিতরে আরও একটি প্রশ্ন চালানো যায়।


Joins

Joins হল একাধিক টেবিল থেকে ডেটা পুনরুদ্ধারের পদ্ধতি। এটি টেবিলগুলির মধ্যে সম্পর্ক স্থাপন করে এবং ডেটাকে একত্রিত করে।

INNER JOIN

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

উদাহরণ

employees এবং departments টেবিল:

employeesdepartments
employee_iddept_id
1101
2102
3103
SELECT e.employee_name, d.department_name
FROM employees e
INNER JOIN departments d
ON e.dept_id = d.dept_id;

ফলাফল:

employee_namedepartment_name
AliceHR
BobIT
CharlieSales

OUTER JOIN

OUTER JOIN তিন ধরনের হতে পারে:

  • LEFT JOIN: বাম দিকের টেবিলের সমস্ত রেকর্ড রাখে এবং ডান দিকের মিলযুক্ত রেকর্ড।
  • RIGHT JOIN: ডান দিকের টেবিলের সমস্ত রেকর্ড রাখে এবং বাম দিকের মিলযুক্ত রেকর্ড।
  • FULL JOIN: উভয় টেবিলের সমস্ত রেকর্ড রাখে, মিল থাকুক বা না থাকুক।
উদাহরণ: LEFT JOIN
SELECT e.employee_name, d.department_name
FROM employees e
LEFT JOIN departments d
ON e.dept_id = d.dept_id;

ফলাফল:

employee_namedepartment_name
AliceHR
BobIT
CharlieSales
উদাহরণ: FULL OUTER JOIN
SELECT e.employee_name, d.department_name
FROM employees e
FULL OUTER JOIN departments d
ON e.dept_id = d.dept_id;

ফলাফল (যদি departments এ অতিরিক্ত ডেটা থাকে):

employee_namedepartment_name
AliceHR
BobIT
CharlieSales
NULLMarketing

Subqueries

Subqueries হল এমন একটি কৌশল যেখানে একটি SQL প্রশ্নের ভিতরে আরেকটি SQL প্রশ্ন চালানো হয়। এটি জটিল ডেটা বিশ্লেষণ এবং পুনরুদ্ধারে ব্যবহৃত হয়।

উদাহরণ ১: WHERE-এ Subquery ব্যবহার

ধরা যাক, আমরা সেই কর্মচারীদের নাম বের করতে চাই যারা HR ডিপার্টমেন্টে কাজ করে।

SELECT employee_name
FROM employees
WHERE dept_id = (
    SELECT dept_id
    FROM departments
    WHERE department_name = 'HR'
);

ফলাফল:

employee_name
Alice

উদাহরণ ২: SELECT-এ Subquery ব্যবহার

সবচেয়ে বেশি কর্মচারী রয়েছে এমন ডিপার্টমেন্টের নাম বের করা:

SELECT department_name
FROM departments
WHERE dept_id = (
    SELECT dept_id
    FROM employees
    GROUP BY dept_id
    ORDER BY COUNT(*) DESC
    LIMIT 1
);

উদাহরণ ৩: FROM-এ Subquery ব্যবহার

সব ডিপার্টমেন্টের কর্মচারী সংখ্যা গণনা করা:

SELECT department_name, employee_count
FROM (
    SELECT d.department_name, COUNT(e.employee_id) AS employee_count
    FROM departments d
    LEFT JOIN employees e ON d.dept_id = e.dept_id
    GROUP BY d.department_name
) AS dept_summary;

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

বৈশিষ্ট্যJoinsSubqueries
ব্যবহারএকাধিক টেবিল থেকে ডেটা একত্রিত করাএকটি প্রশ্নের ভিতরে অন্য প্রশ্ন চালানো
পারফরম্যান্সসাধারণত দ্রুত (বিশেষ করে বড় ডেটাতে)জটিল হলে ধীর হতে পারে
সহজতানির্দিষ্ট সম্পর্কের জন্য সহজজটিল বিশ্লেষণের জন্য উপযোগী

সারাংশ

Joins এবং Subqueries SQL ডেটা ম্যানিপুলেশনের দুটি শক্তিশালী টুল। Joins ব্যবহার করে একাধিক টেবিলের ডেটা একত্রিত করা সম্ভব, যেখানে Subqueries একটি প্রশ্নের ভিতরে আরও একটি প্রশ্ন চালানোর সুযোগ দেয়। HSQLDB এ SQL:2011 স্ট্যান্ডার্ড সমর্থন থাকায় এই দুটি কৌশল সহজে এবং দক্ষতার সাথে ব্যবহার করা যায়।

Content added By

SQL-এ Aggregation Functions এবং Grouping Functions অত্যন্ত গুরুত্বপূর্ণ টুল, যা ডেটাবেসে সংরক্ষিত তথ্যের উপর গণনা, সংক্ষেপণ এবং বিশ্লেষণ করতে সাহায্য করে। এই ফাংশনগুলো বিভিন্ন ধরনের ডেটার উপর কাজ করে, যেমন সংখ্যা, তারিখ বা অন্যান্য ডেটা টাইপ, এবং এর মাধ্যমে বড় বড় ডেটাসেটকে আরও সহজ এবং কার্যকরভাবে বিশ্লেষণ করা সম্ভব হয়।


Aggregation Functions

Aggregation Functions সাধারণত এক বা একাধিক রেকর্ড থেকে একটি একক মান তৈরি করে। SQL-এ কিছু মৌলিক Aggregation Functions হলো:

1. COUNT()
COUNT() ফাংশন টেবিল বা কুয়েরিতে নির্দিষ্ট কলামের মধ্যে কতটি রেকর্ড রয়েছে তা গণনা করে। এটি একক বা সমস্ত রেকর্ডের সংখ্যা বের করতে ব্যবহৃত হয়।

SELECT COUNT(*) FROM Employee;

এই কুয়েরি Employee টেবিলের সমস্ত রেকর্ডের সংখ্যা প্রদান করবে।

2. SUM()
SUM() ফাংশন একটি নির্দিষ্ট কলামের সমস্ত মান যোগ করে। সাধারণত এটি সংখ্যাগত (numeric) ডেটার জন্য ব্যবহৃত হয়।

SELECT SUM(Salary) FROM Employee;

এই কুয়েরি Employee টেবিলের সমস্ত Salary মান যোগ করে মোট বেতন নির্ধারণ করবে।

3. AVG()
AVG() ফাংশন একটি নির্দিষ্ট কলামের গড় মান বের করে। এটি গণনা করতে ব্যবহৃত হয় সংখ্যাগুলির গড়।

SELECT AVG(Salary) FROM Employee;

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

4. MIN()
MIN() ফাংশন একটি কলামের সর্বনিম্ন মান প্রদান করে। এটি সাধারণত ব্যবহার করা হয় সেই ডেটার মধ্যে কমপ্লেক্স বা নূন্যতম মান বের করার জন্য।

SELECT MIN(Salary) FROM Employee;

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

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

SELECT MAX(Salary) FROM Employee;

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


Grouping Functions

GROUP BY ক্লজটি ব্যবহার করে, আপনি একাধিক রেকর্ডকে একটি গ্রুপে ভাগ করতে পারেন, এবং তারপর সেই গ্রুপের উপর Aggregation Functions প্রয়োগ করতে পারেন। এটি সাধারণত ব্যবহার করা হয় এক বা একাধিক কলামের মানের উপর ভিত্তি করে রেকর্ডগুলোকে গ্রুপ করতে এবং প্রতিটি গ্রুপের জন্য সমন্বিত ফলাফল বের করতে।

1. GROUP BY
GROUP BY ক্লজটি সাধারণত একটি বা একাধিক কলামের মান অনুযায়ী রেকর্ডগুলোকে গ্রুপে বিভক্ত করতে ব্যবহৃত হয়। এর পর, সেই গ্রুপের জন্য Aggregation Functions প্রয়োগ করা হয়।

SELECT Department, AVG(Salary) FROM Employee
GROUP BY Department;

এই কুয়েরি Employee টেবিলের Department অনুযায়ী গ্রুপিং করবে এবং প্রতিটি বিভাগে গড় বেতন (Salary) প্রদান করবে।

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

SELECT Department, AVG(Salary) FROM Employee
GROUP BY Department
HAVING AVG(Salary) > 50000;

এই কুয়েরি Employee টেবিলের Department অনুযায়ী গড় বেতন গ্রুপ করবে এবং শুধুমাত্র সেই সব বিভাগের জন্য ফলাফল দেখাবে, যেখানে গড় বেতন ৫০,০০০ এর বেশি।

3. COUNT() এবং GROUP BY
COUNT() ফাংশন ব্যবহার করে আপনি প্রতিটি গ্রুপের মধ্যে কতটি রেকর্ড রয়েছে তা জানতেও পারেন।

SELECT Department, COUNT(*) FROM Employee
GROUP BY Department;

এই কুয়েরি Employee টেবিলের Department অনুযায়ী গ্রুপ তৈরি করবে এবং প্রতিটি বিভাগের মধ্যে মোট কর্মচারী সংখ্যা প্রদান করবে।


Aggregation এবং Grouping Functions এর ব্যবহার

Aggregation এবং Grouping Functions আপনাকে ডেটার বৃহৎ পরিমাণে সঠিক তথ্য বের করতে সহায়ক। এসব ফাংশন ব্যবহার করে আপনি ডেটা বিশ্লেষণ এবং রিপোর্ট তৈরি করতে পারেন, যেমন:

  • বিভিন্ন বিভাগের গড় বেতন
  • নির্দিষ্ট সময়ের মধ্যে মোট বিক্রয়
  • একক কলামে সর্বোচ্চ বা সর্বনিম্ন মান
  • কোনো নির্দিষ্ট শর্তে গ্রুপ করা ডেটা

এই ফাংশনগুলো বিভিন্ন পরিসংখ্যান এবং বিশ্লেষণ প্রয়োজনীয়তাকে দ্রুত এবং সহজভাবে পরিচালনা করতে সহায়ক।


সারাংশ

Aggregation Functions (যেমন COUNT(), SUM(), AVG(), MIN(), MAX()) এবং Grouping Functions (যেমন GROUP BY, HAVING) SQL-এ ডেটাবেসের বিশ্লেষণ করার গুরুত্বপূর্ণ টুল। এগুলো ডেটা থেকে নির্দিষ্ট তথ্য বের করতে, গণনা করতে, এবং গ্রুপ করে ফলাফল প্রদর্শন করতে সাহায্য করে। এই ফাংশনগুলো ডেটাবেসে বিশ্লেষণাত্মক কুয়েরি তৈরির জন্য অত্যন্ত গুরুত্বপূর্ণ এবং কার্যকরী।

Content added By

SQL ফাংশন ডেটাবেস পরিচালনার জন্য অত্যন্ত গুরুত্বপূর্ণ। এগুলি ডেটা প্রসেসিং সহজ করে, জটিল গণনা সম্পন্ন করে এবং বিভিন্ন ধরণের অপারেশন চালাতে সাহায্য করে। SQL ফাংশন সাধারণত বেসিক ফাংশন এবং এডভান্সড ফাংশন-এ বিভক্ত।


বেসিক SQL Functions

১. অ্যাগ্রিগেট ফাংশন (Aggregate Functions)
অ্যাগ্রিগেট ফাংশন সাধারণত একাধিক রেকর্ড থেকে ডেটা সারসংক্ষেপ করতে ব্যবহৃত হয়।

  • SUM(): নির্দিষ্ট কলামের মান যোগ করে।

    SELECT SUM(salary) FROM employees;
    
  • AVG(): নির্দিষ্ট কলামের গড় মান প্রদান করে।

    SELECT AVG(salary) FROM employees;
    
  • COUNT(): মোট রেকর্ড বা নির্দিষ্ট কলামে নাল বাদে সংখ্যা গণনা করে।

    SELECT COUNT(*) FROM employees;
    
  • MAX(): নির্দিষ্ট কলামে সর্বোচ্চ মান প্রদান করে।

    SELECT MAX(salary) FROM employees;
    
  • MIN(): নির্দিষ্ট কলামে সর্বনিম্ন মান প্রদান করে।

    SELECT MIN(salary) FROM employees;
    

২. স্ট্রিং ফাংশন (String Functions)
স্ট্রিং ডেটার উপর বিভিন্ন অপারেশন চালাতে ব্যবহৃত হয়।

  • UPPER(): স্ট্রিং ডেটাকে বড় হাতের অক্ষরে রূপান্তর করে।

    SELECT UPPER(name) FROM employees;
    
  • LOWER(): স্ট্রিং ডেটাকে ছোট হাতের অক্ষরে রূপান্তর করে।

    SELECT LOWER(name) FROM employees;
    
  • CONCAT(): দুটি বা তার বেশি স্ট্রিং যোগ করে।

    SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;
    
  • LENGTH(): স্ট্রিং-এর দৈর্ঘ্য প্রদান করে।

    SELECT LENGTH(name) FROM employees;
    

৩. ডেট ফাংশন (Date Functions)
ডেট এবং সময় সম্পর্কিত ডেটার উপর কাজ করে।

  • NOW(): বর্তমান তারিখ এবং সময় প্রদান করে।

    SELECT NOW();
    
  • CURDATE(): বর্তমান তারিখ প্রদান করে।

    SELECT CURDATE();
    
  • DATEDIFF(): দুটি তারিখের মধ্যে পার্থক্য প্রদান করে।

    SELECT DATEDIFF('2024-12-31', '2024-01-01') AS days_diff;
    
  • YEAR(), MONTH(), DAY(): নির্দিষ্ট তারিখ থেকে বছর, মাস বা দিনের মান প্রদান করে।

    SELECT YEAR(hire_date) FROM employees;
    

এডভান্সড SQL Functions

১. উইন্ডো ফাংশন (Window Functions)
উইন্ডো ফাংশন নির্দিষ্ট রেকর্ড গ্রুপের উপর কাজ করে এবং প্রতিটি রেকর্ডের জন্য ফলাফল প্রদান করে।

  • ROW_NUMBER(): প্রতিটি রেকর্ডের জন্য অনন্য নম্বর প্রদান করে।

    SELECT ROW_NUMBER() OVER (ORDER BY salary DESC) AS rank, name, salary FROM employees;
    
  • RANK(): রেকর্ডের র‍্যাঙ্ক প্রদান করে (একই মানের জন্য একই র‍্যাঙ্ক)।

    SELECT RANK() OVER (ORDER BY salary DESC) AS rank, name FROM employees;
    
  • NTILE(): ডেটা নির্দিষ্ট গ্রুপে ভাগ করে।

    SELECT NTILE(4) OVER (ORDER BY salary) AS quartile, name FROM employees;
    

২. JSON ফাংশন
JSON ডেটার সাথে কাজ করার জন্য ফাংশন।

  • JSON_EXTRACT(): JSON ডেটা থেকে নির্দিষ্ট মান বের করে।

    SELECT JSON_EXTRACT(data, '$.key') FROM json_table;
    
  • JSON_ARRAY(): একটি JSON অ্যারে তৈরি করে।

    SELECT JSON_ARRAY('value1', 'value2');
    

৩. রিকার্সিভ ফাংশন (Recursive Functions)
রিকার্সিভ CTE (Common Table Expressions) ব্যবহার করে জটিল হায়ারার্কি বা রিকার্সিভ ডেটা হ্যান্ডল করা যায়।

WITH RECURSIVE hierarchy AS (
    SELECT employee_id, manager_id, name
    FROM employees
    WHERE manager_id IS NULL
    UNION ALL
    SELECT e.employee_id, e.manager_id, e.name
    FROM employees e
    INNER JOIN hierarchy h ON e.manager_id = h.employee_id
)
SELECT * FROM hierarchy;

৪. সেট অপারেশন ফাংশন (Set Operations)
একাধিক কুয়েরি থেকে ডেটা একত্রিত করার জন্য ব্যবহৃত হয়।

  • UNION: দুটি বা তার বেশি কুয়েরির ডেটা একত্রিত করে।

    SELECT name FROM employees
    UNION
    SELECT name FROM contractors;
    
  • INTERSECT: দুটি কুয়েরির সাধারণ ডেটা প্রদান করে।

    SELECT name FROM employees
    INTERSECT
    SELECT name FROM contractors;
    

৫. জটিল অ্যাগ্রিগেশন ফাংশন
জটিল ডেটা বিশ্লেষণের জন্য ব্যবহৃত হয়।

  • GROUP_CONCAT(): নির্দিষ্ট গ্রুপের মানগুলো একটি স্ট্রিংয়ে পরিণত করে।

    SELECT department, GROUP_CONCAT(name) AS employees
    FROM employees
    GROUP BY department;
    
  • PERCENT_RANK(): একটি মানের শতাংশ ভিত্তিক র‍্যাঙ্ক প্রদান করে।

    SELECT PERCENT_RANK() OVER (ORDER BY salary) AS percent_rank, name FROM employees;
    

সারাংশ

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

Content added By
Promotion

Are you sure to start over?

Loading...