Teradata SQL Basics

টেরাডেটা (Teradata) - Big Data and Analytics

392

Teradata SQL হল একটি শক্তিশালী প্রোগ্রামিং ভাষা যা ডেটাবেস পরিচালনার জন্য ব্যবহৃত হয়। এটি মূলত ডেটাবেস থেকে তথ্য (Data) বের করার জন্য ব্যবহৃত বিভিন্ন প্রশ্ন বা কমান্ড তৈরি করার জন্য ডিজাইন করা হয়েছে। Teradata SQL, অন্যান্য SQL ভাষার মতো, ডেটা ব্যবস্থাপনার জন্য বিভিন্ন ধরনের কমান্ড এবং কৌশল প্রস্তাব করে, কিন্তু এটি আরও কিছু নির্দিষ্ট ফিচার প্রদান করে যা বড় আকারের ডেটাবেস এবং ডিস্ট্রিবিউটেড সিস্টেমে কার্যকরী।


Teradata SQL এর মৌলিক কমান্ড

1. SELECT কমান্ড

Teradata SQL এ SELECT কমান্ড ব্যবহার করা হয় ডেটাবেস থেকে ডেটা বের করার জন্য। এটি অন্যান্য SQL কমান্ডের মধ্যে সবচেয়ে বেশি ব্যবহৃত হয়।

উদাহরণ:

SELECT * FROM employees;

এটি employees টেবিল থেকে সব কলাম এবং সব রেকর্ড ফেরত দেবে।

2. INSERT কমান্ড

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

উদাহরণ:

INSERT INTO employees (emp_id, emp_name, emp_salary) 
VALUES (101, 'John Doe', 50000);

এটি employees টেবিলে একটি নতুন রেকর্ড যোগ করবে।

3. UPDATE কমান্ড

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

উদাহরণ:

UPDATE employees
SET emp_salary = 55000
WHERE emp_id = 101;

এটি emp_id 101 এর জন্য emp_salary আপডেট করবে।

4. DELETE কমান্ড

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

উদাহরণ:

DELETE FROM employees
WHERE emp_id = 101;

এটি emp_id 101 এর রেকর্ড মুছে ফেলবে।


Teradata SQL এর বিশেষ বৈশিষ্ট্য

1. JOIN অপারেটর

Teradata SQL তে বিভিন্ন টেবিলের মধ্যে সম্পর্ক (relationship) তৈরি করতে JOIN অপারেটর ব্যবহার করা হয়। সাধারণত, INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN ব্যবহৃত হয়।

উদাহরণ (INNER JOIN):

SELECT e.emp_name, d.dept_name
FROM employees e
INNER JOIN departments d
ON e.dept_id = d.dept_id;

এটি employees এবং departments টেবিলের মধ্যে মিল রেখে ডেটা ফেরত দেবে।

2. GROUP BY এবং HAVING

GROUP BY ব্যবহৃত হয় গ্রুপিংয়ের জন্য, এবং HAVING ব্যবহৃত হয় গ্রুপের উপর শর্ত আরোপ করার জন্য।

উদাহরণ:

SELECT dept_id, AVG(emp_salary)
FROM employees
GROUP BY dept_id
HAVING AVG(emp_salary) > 50000;

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

3. Teradata SQL এর Aggregation Functions

Teradata SQL এ বিভিন্ন ধরনের অ্যাগ্রিগেট ফাংশন (Aggregate Functions) রয়েছে, যেমন COUNT(), SUM(), AVG(), MAX(), এবং MIN()। এই ফাংশনগুলো ডেটার উপর গণনা করার জন্য ব্যবহৃত হয়।

উদাহরণ:

SELECT COUNT(*) 
FROM employees;

এটি employees টেবিলে মোট কতটি রেকর্ড আছে তা গণনা করবে।


Teradata SQL এ পারফরম্যান্স অপটিমাইজেশন

Teradata SQL ব্যবহার করার সময় পারফরম্যান্স অপটিমাইজেশন একটি গুরুত্বপূর্ণ বিষয়। নিচে কিছু কৌশল দেয়া হলো যা SQL কোডের পারফরম্যান্স উন্নত করতে সাহায্য করতে পারে:

  • Indexing: টেবিলের উপর ইনডেক্স তৈরি করা ডেটার অনুসন্ধান দ্রুত করে।
  • Partitioning: বড় টেবিলগুলোকে ছোট ছোট ভাগে ভাগ করে ডেটা অ্যাক্সেসের গতি বাড়ানো হয়।
  • Avoiding Full Table Scans: পূর্ণ টেবিল স্ক্যান থেকে এড়িয়ে চলা এবং যথাযথ ফিল্টার প্রয়োগ করা।

সারাংশ

Teradata SQL হল একটি শক্তিশালী ডেটাবেস ভাষা যা বড় আকারের ডেটাবেস ব্যবস্থাপনা এবং বিশ্লেষণাত্মক উদ্দেশ্যে ব্যবহৃত হয়। SQL এর বিভিন্ন কমান্ড, যেমন SELECT, INSERT, UPDATE, DELETE, এবং বিশেষ ফিচারগুলি, যেমন JOIN এবং GROUP BY, Teradata SQL-কে কার্যকরী এবং দ্রুত ডেটাবেস পরিচালনার উপযোগী করে তোলে। Teradata SQL ব্যবহারকারীদের ডেটা পরিচালনার কার্যক্রম সহজ, দ্রুত এবং কার্যকরী করার জন্য উন্নত ফিচার প্রদান করে।

Content added By

SQL (Structured Query Language) হলো একটি স্ট্যান্ডার্ড ভাষা যা ডেটাবেস পরিচালনা করতে ব্যবহৃত হয়। টেরাডেটা (Teradata) SQL ব্যবহার করে ডেটা ম্যানেজমেন্ট এবং ডেটাবেস অপারেশন করতে সহায়তা করে। টেরাডেটায় সাধারণ SQL কুয়েরিগুলি যেমন SELECT, INSERT, UPDATE, এবং DELETE ডেটাবেসে বিভিন্ন কার্যক্রম সম্পাদন করতে ব্যবহৃত হয়।


SELECT Query

SELECT কুয়েরি ডেটাবেস থেকে ডেটা রিট্রিভ (retrieve) করতে ব্যবহৃত হয়। এটি টেবিলের নির্দিষ্ট কলাম অথবা সমস্ত কলাম নির্বাচন করতে পারে।

Syntax:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

উদাহরণ:

SELECT customer_id, first_name, last_name
FROM customers
WHERE city = 'Dhaka';

এটি customers টেবিল থেকে customer_id, first_name, এবং last_name কলামগুলোর মান বের করবে, যেখানে city কলামের মান 'Dhaka' হবে।


INSERT Query

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

Syntax:

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

উদাহরণ:

INSERT INTO customers (customer_id, first_name, last_name, city)
VALUES (1001, 'John', 'Doe', 'Dhaka');

এটি customers টেবিলের মধ্যে একটি নতুন রেকর্ড (customer_id, first_name, last_name, city) যুক্ত করবে।


UPDATE Query

UPDATE কুয়েরি ডেটাবেসের একটি বা একাধিক রেকর্ডের মান পরিবর্তন করার জন্য ব্যবহৃত হয়।

Syntax:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

উদাহরণ:

UPDATE customers
SET city = 'Chittagong'
WHERE customer_id = 1001;

এটি customers টেবিলের customer_id 1001 যাদের আছে, তাদের city কলামের মান 'Chittagong' দিয়ে আপডেট করবে।


DELETE Query

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

Syntax:

DELETE FROM table_name
WHERE condition;

উদাহরণ:

DELETE FROM customers
WHERE customer_id = 1001;

এটি customers টেবিল থেকে customer_id 1001 এর রেকর্ডটি মুছে ফেলবে।


সারাংশ

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

Content added By

ডেটা টাইপস (Data Types)

টেরাডেটা ডেটাবেসে ডেটা স্টোর করার জন্য বিভিন্ন ধরনের ডেটা টাইপস ব্যবহার করা হয়। প্রতিটি ডেটা টাইপ ডেটার ধরন ও আকার অনুযায়ী নির্বাচিত হয়। টেরাডেটাতে ডেটা টাইপ দুটি প্রধান শ্রেণীতে বিভক্ত: ভেরিয়েবল-লেংথ (Variable Length) এবং ফিক্সড-লেংথ (Fixed Length)

১. ফিক্সড-লেংথ ডেটা টাইপস (Fixed-Length Data Types)

এগুলি এমন ডেটা টাইপ যা নির্দিষ্ট আকারের ডেটা ধারণ করতে পারে। কিছু সাধারণ ফিক্সড-লেংথ ডেটা টাইপ হল:

  • INTEGER (INTEGER): পূর্ণসংখ্যা স্টোর করার জন্য ব্যবহৃত হয়।
  • DECIMAL (DECIMAL or NUMERIC): নির্দিষ্ট দশমিক স্থানসহ সংখ্যা সঞ্চয় করার জন্য ব্যবহৃত হয়। এটি আর্থিক হিসাব-নিকাশের জন্য ব্যবহার হয়।
  • DATE (DATE): একটি নির্দিষ্ট তারিখ সংরক্ষণ করে, যেমন 'YYYY-MM-DD' ফরম্যাটে।
  • CHAR (CHARACTER): নির্দিষ্ট দৈর্ঘ্যের অক্ষর স্টোর করার জন্য ব্যবহৃত হয়।
  • BYTE (BYTE): বাইনারি ডেটা (যেমন ইমেজ বা ফাইল) সংরক্ষণের জন্য ব্যবহৃত হয়।

২. ভেরিয়েবল-লেংথ ডেটা টাইপস (Variable-Length Data Types)

এগুলি এমন ডেটা টাইপ যা আকারে পরিবর্তনশীল, অর্থাৎ তাদের আকার ডেটার পরিমাণের উপর নির্ভর করে। কিছু সাধারণ ভেরিয়েবল-লেংথ ডেটা টাইপ হল:

  • VARCHAR (Variable Character): এটি পরিবর্তনশীল দৈর্ঘ্যের অক্ষর সংরক্ষণ করতে ব্যবহৃত হয়।
  • CLOB (Character Large Object): বড় আকারের অক্ষর ডেটা (যেমন টেক্সট ফাইল) সংরক্ষণের জন্য ব্যবহৃত হয়।
  • BLOB (Binary Large Object): বাইনারি ডেটা (যেমন ছবি, অডিও) সংরক্ষণের জন্য ব্যবহৃত হয়।

৩. ফ্লোটিং-পয়েন্ট ডেটা টাইপস (Floating-Point Data Types)

এগুলি দশমিক সহ সংখ্যা স্টোর করার জন্য ব্যবহৃত হয়, এবং গাণিতিক গণনার জন্য বেশ উপযোগী।

  • FLOAT: দশমিক সংখ্যা সংরক্ষণের জন্য ব্যবহৃত হয়, কিন্তু নির্দিষ্ট সঠিকতা না থাকায় এটি কিছুটা অনিশ্চিত হতে পারে।
  • DOUBLE PRECISION: FLOAT এর মতো, তবে আরো বেশি সঠিকতা প্রদান করে।

৪. টাইম এবং টাইমস্ট্যাম্প (Time and Timestamp)

এই ডেটা টাইপস বিশেষভাবে সময় এবং তারিখের সাথে সম্পর্কিত ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়।

  • TIME (TIME): শুধুমাত্র সময় সংরক্ষণ করে, যেমন 'HH:MM:SS' ফরম্যাটে।
  • TIMESTAMP (TIMESTAMP): সময় এবং তারিখ একত্রে সংরক্ষণ করে, যেমন 'YYYY-MM-DD HH:MM:SS' ফরম্যাটে।

কলাম অ্যাট্রিবিউটস (Column Attributes)

টেরাডেটা ডেটাবেসে কলামগুলো নির্দিষ্ট কিছু অ্যাট্রিবিউট দ্বারা বর্ণিত হয়। এগুলো ডেটার প্রক্রিয়া এবং পরিচালনা সহজতর করে। কিছু সাধারণ কলাম অ্যাট্রিবিউটস হল:

১. NOT NULL

এই অ্যাট্রিবিউট দ্বারা কলামটি নির্দেশ করে যে, এই কলামে কখনও null (শূন্য) মান থাকতে পারবে না। এটি কলামের ডেটা ইন্টিগ্রিটি নিশ্চিত করতে সাহায্য করে।

২. DEFAULT

ডিফল্ট মান (Default Value) নির্ধারণ করে, যদি কোন নতুন রেকর্ডের জন্য কলামের মান নির্ধারিত না হয়, তাহলে ওই কলামে ডিফল্ট মান প্রবিষ্ট হবে।

৩. UNIQUE

এই অ্যাট্রিবিউট দ্বারা একটি কলামের মধ্যে প্রতিটি মান অবশ্যই অনন্য হতে হবে, অর্থাৎ কোনো দুটি রেকর্ডে একই মান থাকতে পারবে না।

৪. PRIMARY KEY

এই অ্যাট্রিবিউট একটি কলাম বা কলামসমূহকে শনাক্তকারী (identifier) হিসেবে ব্যবহার করে, যাতে একটি রেকর্ড অন্য সকল রেকর্ড থেকে আলাদা এবং একচেটিয়া থাকে।

৫. FOREIGN KEY

ফরেইন কি একটি কলাম বা কলামসমূহের সেট যা অন্য একটি টেবিলের প্রাইমারি কির সাথে সম্পর্কিত থাকে। এটি ডেটা ইন্টিগ্রিটি বজায় রাখে এবং সম্পর্কিত টেবিলের মধ্যে সংযোগ স্থাপন করে।

৬. CHECK

এই অ্যাট্রিবিউট একটি শর্ত নির্ধারণ করে, যাতে কলামে শুধুমাত্র নির্দিষ্ট ধরনের মান প্রবিষ্ট হয়। উদাহরণস্বরূপ, একটি কলামে যদি বয়স রাখা হয়, তবে এটি নিশ্চিত করতে হবে যে বয়স ১৮ এর বেশি হতে হবে।

৭. INDEX

ইন্ডেক্স অ্যাট্রিবিউট কলামের জন্য একটি দ্রুত অনুসন্ধান ক্ষমতা সৃষ্টি করে। এটি কলামের উপর ভিত্তি করে ডেটাবেসের পারফরম্যান্স উন্নত করতে সাহায্য করে।


সারাংশ

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

Content added By

Teradata SQL এর বিভিন্ন কমান্ড এবং ক্লজ (clauses) ব্যবহার করে ডেটা ফিল্টার করা এবং সংগঠিত করা যায়। এর মধ্যে WHERE, GROUP BY, এবং HAVING ক্লজ বেশ গুরুত্বপূর্ণ। এই ক্লজগুলো ব্যবহৃত হয় ডেটার উপর শর্ত আরোপ করতে, গ্রুপিং করতে এবং গ্রুপের উপর শর্ত আরোপ করতে। নিচে প্রতিটি ক্লজের ব্যাখ্যা দেওয়া হলো:


WHERE Clause

WHERE ক্লজ ব্যবহৃত হয় রেকর্ড বা রো (row) নির্বাচন করার জন্য যেগুলোর উপর নির্দিষ্ট শর্ত বা ফিল্টার প্রয়োগ করা হয়। এটি ডেটাবেস থেকে শুধুমাত্র প্রয়োজনীয় ডেটা নিয়ে আসে এবং ফলস্বরূপ কম তথ্য পাওয়া যায়, যা কার্যকরী বিশ্লেষণের জন্য প্রয়োজনীয়।

Syntax:

SELECT column1, column2
FROM table_name
WHERE condition;

উদাহরণ:

ধরা যাক, আপনার একটি টেবিল রয়েছে যার নাম employees এবং সেখানে কর্মচারীদের নাম এবং তাদের বয়স সংরক্ষিত আছে। আপনি যদি ৩০ বছর বা তার বেশি বয়সী কর্মচারীদের নাম দেখতে চান, তাহলে কোডটি হবে:

SELECT name, age
FROM employees
WHERE age >= 30;

এখানে, WHERE age >= 30 শর্তটি ফিল্টার করবে এবং ৩০ বছরের বেশি বয়সী কর্মচারীদের ডেটা দেখাবে।


GROUP BY Clause

GROUP BY ক্লজ ব্যবহার করা হয় ডেটাকে গ্রুপ করার জন্য, সাধারণত অ্যাগ্রিগেট ফাংশনের (যেমন COUNT, SUM, AVG, MAX, MIN) সাথে। এটি নির্দিষ্ট কলামের ভিত্তিতে ডেটাকে গ্রুপ করে এবং গ্রুপভিত্তিক সারণী তৈরি করে।

Syntax:

SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;

উদাহরণ:

আপনার employees টেবিলের মধ্যে প্রতি বিভাগের (department) কর্মচারীদের মোট সংখ্যা জানার জন্য আপনি GROUP BY ক্লজ ব্যবহার করতে পারেন:

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

এখানে, GROUP BY department ক্লজ বিভাগ অনুযায়ী কর্মচারীদের সংখ্যা গ্রুপ করবে এবং COUNT(*) ফাংশন দিয়ে প্রতিটি বিভাগের কর্মচারীর সংখ্যা দেখাবে।


HAVING Clause

HAVING ক্লজ ব্যবহার করা হয় GROUP BY এর সাথে গ্রুপগুলোর উপর শর্ত আরোপ করতে। এটি মূলত WHERE ক্লজের মতো কাজ করে, তবে HAVING গ্রুপগুলোর উপর শর্ত প্রয়োগ করে, যেখানে WHERE রো (row) গুলোর উপর শর্ত প্রয়োগ করে।

Syntax:

SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1
HAVING condition;

উদাহরণ:

আপনি যদি উপরের উদাহরণ থেকে শুধুমাত্র সেই বিভাগগুলো দেখতে চান যেখানে কর্মচারীর সংখ্যা ৫ এর বেশি, তাহলে HAVING ক্লজ ব্যবহার করতে হবে:

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

এখানে, HAVING COUNT(*) > 5 শর্তটি গ্রুপভিত্তিক ফিল্টার প্রয়োগ করবে এবং শুধুমাত্র সেই বিভাগগুলো দেখাবে যাদের কর্মচারী সংখ্যা ৫ বা তার বেশি।


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

  • WHERE: ডেটা ফিল্টার করতে ব্যবহৃত হয়, এটি GROUP BY এর আগে প্রয়োগ করা হয় এবং রো (row) এর উপর শর্ত আরোপ করে।
  • GROUP BY: ডেটাকে নির্দিষ্ট কলামের ভিত্তিতে গ্রুপ করে এবং সাধারণত অ্যাগ্রিগেট ফাংশনের সাথে ব্যবহৃত হয়।
  • HAVING: গ্রুপের উপর শর্ত আরোপ করতে ব্যবহৃত হয়, এটি GROUP BY এর পরে প্রয়োগ করা হয় এবং সাধারণত অ্যাগ্রিগেট ফাংশনের ফলস্বরূপ শর্ত আরোপ করতে ব্যবহৃত হয়।

সারাংশ

  • WHERE ক্লজ ডেটাকে ফিল্টার করে একাধিক রো এর মধ্যে শর্তের ভিত্তিতে ডেটা নির্বাচন করতে ব্যবহৃত হয়।
  • GROUP BY ক্লজ ডেটাকে গ্রুপ করে এবং গ্রুপভিত্তিক বিশ্লেষণ বা অ্যাগ্রিগেট ফাংশন প্রয়োগ করতে ব্যবহৃত হয়।
  • HAVING ক্লজ GROUP BY এর সাথে ব্যবহার করা হয় এবং গ্রুপগুলোর ওপর শর্ত আরোপ করে।

এই তিনটি ক্লজের সঠিক ব্যবহার ডেটা বিশ্লেষণে সাহায্য করে এবং একে অপরের সাথে একত্রে কার্যকরীভাবে কাজ করে।

Content added By

Teradata একটি রিলেশনাল ডেটাবেস ম্যানেজমেন্ট সিস্টেম (RDBMS) এবং এতে JOINs ও Subqueries এর মাধ্যমে ডেটা সম্পর্কিত বিভিন্ন প্রশ্নের সমাধান করা হয়। JOINs এবং Subqueries দুটি শক্তিশালী টুল যা ডেটাবেস থেকে ডেটা একত্রিত বা বিশ্লেষণ করতে সহায়তা করে।


JOINs এর ব্যবহার

JOIN হল দুটি বা তার বেশি টেবিলের মধ্যে সম্পর্ক স্থাপন করার একটি SQL পদ্ধতি, যেখানে একটি সাধারণ কলামের মাধ্যমে টেবিলগুলোকে যুক্ত করা হয়। Teradata তে বিভিন্ন ধরনের JOIN ব্যবহার করা যেতে পারে, যা ডেটাকে একত্রিত করতে বা ফিল্টার করতে সহায়তা করে।

1. INNER JOIN

INNER JOIN দুটি টেবিলের মধ্যে শুধুমাত্র মিল থাকা রেকর্ডগুলোকেই ফেরত দেয়। অর্থাৎ, যদি দুটি টেবিলের মধ্যে কোনো সম্পর্ক না থাকে তবে সেই রেকর্ডগুলো রিটার্ন করা হয় না।

উদাহরণ:

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

এখানে, employees এবং departments টেবিলকে department_id কলামের মাধ্যমে যুক্ত করা হয়েছে এবং শুধু তাদের মিল থাকা রেকর্ডগুলো দেখানো হবে।

2. LEFT JOIN (LEFT OUTER JOIN)

LEFT JOIN প্রথম টেবিলের সমস্ত রেকর্ড এবং দ্বিতীয় টেবিলের মিল থাকা রেকর্ডগুলো ফেরত দেয়। যদি দ্বিতীয় টেবিলে মিল না থাকে, তবে NULL মান ফেরত আসে।

উদাহরণ:

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

এখানে, employees টেবিলের সমস্ত রেকর্ড এবং তাদের সাথে মিলে যাওয়া departments টেবিলের রেকর্ডগুলো পাওয়া যাবে। যদি কোনো employee এর জন্য কোনো department না থাকে, তবে সেই employee এর জন্য department_name NULL হবে।

3. RIGHT JOIN (RIGHT OUTER JOIN)

RIGHT JOIN ঠিক উল্টোভাবে কাজ করে, যেখানে দ্বিতীয় টেবিলের সমস্ত রেকর্ড এবং প্রথম টেবিলের মিল থাকা রেকর্ডগুলো ফেরত দেওয়া হয়।

উদাহরণ:

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

এখানে, departments টেবিলের সমস্ত রেকর্ড এবং তাদের সাথে মিলে যাওয়া employees টেবিলের রেকর্ডগুলো দেখা যাবে।

4. FULL JOIN (FULL OUTER JOIN)

FULL JOIN দুটি টেবিলের সমস্ত রেকর্ড ফিরিয়ে দেয়, যেখানে মিল না থাকলে NULL মান দেখানো হয়।

উদাহরণ:

SELECT employees.employee_id, employees.name, departments.department_name
FROM employees
FULL JOIN departments
ON employees.department_id = departments.department_id;

এখানে, উভয় টেবিলের সমস্ত রেকর্ড দেখানো হবে, এবং যেখানে কোনো মিল নেই সেখানে NULL থাকবে।


Subqueries এর ব্যবহার

Subquery হল একটি SQL কুয়েরি যা অন্য একটি কুয়েরির মধ্যে ব্যবহার করা হয়। এটি মূল কুয়েরির ডেটা প্রক্রিয়াকরণে সহায়তা করে এবং সাধারণত WHERE, FROM বা SELECT ক্লজে ব্যবহার করা হয়। Teradata তে Subqueries ব্যবহার করা হয় বিভিন্ন স্তরের ডেটা বিশ্লেষণ বা ফিল্টার করার জন্য।

1. WHERE ক্লজে Subquery

Subquery মূল কুয়েরির WHERE ক্লজে ব্যবহার করা হয়, যাতে একটি নির্দিষ্ট শর্তের ভিত্তিতে রেকর্ড নির্বাচন করা যায়।

উদাহরণ:

SELECT employee_id, name
FROM employees
WHERE department_id IN (SELECT department_id FROM departments WHERE department_name = 'Sales');

এখানে, প্রথম কুয়েরি employees টেবিল থেকে শুধুমাত্র সেই রেকর্ডগুলো নির্বাচন করবে, যেখানে department_id Sales বিভাগের সাথে মেলে।

2. FROM ক্লজে Subquery

Subquery কে মূল কুয়েরির FROM ক্লজে ব্যবহার করে একটি অন্তর্নিহিত টেবিল হিসেবে ব্যবহার করা হয়।

উদাহরণ:

SELECT department_name, AVG(salary)
FROM (SELECT employees.salary, departments.department_name 
      FROM employees
      INNER JOIN departments ON employees.department_id = departments.department_id) AS dept_salaries
GROUP BY department_name;

এখানে, একটি Subquery প্রথমে employees এবং departments টেবিলকে JOIN করে এবং তারপর মূল কুয়েরি সেই ডেটার উপর গড় বেতন (AVG) হিসাব করে।

3. SELECT ক্লজে Subquery

SELECT ক্লজে Subquery ব্যবহার করে একটি একক মান বা ফলাফল নির্বাচন করা যায়।

উদাহরণ:

SELECT employee_id, name, (SELECT MAX(salary) FROM employees) AS max_salary
FROM employees;

এখানে, Subquery employees টেবিল থেকে সর্বোচ্চ বেতন (MAX salary) বের করবে এবং সেই মানকে মূল কুয়েরির সাথে যোগ করবে।

4. Correlated Subquery

Correlated Subquery এমন একটি Subquery, যা মূল কুয়েরির প্রতিটি রেকর্ডের জন্য পুনরায় চালানো হয় এবং মূল কুয়েরির কলামের মানের সাথে সম্পর্কিত হয়।

উদাহরণ:

SELECT employee_id, name
FROM employees e
WHERE salary > (SELECT AVG(salary) FROM employees WHERE department_id = e.department_id);

এখানে, প্রতিটি employee এর বেতন department_id এর গড় বেতনের তুলনায় বেশি কিনা, তা যাচাই করা হচ্ছে। Subquery প্রতিটি employee এর জন্য পুনরায় গড় বেতন বের করবে।


সারাংশ

Teradata তে JOINs এবং Subqueries ডেটাবেস থেকে ডেটা বিশ্লেষণ এবং একত্রিত করার জন্য অত্যন্ত গুরুত্বপূর্ণ টুল। JOINs টেবিলের মধ্যে সম্পর্ক স্থাপন করে বিভিন্ন ধরণের তথ্য একত্রিত করতে সাহায্য করে, যেমন INNER JOIN, LEFT JOIN, RIGHT JOIN, এবং FULL JOIN। অপরদিকে, Subqueries মূল কুয়েরিতে অন্তর্নিহিত কুয়েরি হিসেবে ব্যবহৃত হয় এবং বিভিন্ন ধাপে ডেটা ফিল্টার, বিশ্লেষণ এবং প্রক্রিয়া করতে সহায়তা করে। Subqueries সাধারণত WHERE, FROM, অথবা SELECT ক্লজে ব্যবহার করা হয় এবং প্রয়োজনে Correlated Subqueries দিয়েও গঠন করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...