अध्याय 6: जोड़ (Joins)

अध्याय 6: जोड़ (Joins)

डेटाबेस में जोड़ (Joins) एक शक्तिशाली तकनीक है, जो हमें विभिन्न टेबल्स के डेटा को एक साथ मिलाने और विश्लेषण करने की अनुमति देती है। यह ऑपरेशन डेटाबेस मैनेजमेंट का एक महत्वपूर्ण हिस्सा है, क्योंकि वास्तविक दुनिया के डेटाबेस अक्सर कई टेबल्स में विभाजित होते हैं। इस अध्याय में, हम विभिन्न प्रकार के जोड़ों को समझेंगे, जैसे INNER JOIN, LEFT JOIN, RIGHT JOIN, और FULL JOIN। हम जानेंगे कि कैसे इन जोड़ों का उपयोग करके टेबल्स के बीच संबंध स्थापित किया जा सकता है और समग्र डेटा को प्रभावी ढंग से रिट्रीव किया जा सकता है। इस अध्याय के अंत तक, आप डेटाबेस क्वेरीज में जोड़ों का उपयोग करने में आत्मविश्वास महसूस करेंगे और अधिक जटिल डेटा सेट्स के साथ काम कर पाएंगे।

INNER JOIN: दो टेबल्स को जोड़ना

INNER JOIN SQL में सबसे सामान्य और व्यापक रूप से उपयोग होने वाला JOIN प्रकार है। इसका उपयोग दो या अधिक टेबल्स के रिकॉर्ड्स को जोड़ने के लिए किया जाता है, जिनके बीच एक सामान्य कॉलम होता है। INNER JOIN केवल उन रिकॉर्ड्स को रिट्रीव करता है, जिनके बीच दोनों टेबल्स में मेल खाते हुए वैल्यूज होते हैं।

सिंटैक्स (Syntax)

INNER JOIN का सामान्य सिंटैक्स निम्नलिखित है:

SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
INNER JOIN table2
ON table1.common_column = table2.common_column;

उदाहरण (Example)

मान लीजिए हमारे पास दो टेबल्स हैं:

  1. students टेबल जिसमें छात्रों की जानकारी है:
    • id
    • name
    • class_id
  2. classes टेबल जिसमें कक्षाओं की जानकारी है:
    • id
    • class_name

हम इन दो टेबल्स को class_id और id कॉलम्स के आधार पर INNER JOIN करेंगे।

क्वेरी (Query):

SELECT students.name, classes.class_name
FROM students
INNER JOIN classes ON students.class_id = classes.id;

परिणाम (Result): इस क्वेरी से हमें उन छात्रों के नाम और उनकी कक्षाओं के नाम मिलेंगे, जिनकी कक्षाओं का विवरण classes टेबल में मौजूद है।

विस्तृत उदाहरण (Detailed Example)

1. डेटाबेस निर्माण (Creating Database and Tables):

CREATE DATABASE school;

USE school;

CREATE TABLE students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    class_id INT
);

CREATE TABLE classes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    class_name VARCHAR(100) NOT NULL
);

2. डेटा सम्मिलन (Inserting Data):

INSERT INTO students (name, class_id)
VALUES 
('John Doe', 1),
('Jane Smith', 2),
('Sam Brown', 1),
('Lucy White', 3);

INSERT INTO classes (class_name)
VALUES 
('Mathematics'),
('Science'),
('History');

3. INNER JOIN का उपयोग (Using INNER JOIN):

SELECT students.name, classes.class_name
FROM students
INNER JOIN classes
ON students.class_id = classes.id;

परिणाम (Result):

nameclass_name
John DoeMathematics
Sam BrownMathematics
Jane SmithScience
Lucy WhiteHistory

महत्वपूर्ण बातें (Important Considerations)

  • मेल खाते रिकॉर्ड्स (Matching Records): INNER JOIN केवल मेल खाते रिकॉर्ड्स को रिट्रीव करता है। यदि किसी टेबल में कोई मेल खाता रिकॉर्ड नहीं है, तो वह रिकॉर्ड रिजल्ट सेट में शामिल नहीं होगा।
  • एकाधिक जोड़ (Multiple Joins): आप एक ही क्वेरी में एक से अधिक टेबल्स को जोड़ सकते हैं।
  • टेबल एलियस (Table Aliases): जॉइन क्वेरी को और स्पष्ट बनाने के लिए आप टेबल एलियस का उपयोग कर सकते हैं।

टेबल एलियस का उपयोग (Using Table Aliases):

SELECT s.name, c.class_name
FROM students s
INNER JOIN classes c
ON s.class_id = c.id;

INNER JOIN SQL में दो या अधिक टेबल्स को जोड़ने और केवल मेल खाते हुए रिकॉर्ड्स को रिट्रीव करने के लिए एक महत्वपूर्ण ऑपरेशन है। इस सेक्शन में, आपने INNER JOIN के सिंटैक्स और उपयोग के विभिन्न उदाहरणों को सीखा। INNER JOIN का सही उपयोग करके, आप विभिन्न टेबल्स से संबंधित डेटा को प्रभावी ढंग से एकत्रित और विश्लेषित कर सकते हैं।

LEFT JOIN: सभी पंक्तियों के साथ काम करना

LEFT JOIN SQL में एक महत्वपूर्ण ऑपरेशन है, जो हमें दो या अधिक टेबल्स के डेटा को जोड़ने की अनुमति देता है। यह JOIN प्रकार हमें एक टेबल की सभी पंक्तियों को, दूसरी टेबल में मेल खाने वाले रिकॉर्ड्स के साथ, और उन पंक्तियों को भी शामिल करने की सुविधा देता है जिनके लिए कोई मेल खाने वाला रिकॉर्ड नहीं है। यह विशेष रूप से उपयोगी होता है जब हमें सुनिश्चित करना होता है कि बाईं टेबल की सभी पंक्तियाँ क्वेरी के परिणाम में शामिल हों।

सिंटैक्स (Syntax)

LEFT JOIN का सामान्य सिंटैक्स निम्नलिखित है:

SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
LEFT JOIN table2
ON table1.common_column = table2.common_column;

उदाहरण (Example)

मान लीजिए हमारे पास दो टेबल्स हैं:

  1. students टेबल जिसमें छात्रों की जानकारी है:
    • id
    • name
    • class_id
  2. classes टेबल जिसमें कक्षाओं की जानकारी है:
    • id
    • class_name

हम इन दो टेबल्स को class_id और id कॉलम्स के आधार पर LEFT JOIN करेंगे।

क्वेरी (Query):

SELECT students.name, classes.class_name
FROM students
LEFT JOIN classes
ON students.class_id = classes.id;

परिणाम (Result): इस क्वेरी से हमें students टेबल के सभी रिकॉर्ड्स मिलेंगे, और classes टेबल से केवल वे रिकॉर्ड्स जिनके लिए मेल खाने वाला class_id है। जिन छात्रों की class_id के लिए कोई मेल खाने वाला रिकॉर्ड नहीं है, उनके लिए class_name कॉलम में NULL दिखाया जाएगा।

विस्तृत उदाहरण (Detailed Example)

1. डेटाबेस निर्माण (Creating Database and Tables):

CREATE DATABASE school;

USE school;

CREATE TABLE students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    class_id INT
);

CREATE TABLE classes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    class_name VARCHAR(100) NOT NULL
);

2. डेटा सम्मिलन (Inserting Data):

INSERT INTO students (name, class_id)
VALUES 
('John Doe', 1),
('Jane Smith', 2),
('Sam Brown', 1),
('Lucy White', NULL);

INSERT INTO classes (class_name)
VALUES 
('Mathematics'),
(‘Science');

3. LEFT JOIN का उपयोग (Using LEFT JOIN):

SELECT students.name, classes.class_name
FROM students
LEFT JOIN classes
ON students.class_id = classes.id;

परिणाम (Result):

nameclass_name
John DoeMathematics
Jane SmithScience
Sam BrownMathematics
Lucy WhiteNULL

महत्वपूर्ण बातें (Important Considerations)

  • NULL वैल्यूज (NULL Values): LEFT JOIN उन पंक्तियों को भी शामिल करता है जिनके लिए दूसरी टेबल में कोई मेल खाने वाला रिकॉर्ड नहीं है, और इन मामलों में परिणाम में NULL वैल्यूज दिखाई देती हैं।
  • बड़ी टेबल्स के लिए उपयोगी (Useful for Larger Tables): LEFT JOIN का उपयोग बड़ी टेबल्स में किया जा सकता है जहां हम सुनिश्चित करना चाहते हैं कि बाईं टेबल की सभी पंक्तियाँ परिणाम में शामिल हों।
  • डुप्लीकेट्स (Duplicates): यदि बाईं टेबल में किसी पंक्ति के लिए दूसरी टेबल में एक से अधिक मेल खाने वाले रिकॉर्ड्स हैं, तो परिणाम में वह पंक्ति डुप्लीकेट हो सकती है।

LEFT JOIN SQL में दो या अधिक टेबल्स को जोड़ने और बाईं टेबल की सभी पंक्तियों को परिणाम में शामिल करने के लिए एक शक्तिशाली टूल है। सही सिंटैक्स और तकनीकों का उपयोग करके, आप डेटा को प्रभावी ढंग से रिट्रीव और विश्लेषित कर सकते हैं। इस सेक्शन के माध्यम से, आपने LEFT JOIN के उपयोग के विभिन्न तरीकों और परिदृश्यों को सीखा, जो आपके डेटाबेस क्वेरीज को अधिक सटीक और प्रभावी बनाएंगे।

RIGHT JOIN और FULL JOIN: अन्य प्रकार के जोड़

RIGHT JOIN और FULL JOIN SQL में अन्य महत्वपूर्ण प्रकार के JOIN हैं, जो हमें विभिन्न टेबल्स के डेटा को जोड़ने की सुविधा देते हैं। RIGHT JOIN उन सभी पंक्तियों को रिट्रीव करता है जो दाईं टेबल में हैं, और बाईं टेबल में मेल खाते हुए रिकॉर्ड्स को शामिल करता है। FULL JOIN दोनों टेबल्स के सभी रिकॉर्ड्स को रिट्रीव करता है, चाहे वे मेल खाते हों या नहीं। इस सेक्शन में, हम RIGHT JOIN और FULL JOIN के उपयोग और उनके परिदृश्यों को समझेंगे।

RIGHT JOIN (Right Outer Join)

RIGHT JOIN बाईं टेबल में मेल खाते हुए रिकॉर्ड्स के साथ दाईं टेबल की सभी पंक्तियों को रिट्रीव करता है। अगर बाईं टेबल में मेल नहीं खाते हुए रिकॉर्ड्स होते हैं, तो परिणाम में NULL दिखाया जाएगा।

सिंटैक्स (Syntax):

SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
RIGHT JOIN table2
ON table1.common_column = table2.common_column;

उदाहरण (Example):

मान लीजिए हमारे पास दो टेबल्स हैं:

  1. students टेबल:
    • id
    • name
    • class_id
  2. classes टेबल:
    • id
    • class_name

हम इन दो टेबल्स को class_id और id कॉलम्स के आधार पर RIGHT JOIN करेंगे।

क्वेरी (Query):

SELECT students.name, classes.class_name
FROM students
RIGHT JOIN classes
ON students.class_id = classes.id;

परिणाम (Result): इस क्वेरी से हमें classes टेबल की सभी पंक्तियाँ मिलेंगी, और students टेबल से मेल खाते हुए रिकॉर्ड्स शामिल होंगे। यदि कोई मेल नहीं खाता, तो NULL दिखाया जाएगा।

nameclass_name
John DoeMathematics
Sam BrownMathematics
Jane SmithScience
NULLHistory

FULL JOIN (Full Outer Join)

FULL JOIN दोनों टेबल्स की सभी पंक्तियों को रिट्रीव करता है, चाहे वे मेल खाते हों या नहीं। जहां मेल नहीं खाते, वहां NULL दिखाया जाएगा।

सिंटैक्स (Syntax):

SELECT table1.column1, table1.column2, table2.column1, ...
FROM table1
FULL JOIN table2
ON table1.common_column = table2.common_column;

उदाहरण (Example):

मान लीजिए हमारे पास वही दो टेबल्स हैं:

  1. students टेबल:
    • id
    • name
    • class_id
  2. classes टेबल:
    • id
    • class_name

हम इन दो टेबल्स को class_id और id कॉलम्स के आधार पर FULL JOIN करेंगे।

क्वेरी (Query):

SELECT students.name, classes.class_name
FROM students
FULL JOIN classes
ON students.class_id = classes.id;

परिणाम (Result): इस क्वेरी से हमें दोनों टेबल्स की सभी पंक्तियाँ मिलेंगी, चाहे वे मेल खाते हों या नहीं।

nameclass_name
John DoeMathematics
Sam BrownMathematics
Jane SmithScience
NULLHistory
Lucy WhiteNULL

महत्वपूर्ण बातें (Important Considerations)

  • RIGHT JOIN: LEFT JOIN के विपरीत, RIGHT JOIN बाईं टेबल के बजाय दाईं टेबल की सभी पंक्तियों को शामिल करता है।
  • FULL JOIN: MySQL में सीधे उपलब्ध नहीं होता है। इसे LEFT JOIN और RIGHT JOIN के संयोजन के रूप में उपयोग किया जा सकता है।
  • NULL वैल्यूज: जहां मेल नहीं खाते, वहां परिणाम में NULL वैल्यूज दिखाई देंगी।

FULL JOIN के लिए LEFT JOIN और RIGHT JOIN का संयोजन (Combining LEFT JOIN and RIGHT JOIN for FULL JOIN):

SELECT students.name, classes.class_name
FROM students
LEFT JOIN classes ON students.class_id = classes.id
UNION
SELECT students.name, classes.class_name
FROM students
RIGHT JOIN classes ON students.class_id = classes.id;

RIGHT JOIN और FULL JOIN SQL में महत्वपूर्ण ऑपरेशन्स हैं, जो विभिन्न टेबल्स के डेटा को जोड़ने के लिए उपयोग किए जाते हैं। RIGHT JOIN दाईं टेबल की सभी पंक्तियों को शामिल करता है, जबकि FULL JOIN दोनों टेबल्स की सभी पंक्तियों को शामिल करता है। इस सेक्शन के माध्यम से, आपने RIGHT JOIN और FULL JOIN के उपयोग और उनके परिदृश्यों को सीखा, जो आपके डेटाबेस क्वेरीज को अधिक प्रभावी और विस्तृत बनाएंगे।



Index