TOP

SQL-पाठ 13. डेटा जोड़ना (INSERT INTO)

पिछले अनुभागों में, हमने पहले बनाई गई तालिकाओं से डेटा पुनर्प्राप्त करने के कार्य पर विचार किया था। अब यह पता लगाने का समय आ गया है कि हम तालिकाएँ कैसे बना/हटा सकते हैं, नए रिकॉर्ड कैसे जोड़ सकते हैं और पुराने रिकॉर्ड कैसे हटा सकते हैं।

इन उद्देश्यों के लिए, SQL में ऐसे ऑपरेटर हैं:

  • CREATE - एक तालिका बनाता है;
  • ALTER - तालिका की संरचना बदलता है;
  • DROP - किसी तालिका या फ़ील्ड को हटा देता है;
  • INSERT - तालिका में डेटा जोड़ता है।
  • आइए INSERT ऑपरेटर के साथ ऑपरेटरों के इस समूह से परिचित होना शुरू करें।


    1. पूरी लाइनें जोड़ना

    जैसा कि नाम से पता चलता है, INSERT INTO ऑपरेटर का उपयोग डेटाबेस तालिका में पंक्तियाँ सम्मिलित करने (जोड़ने) के लिए किया जाता है।

    जोड़ना कई तरीकों से किया जा सकता है:

  • एक पूरी पंक्ति जोड़ें;
  • एक नई पंक्ति का भाग जोड़ें;
  • क्वेरी परिणाम जोड़ें.
  • इसलिए, तालिका में एक नई पंक्ति जोड़ने के लिए, हमें तालिका का नाम निर्दिष्ट करना होगा, कॉलम नामों को सूचीबद्ध करना होगा, और INSERT INTO टेबल_नाम(फ़ील्ड1, फ़ील्ड2...) VALUES (मान1, का उपयोग करके प्रत्येक कॉलम के लिए मान निर्दिष्ट करना होगा) वैल्यू2 ...) निर्माण। आइए एक उदाहरण पर विचार करें.

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
    VALUES ('6', '1st Street', 'Los Angeles', 'Harry Monroe', 'USA')
    

    आप कॉलम नामों का क्रम भी बदल सकते हैं, लेकिन साथ ही आपको VALUEs पैरामीटर में मानों का क्रम भी बदलना होगा।

    2. पंक्तियों का भाग जोड़ना

    पिछले उदाहरण में, INSERT ऑपरेटर का उपयोग करते समय, हमने तालिका कॉलम के नाम स्पष्ट रूप से निर्दिष्ट किए थे। इस सिंटैक्स का उपयोग करके, हम कुछ कॉलम छोड़ सकते हैं। इसका मतलब है कि आप कुछ कॉलम के लिए मान दर्ज करते हैं और दूसरों के लिए उन्हें प्रदान नहीं करते हैं। उदाहरण:

    INSERT INTO Sellers (ID, City, Seller_name) 
    VALUES ('6', 'Los Angeles', 'Harry Monroe')
    

    इस उदाहरण में, हमने दो कॉलम Address और Country के लिए मान निर्दिष्ट नहीं किए हैं। यदि यह आपको तालिका को परिभाषित करने की अनुमति देता है तो आप एएए कथन से कुछ कॉलम को बाहर कर सकते हैं। इस मामले में, निम्नलिखित शर्तों में से एक को पूरा किया जाना चाहिए: इस कॉलम को शून्य मान (किसी भी मान की अनुपस्थिति) की अनुमति के रूप में परिभाषित किया गया है या तालिका परिभाषा में एक डिफ़ॉल्ट मान निर्दिष्ट किया गया है। इसका मतलब यह है कि यदि कोई मान निर्दिष्ट नहीं है, तो डिफ़ॉल्ट मान का उपयोग किया जाएगा। यदि आप किसी तालिका से एक कॉलम हटाते हैं जो NULL मानों को उसकी पंक्तियों में प्रकट होने की अनुमति नहीं देता है और डिफ़ॉल्ट उपयोग के लिए कोई मान परिभाषित नहीं करता है, तो DBMS एक त्रुटि संदेश जारी करेगा और पंक्ति नहीं जोड़ी जाएगी।

    3. चयनित डेटा जोड़ना

    पिछले उदाहरणों में, हमने डेटा को क्वेरी में मैन्युअल रूप से लिखकर तालिका में डाला था। हालाँकि, यदि हम किसी अन्य तालिका से डेटा सम्मिलित करना चाहते हैं तो INSERT INTO ऑपरेटर हमें इस प्रक्रिया को स्वचालित करने की अनुमति देता है। इसके लिए SQL में INSERT INTO ... SELECT ... जैसी संरचना मौजूद है। यह डिज़ाइन आपको एक साथ एक तालिका से डेटा का चयन करने और उन्हें दूसरे में सम्मिलित करने की अनुमति देता है। मान लीजिए कि हमारे पास यूरोप में हमारे उत्पाद के विक्रेताओं की सूची के साथ एक और तालिका Salers_EU है और हमें उन्हें सामान्य तालिका Sellers में जोड़ने की आवश्यकता है। इन तालिकाओं की संरचना समान है (स्तंभों की समान संख्या और समान नाम), लेकिन डेटा भिन्न है। ऐसा करने के लिए, हम निम्नलिखित क्वेरी लिख सकते हैं:

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
                 SELECT ID, Address, City, Seller_name, Country 
                 FROM Sellers_EU
    

    यह ध्यान देना आवश्यक है कि आंतरिक कुंजियों के मान दोहराए न जाएं (आईडी फ़ील्ड), अन्यथा एक त्रुटि उत्पन्न होगी। SELECT स्टेटमेंट में डेटा को फ़िल्टर करने के लिए एक WHERE क्लॉज भी शामिल हो सकता है। यह भी ध्यान दिया जाना चाहिए कि DBMS SELECT ऑपरेटर में शामिल कॉलम के नामों पर ध्यान नहीं देता है, यह केवल उनके स्थान के क्रम की परवाह करता है। इसलिए, पहले निर्दिष्ट कॉलम में डेटा जो SELECT के माध्यम से चुना गया था, किसी भी स्थिति में फ़ील्ड नाम की परवाह किए बिना, INSERT INTO ऑपरेटर के बाद निर्दिष्ट Sellers तालिका के पहले कॉलम में भरा जाएगा।

    4. डेटा को एक टेबल से दूसरे टेबल पर कॉपी करना

    अक्सर, डेटाबेस के साथ काम करते समय, बैकअप या संशोधन के उद्देश्य से किसी भी तालिका की प्रतियां बनाने की आवश्यकता होती है। SQL में तालिका की पूरी प्रतिलिपि बनाने के लिए, एक अलग ऑपरेटर SELECT INTO प्रदान किया जाता है। उदाहरण के लिए, हमें तालिका Sellers की एक प्रति बनाने की आवश्यकता है, हमें निम्नानुसार क्वेरी लिखनी होगी:

    SELECT * INTO Sellers_new 
    FROM Sellers
    

    पिछले निर्माण के विपरीत INSERT INTO ... SELECT ... जब डेटा को मौजूदा तालिका में जोड़ा जाता है, तो निर्माण SELECT ... INTO ... FROM ... डेटा को एक नई तालिका में कॉपी करता है। यह भी कहा जा सकता है कि पहला निर्माण डेटा आयात करता है, और दूसरा इसे निर्यात करता है।

    निर्माण का उपयोग करते समय SELECT ... INTO ... FROM ... निम्नलिखित को ध्यान में रखा जाना चाहिए:

  • आप SELECT स्टेटमेंट में किसी भी क्लॉज का उपयोग कर सकते हैं, जैसे GROUP BY और HAVING;
  • आप कई तालिकाओं से डेटा जोड़ने के लिए यूनियन का उपयोग कर सकते हैं;
  • डेटा को केवल एक तालिका में जोड़ा जा सकता है, चाहे वह कितनी भी तालिकाओं से लिया गया हो।