दो प्रश्नों को जोड़ने या संयोजित करने के लिए उपयोग किया जाने वाला ऑपरेटर कोई और नहीं बल्कि SET ऑपरेटर है। SET ऑपरेटरों में वर्गीकृत ऑपरेटर इस प्रकार हैं:
- यूनियन ऑपरेटर।
- यूनियन ऑल' ऑपरेटर।
- इंटर्सेक्ट ऑपरेटर।
- माइनस ऑपरेटर।
SET ऑपरेटर का उपयोग करके संचालन के लिए पालन किए जाने वाले नियम इस प्रकार हैं:
- कॉलम की संख्या और कॉलम का क्रम समान होना चाहिए।
- डेटा प्रकार संगत होना चाहिए।
आइए प्रत्येक SET संचालकों को उदाहरणों के साथ समझते हैं।
दिए गए अभिलेखों के साथ निम्नलिखित तालिकाओं पर विचार करें।
तालिका1:कर्मचारी
कर्मचारी | FIRST_NAME | LAST_NAME | वेतन | शहर | विभाग | मैनेजरिड | WORKING_HOURS | लिंग |
1001 | वैभवी | मिश्रा | 65000 | पुणे | ओरेकल | 1 | 12 | एफ |
1002 | वैभव | शर्मा | 60000 | नोएडा | ओरेकल | 1 | 9 | एम |
1003 | निखिल | वाणी | 50000 | जयपुर | FMW | 2 | 10 | एम |
2001 | प्राची | शर्मा | 55500 | चंडीगढ़ | ओरेकल | 1 | 10 | एफ |
2002 | भावेश | जैन | 65500 | पुणे | FMW | 2 | 12 | एम |
2003 | रुचिका | जैन | 50000 | मुंबई | परीक्षण | 4 | 9 | एफ |
3001 | प्रानोटी | शेंडे | 55500 | पुणे | जावा | 3 | 9 | एफ |
3002 | अनुजा | कहां | 50500 | जयपुर | FMW | 2 | 9 | एफ |
3003 | दीपम | जौहारी | 58500 | मुंबई | जावा | 3 | 12 | एम |
4001 | राजेश | GOUD | 60500 | मुंबई | परीक्षण | 4 | 10 | एम |
तालिका2:कर्मचारी।
कर्मचारी | FIRST_NAME | LAST_NAME | वेतन | शहर | विभाग | मैनेजरिड | WORKING_HOURS | लिंग |
1001 | वैभव | शर्मा | 65000 | पुणे | ओरेकल | 1 | 12 | एम |
1002 | निखिल | वाणी | 60000 | नोएडा | ओरेकल | 1 | 9 | एम |
1003 | वैभवी | मिश्रा | 50000 | जयपुर | FMW | 2 | 10 | एफ |
2001 | रुचिका | जैन | 55500 | चंडीगढ़ | ओरेकल | 1 | 10 | एफ |
2002 | प्राची | शर्मा | 65500 | पुणे | FMW | 2 | 12 | एफ |
2003 | भावेश | जैन | 50000 | मुंबई | परीक्षण | 4 | 9 | एम |
3001 | दीपम | जौहारी | 55500 | पुणे | जावा | 3 | 9 | एम |
3002 | अनुजा | कहां | 50500 | जयपुर | FMW | 2 | 9 | एफ |
3003 | प्रनोती | शेंडे | 58500 | मुंबई | जावा | 3 | 12 | एफ |
4001 | राजेश | GOUD | 60500 | मुंबई | परीक्षण | 4 | 10 | एम |
तालिका3:प्रबंधक।
प्रबंधक | manager_name | प्रबंधक_विभाग |
1 | स्नेहदीप कौर | ओरेकल |
2 | कीर्ति कीर्तन | FMW |
3 | अभिषेक मनीष | जावा |
4 | अनुपम मिश्रा | परीक्षण |
तालिका4:प्रबंधक1.
प्रबंधक | manager_name | प्रबंधक_विभाग |
1 | इशिता अग्रवाल | ओरेकल |
2 | कीर्ति कीर्तन | FMW |
3 | अभिषेक मनीष | जावा |
4 | पॉल ओकिप | परीक्षण |
यूनियन ऑपरेटर
यूनियन ऑपरेटर पहला ऑपरेटर है जिसका उपयोग दो या दो से अधिक SELECT स्टेटमेंट को मर्ज या संयोजित करने के लिए किया जाता है। यदि और केवल यदि उनके स्तंभों की संख्या और स्तंभों का क्रम समान है।
UNION ऑपरेशन के बाद प्राप्त परिणाम में डुप्लिकेट पंक्तियों पर विचार नहीं किया जाएगा।
यूनियन ऑपरेशन के लिए सिंटैक्स इस प्रकार है,
SELECT * FROM TABLE_NAME1 UNION SELECT * FROM TABLE_NAME2;
उदाहरण 1: कर्मचारी तालिका और कर्मचारी तालिका के बीच यूनियन संचालन करने के लिए एक क्वेरी निष्पादित करें।
SELECT * FROM EMPLOYEES UNION SELECT * FROM EMPLOYEE;
उपरोक्त क्वेरी में, हमने दो सेलेक्ट प्रश्नों का उपयोग किया है। पहली चयन क्वेरी कर्मचारियों से डेटा पुनर्प्राप्त करती है और दूसरी चयन क्वेरी कर्मचारी डेटा से डेटा पुनर्प्राप्त करती है, और यूनियन ऑपरेशन दोनों चयन प्रश्नों पर किया जाता है।
यूनियन ऑपरेशन दोनों तालिकाओं के बीच डुप्लिकेट पंक्तियों को त्याग देगा। निम्न आउटपुट इस प्रकार दिखाया गया है:
डुप्लिकेट रिकॉर्ड को छोड़कर दोनों तालिका रिकॉर्ड प्रदर्शित होते हैं।
उदाहरण 2: कर्मचारी तालिका और कर्मचारी तालिका के बीच यूनियन संचालन करने के लिए एक क्वेरी निष्पादित करें। लेकिन कर्मचारियों की तालिका से केवल उन कर्मचारियों के रिकॉर्ड प्रदर्शित करें जो शहर मुंबई से संबंधित हैं और कर्मचारी तालिका से केवल उन कर्मचारियों के रिकॉर्ड प्रदर्शित करें जिनका कर्मचारी वेतन 50000 से अधिक और 60000 से कम है।
SELECT * FROM EMPLOYEES WHERE CITY = 'MUMBAI' UNION SELECT * FROM EMPLOYEE WHERE SALARY > 50000 AND SALARY < 60000;
उपरोक्त क्वेरी में, हमने दो सेलेक्ट प्रश्नों का उपयोग किया है। पहली चयन क्वेरी केवल उन रिकॉर्ड को प्राप्त करती है जिसका कर्मचारी कर्मचारी तालिका से मुंबई शहर से संबंधित है। और दूसरी सेलेक्ट क्वेरी के साथ यूनियन ऑपरेशन निष्पादित करें केवल उन रिकॉर्ड्स को प्राप्त करें जिनके कर्मचारी वेतन 50000 से अधिक है लेकिन कर्मचारी तालिका से 60000 से कम है। UNION ऑपरेशन दोनों तालिकाओं के बीच डुप्लिकेट पंक्तियों को त्याग देगा।
निम्न आउटपुट इस प्रकार दिखाया गया है:
डुप्लिकेट रिकॉर्ड को छोड़कर दोनों तालिका रिकॉर्ड प्रदर्शित होते हैं।
उदाहरण 3: कर्मचारी तालिका और कर्मचारी तालिका के बीच यूनियन संचालन करने के लिए एक क्वेरी निष्पादित करें। हम कर्मचारी तालिका से केवल वही रिकॉर्ड चाहते हैं जिसका कर्मचारी शहर 'पुणे' और 'जयपुर' से संबंधित है।
SELECT* FROM EMPLOYEES WHERE CITY IN ('PUNE', 'JAIPUR') UNION SELECT * FROM EMPLOYEE;
उपरोक्त क्वेरी में, हमने दो सेलेक्ट प्रश्नों का उपयोग किया है। पहली सेलेक्ट क्वेरी कर्मचारी तालिका से उन अभिलेखों को प्राप्त करती है जिनके कर्मचारी 'पुणे' और 'जयपुर' शहर से संबंधित हैं। यूनियन ऑपरेशन टेबल कर्मचारी से दूसरी SELECT क्वेरी से प्राप्त रिकॉर्ड के साथ किया जाता है।
यूनियन ऑपरेशन दोनों तालिकाओं के बीच डुप्लिकेट पंक्तियों को त्याग देगा। निम्न आउटपुट इस प्रकार दिखाया गया है:
जैसा कि हम सभी देख सकते हैं, परिणाम पहले पांच रिकॉर्ड वे कर्मचारी हैं जो पुणे या जयपुर शहर से संबंधित हैं। और बाकी रिकॉर्ड कर्मचारी तालिका से हैं, दूसरी SELECT क्वेरी।
डुप्लिकेट रिकॉर्ड को छोड़कर दोनों तालिका रिकॉर्ड प्रदर्शित होते हैं।
उदाहरण 4: कर्मचारी तालिका और कर्मचारी तालिका के बीच यूनियन संचालन करने के लिए एक क्वेरी निष्पादित करें। हम कर्मचारी तालिका से केवल वे रिकॉर्ड चाहते हैं जिनके कर्मचारी का पहला नाम V से शुरू होता है।
SELECT * FROM EMPLOYEES UNION SELECT * FROM EMPLOYEE WHERE FIRST_NAME LIKE 'V%';
उपरोक्त क्वेरी में, हमने दो सेलेक्ट प्रश्नों का उपयोग किया है। पहली चयन क्वेरी कर्मचारी तालिका से सभी रिकॉर्ड प्राप्त करती है। यूनियन ऑपरेशन तालिका कर्मचारी से दूसरी चयन क्वेरी से प्राप्त रिकॉर्ड्स के साथ किया जाता है जिसका पहला नाम 'वी' से शुरू होता है।
यूनियन ऑपरेशन दोनों तालिकाओं के बीच डुप्लिकेट पंक्तियों को त्याग देगा। निम्न आउटपुट इस प्रकार दिखाया गया है:
जैसा कि हम सभी पहले 10 परिणाम कर्मचारी तालिका से कर सकते हैं, और शेष कर्मचारी तालिका से हैं जिसका कर्मचारी पहला नाम 'वी' से शुरू होता है।
उदाहरण 5: प्रबंधक तालिका और प्रबंधक1 तालिका के बीच UNION संचालन करने के लिए एक क्वेरी निष्पादित करें।
SELECT * FROM MANAGER UNION SELECT * FROM MANAGER1;
उपरोक्त क्वेरी में, हमने दो सेलेक्ट प्रश्नों का उपयोग किया है। पहली चयन क्वेरी प्रबंधक से डेटा पुनर्प्राप्त करती है और दूसरी चयन क्वेरी प्रबंधक 1 डेटा से डेटा पुनर्प्राप्त करती है, और यूनियन ऑपरेशन दोनों चयन प्रश्नों पर किया जाता है।
यूनियन ऑपरेशन दोनों तालिकाओं के बीच डुप्लिकेट पंक्तियों को त्याग देगा। निम्न आउटपुट इस प्रकार दिखाया गया है:
डुप्लिकेट रिकॉर्ड को छोड़कर दोनों तालिका रिकॉर्ड प्रदर्शित होते हैं।
यूनियन सभी ऑपरेटर्स
यूनियन ऑल ऑपरेटर दोनों प्रश्नों के सभी डेटा को जोड़ता है। UNION ऑपरेटर में, परिणाम में डुप्लिकेट रिकॉर्ड पर विचार नहीं किया गया था, लेकिन UNION ALL ने UNION ALL ऑपरेशन के बाद प्राप्त परिणाम में डुप्लिकेट रिकॉर्ड माना।
UNION ALL ऑपरेशन का सिंटैक्स इस प्रकार है,
SELECT * FROM TABLE_NAME1 UNION ALL SELECT * FROM TABLE_NAME2;
उदाहरण 1: कर्मचारी तालिका और कर्मचारी तालिका के बीच यूनियन सभी संचालन करने के लिए एक क्वेरी निष्पादित करें।
SELECT * FROM EMPLOYEES UNION ALL SELECT * FROM EMPLOYEE;
उपरोक्त क्वेरी में, हमने दो सेलेक्ट प्रश्नों का उपयोग किया है। पहली चयन क्वेरी कर्मचारियों से डेटा प्राप्त करती है और दूसरी चयन क्वेरी द्वारा प्राप्त डेटा के साथ यूनियन सभी ऑपरेशन करती है, कर्मचारी तालिका से डेटा पुनर्प्राप्त करती है।
निम्न आउटपुट इस प्रकार दिखाया गया है:
सभी रिकॉर्ड कर्मचारी और कर्मचारी दोनों टेबल से प्रदर्शित होंगे, डुप्लिकेट रिकॉर्ड भी प्रदर्शित होते हैं क्योंकि हम यूनियन ऑल ऑपरेशन करते हैं।
उदाहरण 2: कर्मचारी तालिका और कर्मचारी तालिका के बीच यूनियन सभी संचालन करने के लिए एक क्वेरी निष्पादित करें। लेकिन कर्मचारियों की तालिका से केवल उन कर्मचारियों के रिकॉर्ड प्रदर्शित करें जो शहर मुंबई से संबंधित हैं। कर्मचारी तालिका से, केवल उन कर्मचारियों के रिकॉर्ड जिनका कर्मचारी वेतन 60500 है और शहर 'मुंबई' है।
SELECT * FROM EMPLOYEES WHERE CITY = 'MUMBAI' UNION ALL SELECT * FROM EMPLOYEE WHERE SALARY = 60500 AND CITY = 'MUMBAI';
उपरोक्त क्वेरी में, हमने दो सेलेक्ट प्रश्नों का उपयोग किया है। पहली चयन क्वेरी केवल उन रिकॉर्ड को प्राप्त करती है जिसका कर्मचारी कर्मचारी तालिका से मुंबई शहर से संबंधित है। और दूसरी सेलेक्ट क्वेरी के साथ यूनियन ऑल ऑपरेशन निष्पादित करें, केवल वही रिकॉर्ड प्राप्त करें जिनका कर्मचारी वेतन 60500 है और कर्मचारी तालिका से शहर 'मुंबई' है।
निम्न आउटपुट इस प्रकार दिखाया गया है:
दोनों तालिका रिकॉर्ड प्रदर्शित होते हैं, जिसमें डुप्लिकेट रिकॉर्ड भी शामिल हैं, जब हम UNION सभी संचालन करते हैं।
उदाहरण 3: कर्मचारी तालिका और कर्मचारी तालिका के बीच यूनियन संचालन करने के लिए एक क्वेरी निष्पादित करें। हम कर्मचारी तालिका से केवल वही रिकॉर्ड चाहते हैं जिसका कर्मचारी शहर 'पुणे', 'मुंबई' और 'जयपुर' से संबंधित है।
SELECT* FROM EMPLOYEES WHERE CITY IN ('PUNE', 'MUMBAI', 'JAIPUR') UNION ALL SELECT * FROM EMPLOYEE;
उपरोक्त क्वेरी में, हमने दो सेलेक्ट प्रश्नों का उपयोग किया है। पहली सेलेक्ट क्वेरी उन रिकॉर्ड्स को प्राप्त करती है जिनके कर्मचारी कर्मचारी तालिका से 'पुणे', 'मुंबई' और 'जयपुर' शहर से संबंधित हैं। यूनियन ऑल ऑपरेशन टेबल कर्मचारी से दूसरी SELECT क्वेरी से प्राप्त रिकॉर्ड के साथ किया जाता है।
निम्न आउटपुट इस प्रकार दिखाया गया है:
दोनों तालिका रिकॉर्ड प्रदर्शित होते हैं, जिसमें डुप्लिकेट रिकॉर्ड भी शामिल हैं, जब हम UNION सभी संचालन करते हैं।
उदाहरण 4: प्रबंधक तालिका और प्रबंधक1 तालिका के बीच यूनियन सभी संचालन करने के लिए एक क्वेरी निष्पादित करें।
SELECT * FROM MANAGER UNION ALL SELECT * FROM MANAGER1;
उपरोक्त क्वेरी में, हमने दो सेलेक्ट प्रश्नों का उपयोग किया है। पहली चयन क्वेरी प्रबंधक से डेटा प्राप्त करती है और दूसरी चयन क्वेरी द्वारा प्राप्त डेटा के साथ यूनियन सभी संचालन करती है, प्रबंधक 1 तालिका से डेटा पुनर्प्राप्त करती है।
निम्न आउटपुट इस प्रकार दिखाया गया है:
सभी अभिलेख प्रबंधक और प्रबंधक1 दोनों तालिकाओं से प्रदर्शित किए जाएंगे; जब हम UNION सभी ऑपरेशन करते हैं तो डुप्लिकेट रिकॉर्ड प्रदर्शित होते हैं।
इंटर्सेक्ट ऑपरेटर्स
इंटरसेक्ट ऑपरेटर का उपयोग दो या दो से अधिक SELECT स्टेटमेंट को मिलाने के लिए किया जाता है, लेकिन यह केवल SELECT स्टेटमेंट के समान डेटा प्रदर्शित करता है।
इंटरसेक्ट ऑपरेशन के लिए सिंटैक्स इस प्रकार है,
SELECT * FROM TABLE_NAME1 INTERSECT SELECT * FROM TABLE_NAME2;
उदाहरण 1: कर्मचारी तालिका और कर्मचारी तालिका के बीच इंटरसेक्ट ऑपरेशन करने के लिए एक क्वेरी निष्पादित करें।
SELECT * FROM EMPLOYEES INTERSECT SELECT * FROM EMPLOYEE;
उपरोक्त क्वेरी में, हमने दो सेलेक्ट प्रश्नों का उपयोग किया है। पहली चयन क्वेरी कर्मचारियों से डेटा प्राप्त करती है और दूसरी चयन क्वेरी द्वारा प्राप्त डेटा के साथ इंटरसेक्ट ऑपरेशन करती है, कर्मचारी तालिका से डेटा पुनर्प्राप्त करती है।
निम्न आउटपुट इस प्रकार दिखाया गया है:
दोनों तालिकाओं से केवल समान रिकॉर्ड प्रदर्शित होंगे, क्योंकि हमने कर्मचारी तालिका और कर्मचारी तालिका के बीच इंटरसेक्ट ऑपरेशन किया था।
उदाहरण 2: प्रबंधक तालिका और प्रबंधक1 तालिका के बीच इंटरसेक्ट संचालन करने के लिए एक क्वेरी निष्पादित करें।
SELECT * FROM MANAGER INTERSECT SELECT * FROM MANAGER1;
उपरोक्त क्वेरी में, हमने दो सेलेक्ट प्रश्नों का उपयोग किया है। पहली चयन क्वेरी प्रबंधक से डेटा प्राप्त करती है और दूसरी चयन क्वेरी द्वारा प्राप्त डेटा के साथ इंटरसेक्ट ऑपरेशन करती है, प्रबंधक 1 तालिका से डेटा पुनर्प्राप्त करती है।
निम्न आउटपुट इस प्रकार दिखाया गया है:
दोनों तालिकाओं से केवल समान रिकॉर्ड प्रदर्शित होंगे, क्योंकि हमने प्रबंधक तालिका और प्रबंधक1 तालिका के बीच इंटरसेक्ट ऑपरेशन किया था।
माइनस ऑपरेटर्स
माइनस ऑपरेटर का उपयोग पहली क्वेरी में मौजूद पंक्तियों को वापस करने के लिए किया जाता है, लेकिन शेष प्रश्नों में बिना किसी डुप्लीकेट के अनुपस्थित रहता है।
माइनस ऑपरेशन का सिंटैक्स इस प्रकार है।
SELECT * FROM TABLE_NAME1 EXCEPT SELECT * FROM TABLE_NAME2;
नोट: माइनस कीवर्ड केवल ORACLE डेटाबेस में समर्थित है। हम समान ऑपरेशन करने के लिए अन्य डेटाबेस के लिए EXCEPT कीवर्ड का उपयोग कर सकते हैं।
उदाहरण 1: कर्मचारी तालिका और कर्मचारी तालिका के बीच माइनस ऑपरेशन करने के लिए एक क्वेरी निष्पादित करें।
SELECT * FROM EMPLOYEES EXCEPT SELECT * FROM EMPLOYEE;
उपरोक्त क्वेरी में, हमने दो सेलेक्ट प्रश्नों का उपयोग किया है। पहली चयन क्वेरी कर्मचारियों से डेटा प्राप्त करती है और दूसरी चयन क्वेरी द्वारा प्राप्त डेटा के साथ माइनस ऑपरेशन करती है, कर्मचारी तालिका से डेटा पुनर्प्राप्त करती है।
निम्न आउटपुट इस प्रकार दिखाया गया है:
दोनों तालिकाओं से केवल बेजोड़ रिकॉर्ड प्रदर्शित होंगे, क्योंकि हमने कर्मचारी तालिका और कर्मचारी तालिका के बीच माइनस ऑपरेशन किया था।
उदाहरण 2: प्रबंधक तालिका और प्रबंधक1 तालिका के बीच माइनस संचालन करने के लिए एक क्वेरी निष्पादित करें।
SELECT * FROM MANAGER EXCEPT SELECT * FROM MANAGER1;
उपरोक्त क्वेरी में, हमने दो सेलेक्ट प्रश्नों का उपयोग किया है। पहली चयन क्वेरी प्रबंधक से डेटा प्राप्त करती है और दूसरी चयन क्वेरी द्वारा प्राप्त डेटा के साथ माइनस ऑपरेशन करती है, प्रबंधक 1 तालिका से डेटा पुनर्प्राप्त करती है।
निम्न आउटपुट इस प्रकार दिखाया गया है:
दोनों टेबलों से केवल बेजोड़ रिकॉर्ड ही प्रदर्शित होंगे, क्योंकि हमने मैनेजर टेबल और मैनेजर1 टेबल के बीच माइनस ऑपरेशन किया था।