Database
 sql >> डेटाबेस >  >> RDS >> Database

SQL INSERT INTO… उदाहरण चुनें

एसक्यूएल INSERT तालिका में अलग-अलग पंक्तियों को सम्मिलित करने के लिए कथन का सबसे अधिक उपयोग किया जाता है।

लेकिन आप किसी क्वेरी के परिणाम तालिका में भी सम्मिलित कर सकते हैं। इसका मतलब है कि आप एक साथ कई पंक्तियाँ सम्मिलित कर सकते हैं (जब तक वे क्वेरी द्वारा वापस आ जाती हैं)।

मूल उदाहरण

प्रदर्शित करने के लिए यहां एक बुनियादी उदाहरण दिया गया है।

INSERT INTO Pets2
SELECT * FROM Pets;

यह Pets . से सभी पंक्तियों को सम्मिलित करता है Pets2 . में तालिका टेबल।

यह मानता है कि हमने पहले ही Pets2 . बना लिया है तालिका और यह कि इसकी सही परिभाषा है।

यदि यह मौजूद नहीं है या यदि इसकी सही परिभाषा नहीं है, तो आपको एक त्रुटि मिलेगी।

एकाधिक तालिकाओं से डेटा सम्मिलित करें

आप कई तालिकाओं से डेटा सम्मिलित करने के लिए इस पद्धति का उपयोग कर सकते हैं।

INSERT INTO PetsTypesOwners
SELECT 
    p.PetId,
    p.PetName,
    p.DOB,
    pt.PetTypeId,
    pt.PetType,    
    o.OwnerId,
    o.FirstName,
    o.LastName,
    o.Phone,
    o.Email
FROM Pets p 
INNER JOIN PetTypes pt 
ON p.PetTypeId = pt.PetTypeId 
INNER JOIN Owners o 
ON p.OwnerId = o.OwnerId;

इस उदाहरण में मैंने PetsTypesOwners . नामक एक तालिका में तीन तालिकाओं से डेटा सम्मिलित किया है ।

ध्यान दें कि मैंने प्रत्येक कॉलम को स्पष्ट रूप से सूचीबद्ध किया है। मैंने ऐसा इसलिए किया क्योंकि गंतव्य कॉलम में संयुक्त तीन तालिकाओं की तुलना में कम कॉलम हैं। इस मामले में, ऐसा इसलिए है, क्योंकि अगर मैंने सभी कॉलमों का चयन किया होता, तो क्वेरी ने डुप्लिकेट कॉलम लौटा दिए होते, क्योंकि विदेशी कुंजियों का नाम और मान उनकी प्राथमिक कुंजियों के समान होता था।

अगर मैं उन डुप्लिकेट कॉलम को शामिल करना चाहता हूं, तो गंतव्य कॉलम में उन डुप्लिकेट कॉलम को शामिल करना होगा, लेकिन प्रत्येक डुप्लिकेट जोड़ी में से एक के लिए एक अलग नाम के साथ।

यहां सभी स्तंभों को चुनने का एक उदाहरण दिया गया है (मैं उन्हें यहां स्पष्ट रूप से चुनूंगा, ताकि आप उनके नाम देख सकें):

INSERT INTO PetsTypesOwners2
SELECT 
    p.PetId, 
    p.OwnerId, 
    p.PetTypeId,
    p.PetName,
    p.DOB,
    pt.PetTypeId,
    pt.PetType,    
    o.OwnerId,
    o.FirstName,
    o.LastName,
    o.Phone,
    o.Email
FROM Pets p 
INNER JOIN PetTypes pt 
ON p.PetTypeId = pt.PetTypeId 
INNER JOIN Owners o 
ON p.OwnerId = o.OwnerId;

आप देख सकते हैं कि OwnerId . नामक दो कॉलम हैं और दो को PetTypeId . कहा जाता है , प्रत्येक एक अलग तालिका से। ये उनकी संबंधित तालिकाओं की प्राथमिक कुंजी और विदेशी कुंजी हैं।

यह देखते हुए कि वे कॉलम डुप्लिकेट हैं, मैंने पिछले उदाहरण में प्रत्येक में से केवल एक को शामिल किया है। लेकिन इस डेमो के उद्देश्य के लिए, मैंने उन्हें इस उदाहरण में शामिल किया है।

तो इस नए INSERT INTO... SELECT . को पूरा करने के लिए कथन, हमें कॉलम की सही संख्या और संगत परिभाषा के साथ हमारी गंतव्य तालिका की आवश्यकता है।

इसलिए, हमारी गंतव्य तालिका की परिभाषा कुछ इस तरह दिख सकती है:

CREATE TABLE PetsTypesOwners2 (
    PetId       int NOT NULL PRIMARY KEY,
    PetPetType  varchar(60) NOT NULL,
    PetOwnerId  int NOT NULL,
    PetName     varchar(60) NOT NULL,
    DOB         date NULL,
    PetTypeId   int NOT NULL,
    PetType     varchar(60) NOT NULL,
    OwnerId     int NOT NULL,
    FirstName   varchar(60) NOT NULL,
    LastName    varchar(60) NOT NULL,
    Phone       varchar(20) NOT NULL,
    Email       varchar(254)
);

इस मामले में, मैंने प्रत्येक डुप्लिकेट कॉलम में से एक को Pet . के साथ प्रीफ़िक्स किया है . विशेष रूप से, मैंने एक PetPetTypeId बनाया है (जो p.OwnerId . पर मैप करता है क्वेरी में कॉलम) और PetOwnerId कॉलम (जो p.PetTypeId . पर मैप करता है क्वेरी में कॉलम)।

हालांकि, यह ध्यान रखना महत्वपूर्ण है कि इससे कोई फर्क नहीं पड़ता कि आप अपने कॉलम को गंतव्य तालिका में क्या कहते हैं। INSERT INTO... SELECT बयान इसकी परवाह नहीं करता है। INSERT INTO... SELECT स्टेटमेंट केवल कॉलम ऑर्डर में रुचि रखता है।

दृश्य से डेटा सम्मिलित करें

आप उसी का उपयोग कर सकते हैं INSERT INTO... SELECT किसी दृश्य से तालिका में डेटा सम्मिलित करने के लिए सिंटैक्स।

यहां एक त्वरित उदाहरण दिया गया है:

INSERT INTO PetTypeCount
SELECT * FROM vPetTypeCount;

इस मामले में, vPetTypeCount एक दृश्य है, और मैं इसकी सामग्री को PetTypeCount . नामक तालिका में सम्मिलित कर रहा हूं ।

संग्रहीत प्रक्रिया से डेटा सम्मिलित करें

कुछ DBMS (जैसे SQL सर्वर) भी उसी का उपयोग कर सकते हैं INSERT INTO... SELECT एक संग्रहीत कार्यविधि से तालिका में डेटा सम्मिलित करने के लिए सिंटैक्स।

यहां एक त्वरित उदाहरण दिया गया है:

INSERT INTO PetById
EXEC uspGetPetById 2;

फिर से, यह मानता है कि हमारे पास सही परिभाषा के साथ एक गंतव्य तालिका है।

SELECT INTO कथन

आपके DBMS के आधार पर, एक SELECT INTO . भी है कथन, जिसका उपयोग आप परिणाम सेट के आधार पर स्वचालित रूप से एक नई तालिका बनाने के लिए कर सकते हैं, फिर उस परिणाम सेट को उसमें डालें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. बिग डेटा की 3 प्रमुख विशेषताओं को समझना

  2. पायथन एसक्यूएल पुस्तकालयों का परिचय

  3. चाकू

  4. टी-एसक्यूएल में दिनांक और समय प्रारूप कैसे बदलें

  5. प्लान एक्सप्लोरर के साथ टिपिंग प्वाइंट की कल्पना करना