Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
🗄️ Unit 3 – Database और SQL  ·  Lesson 23

Joins और Set Operations

Tables join क्यों?

अच्छा database data को अलग-अलग जुड़ी tables में रखता है (दोहराव से बचने के लिए)। “Pari किस department और floor पर है?” का जवाब देने के लिए दो tables की rows मिलानी पड़ती हैं – यही join है।

STAFF🔑 SID INTSName VARCHAR(15)Salary INT🔗 DCode CHAR(3)DEPT🔑 DCode CHAR(3)DName VARCHAR(15)Floor INT
Common column: DCode

Sample tables

SQL
SELECT * FROM DEPT;
Output
+-------+-------+-------+
| DCode | DName | Floor |
+-------+-------+-------+
| D1    | Sales |     1 |
| D2    | IT    |     3 |
| D3    | HR    |     2 |
+-------+-------+-------+
SQL
SELECT * FROM STAFF;
Output
+-----+-------+--------+-------+
| SID | SName | Salary | DCode |
+-----+-------+--------+-------+
|   1 | Neel  |  40000 | D1    |
|   2 | Ojas  |  65000 | D2    |
|   3 | Pari  |  52000 | D2    |
|   4 | Qasim |  38000 | D3    |
+-----+-------+--------+-------+

Cartesian product

FROM में बिना शर्त दो tables लिखने पर पहली की हर row दूसरी की हर row से जुड़ती है। Rows = 4 × 3 = 12; degree = 4 + 3 = 7। ज़्यादातर जोड़े बेमतलब होते हैं।

SQL
SELECT SName, DName FROM STAFF, DEPT ORDER BY SName, DName;
Output
+-------+-------+
| SName | DName |
+-------+-------+
| Neel  | HR    |
| Neel  | IT    |
| Neel  | Sales |
| Ojas  | HR    |
| Ojas  | IT    |
| Ojas  | Sales |
| Pari  | HR    |
| Pari  | IT    |
| Pari  | Sales |
| Qasim | HR    |
| Qasim | IT    |
| Qasim | Sales |
+-------+-------+
SQL
SELECT COUNT(*) AS 'Rows in STAFF x DEPT' FROM STAFF, DEPT;
Output
+----------------------+
| Rows in STAFF x DEPT |
+----------------------+
|                   12 |
+----------------------+

Equi-join

Common column बराबर होने की शर्त जोड़ें। जब column का नाम दोनों tables में हो तो table.column लिखें।

SQL
SELECT SName, Salary, DName FROM STAFF, DEPT WHERE STAFF.DCode = DEPT.DCode ORDER BY SName;
Output
+-------+--------+-------+
| SName | Salary | DName |
+-------+--------+-------+
| Neel  |  40000 | Sales |
| Ojas  |  65000 | IT    |
| Pari  |  52000 | IT    |
| Qasim |  38000 | HR    |
+-------+--------+-------+

JOIN … ON और aliases

छोटे aliases (S, D) queries छोटी करते हैं। JOIN … ON इसी equi-join को लिखने का modern तरीका है।

SQL
SELECT S.SName, D.DName, D.Floor FROM STAFF S JOIN DEPT D ON S.DCode = D.DCode WHERE D.Floor > 1 ORDER BY S.SName;
Output
+-------+-------+-------+
| SName | DName | Floor |
+-------+-------+-------+
| Ojas  | IT    |     3 |
| Pari  | IT    |     3 |
| Qasim | HR    |     2 |
+-------+-------+-------+

Natural join

NATURAL JOIN एक जैसे नाम वाले columns पर अपने आप join करता है और common column एक बार दिखाता है।

SQL
SELECT * FROM STAFF NATURAL JOIN DEPT ORDER BY SID;
Output
+-------+-----+-------+--------+-------+-------+
| DCode | SID | SName | Salary | DName | Floor |
+-------+-----+-------+--------+-------+-------+
| D1    |   1 | Neel  |  40000 | Sales |     1 |
| D2    |   2 | Ojas  |  65000 | IT    |     3 |
| D2    |   3 | Pari  |  52000 | IT    |     3 |
| D3    |   4 | Qasim |  38000 | HR    |     2 |
+-------+-----+-------+--------+-------+-------+

GROUP BY के साथ join

SQL
SELECT D.DName, COUNT(*) AS Staff, SUM(S.Salary) AS Total FROM STAFF S, DEPT D WHERE S.DCode = D.DCode GROUP BY D.DName ORDER BY D.DName;
Output
+-------+-------+--------+
| DName | Staff | Total  |
+-------+-------+--------+
| HR    |     1 |  38000 |
| IT    |     2 | 117000 |
| Sales |     1 |  40000 |
+-------+-------+--------+

Set operations

Set operations एक जैसी संख्या और type के columns वाले दो SELECTs के results मिलाते हैं।

CLUB_ACLUB_B
UNION
CLUB_ACLUB_B
INTERSECT
CLUB_ACLUB_B
MINUS
SQL
SELECT Name FROM CLUB_A UNION SELECT Name FROM CLUB_B;
Output
+-------+
| Name  |
+-------+
| Asha  |
| Ravi  |
| Neha  |
| Zoya  |
| Kabir |
+-------+
SQL
SELECT Name FROM CLUB_A UNION ALL SELECT Name FROM CLUB_B;
Output
+-------+
| Name  |
+-------+
| Asha  |
| Ravi  |
| Neha  |
| Ravi  |
| Zoya  |
| Neha  |
| Kabir |
+-------+

MySQL 8.0.31+ में INTERSECT और EXCEPT भी हैं। हर version में चलने वाला तरीका, नीचे, IN और NOT IN है।

SQL
SELECT Name FROM CLUB_A WHERE Name IN (SELECT Name FROM CLUB_B);
Output
+------+
| Name |
+------+
| Ravi |
| Neha |
+------+
SQL
SELECT Name FROM CLUB_A WHERE Name NOT IN (SELECT Name FROM CLUB_B);
Output
+------+
| Name |
+------+
| Asha |
+------+

Practice

  1. Table A में 5 rows और 3 columns, B में 4 rows और 2 columns। A × B की degree और cardinality? Degree 5, cardinality 20।
  2. 50000 से ज़्यादा कमाने वाले staff के नाम उनके floor के साथ दिखाइए। SELECT SName, Floor FROM STAFF S, DEPT D WHERE S.DCode = D.DCode AND Salary > 50000;

अक्सर पूछे जाने वाले प्रश्न (FAQ)

4 और 3 rows वाली tables का Cartesian product कितनी rows देता है?
4 × 3 = 12 rows, और columns की संख्या दोनों tables के columns का जोड़ होती है।
Equi-join और natural join में क्या फ़र्क है?
Equi-join common column पर = लगाता है और * से चुनने पर वह column दो बार दिखाता है। Natural join एक जैसे नाम वाले सभी columns पर अपने आप join करता है और common column एक ही बार दिखाता है।
UNION और UNION ALL में क्या फ़र्क है?
UNION मिले हुए result से duplicate rows हटाता है; UNION ALL उन्हें रखता है।
← Class 12 Computer Science
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

अगला topicPython–MySQL Connectivity आपकी प्रगति: 23 / 26 (88%) · Lesson 24 / 26 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें