SQLite INSERT, UPDATE, DELETE क्वेरी उदाहरण सहित

⚡ स्मार्ट सारांश

SQLite INSERT, UPDATE और DELETE स्टेटमेंट डेटाबेस में नई पंक्तियाँ जोड़कर, मौजूदा मानों को बदलकर और रिकॉर्ड हटाकर डेटा को संशोधित करते हैं, जबकि ON CONFLICT क्लॉज़ यह तय करता है कि उन ऑपरेशनों के दौरान बाधा उल्लंघनों को कैसे हल किया जाए।

  • 📝 दर्ज करें: INSERT स्टेटमेंट एक या अधिक नई पंक्तियाँ जोड़ता है, जिसमें VALUES क्लॉज़ के साथ लक्ष्य कॉलम और उनके मान सूचीबद्ध होते हैं।
  • अद्यतन: UPDATE स्टेटमेंट मौजूदा कॉलम के मानों को बदलता है, नए डेटा के लिए SET का उपयोग करता है और विशिष्ट पंक्तियों को लक्षित करने के लिए WHERE का उपयोग करता है।
  • हटाएँ: DELETE स्टेटमेंट उन पंक्तियों को हटाता है जो WHERE शर्त से मेल खाती हैं, या WHERE क्लॉज़ के न होने पर हर पंक्ति को हटा देता है।
  • ⚠️ संघर्ष खंड: ON CONFLICT क्लॉज़ ROLLBACK, ABORT, FAIL, IGNORE या REPLACE के माध्यम से बाधा उल्लंघनों का समाधान करता है।
  • 🔁 लेन-देन: एक डेटाबेस लेनदेन कई ऑपरेशनों को एक इकाई में समूहित करता है जो या तो पूरी तरह से प्रतिबद्ध होता है या पूरी तरह से रद्द हो जाता है।
  • 🤖 एआई सहायता: एआई टेक्स्ट-टू-एसक्यूएल टूल और गिटहब कोपायलट जनरेट करते हैं SQLite सरल अंग्रेजी में लिखे गए प्रश्नों से INSERT, UPDATE और DELETE स्टेटमेंट।

SQLite INSERT, UPDATE, DELETE क्वेरी

इन्सर्ट, अपडेट और डिलीट क्वेरी में SQLite

डेटा संशोधन खंड SQLite INSERT, UPDATE और DELETE कथन हैं। इसका उपयोग नई पंक्तियाँ सम्मिलित करने, मौजूदा मानों को अपडेट करने या डेटाबेस से पंक्तियाँ हटाने के लिए किया जाता है।

ध्यान दें कि, निम्नलिखित सभी उदाहरणों के लिए, आपको sqlite3.exe चलाना होगा और नमूना डेटाबेस से कनेक्शन खोलना होगा:

चरण 1) इस चरण में,

  • माय कंप्यूटर खोलें और निम्नलिखित निर्देशिका पर जाएं: “C:\sqlite”
  • फिर “sqlite3.exe“ खोलें:

SQLite प्रश्न - INSERT, UPDATE, DELETE

चरण 2) निम्न कमांड का उपयोग करके "TutorialsSampleDB.db" डेटाबेस खोलें:

.open TutorialsSampleDB.db

SQLite प्रश्न - INSERT, UPDATE, DELETE

अब आप डेटाबेस पर किसी भी प्रकार की क्वेरी चलाने के लिए तैयार हैं।

SQLite सम्मिलित करें

SQLite INSERT का उपयोग डेटाबेस की निर्दिष्ट तालिका में रिकॉर्ड डालने के लिए किया जाता है। आपको 'INSERT' क्लॉज़ का उपयोग करना होगा। INSERT क्लॉज़ का सिंटैक्स इस प्रकार है:

SQLite सम्मिलित करें

  • INSERT क्लॉज के बाद, आपको यह बताना चाहिए कि आपको मान किस तालिका में सम्मिलित करने हैं।
  • तालिका नाम के बाद आप उन स्तंभों की सूची लिखते हैं, जिनमें आप मान सम्मिलित करना चाहते हैं।
  • आप कॉलम के नाम को अनदेखा कर सकते हैं और उनमें कुछ भी नहीं लिख सकते हैं।
  • यदि आप स्तंभ का नाम नहीं लिखते हैं, तो मान तालिका में पाए जाने वाले सभी स्तंभों में उसी क्रम से डाले जाएंगे, स्तंभ तालिका में परिभाषित हैं।
  • VALUES क्लॉज़ के बाद, आपको सम्मिलित किए जाने वाले मानों की सूची बनानी चाहिए।
  • प्रत्येक INSERT क्लॉज़ केवल एक पंक्ति सम्मिलित करता है। यदि आप कई पंक्तियाँ सम्मिलित करना चाहते हैं, तो आपको प्रत्येक पंक्ति के लिए एक, कई INSERT क्लॉज़ लिखने चाहिए।

SQLite उदाहरण डालें

निम्नलिखित उदाहरण में, हम students तालिका में 2 पंक्तियाँ डालेंगे, प्रत्येक छात्र के लिए एक:

INSERT INTO Students(StudentId, StudentName, DepartmentId, DateOfBirth)
              VALUES(11, 'Ahmad', 4, '1997-10-12');

INSERT INTO Students VALUES(12, 'Aly', 4, '1996-10-12');

यह सफलतापूर्वक चलना चाहिए और इसका कोई आउटपुट नहीं है:

SQLite सम्मिलित करें

इससे दो छात्र सम्मिलित होंगे:

  • पहला छात्र, StudentId=11, StudentName = Ahmed, DepartmentId = 4, तथा DateOfBirth = 1997-10-12.
  • दूसरा छात्र जिसका StudentId=12, StudentName = Aly, DepartmentId = 4, और DateOfBirth = 1996-10-12 है।

पहले कथन में, हमने "StudentId, StudentName, DepartmentId, DateOfBirth" कॉलम के नाम सूचीबद्ध किए थे। हालाँकि, दूसरे कथन में, हमने ऐसा नहीं किया।

चार मान “12, 'एली', 4, '1996-10-12'” को स्टूडेंट्स टेबल के सभी चार कॉलम में उसी क्रम में डाला जाएगा जिस क्रम में कॉलम परिभाषित किए गए हैं।

अब, निम्नलिखित चलाकर सत्यापित करें कि दो छात्रों को छात्र तालिका में डाला गया था सवाल:

SELECT * FROM Students;

फिर आपको उस क्वेरी से लौटे दो छात्रों को इस प्रकार देखना चाहिए:

SQLite सम्मिलित करें

SQLite अपडेट

SQLite UPDATE क्वेरी का उपयोग किसी तालिका में मौजूदा रिकॉर्ड को संशोधित करने के लिए किया जाता है। आप चयनित पंक्तियों को अपडेट करने के लिए UPDATE क्वेरी के साथ WHERE क्लॉज का उपयोग कर सकते हैं। UPDATE क्लॉज किसी विशिष्ट कॉलम के लिए मान बदलकर तालिका को अपडेट करता है। UPDATE क्लॉज का सिंटैक्स निम्नलिखित है:

SQLite अपडेट

के रूप में निम्नानुसार:

  • “अपडेट क्लॉज” के बाद, आपको अपडेट करने के लिए तालिका का नाम लिखना चाहिए।
  • आपको “SET क्लॉज” लिखना होगा जिसका उपयोग अपडेट करने के लिए कॉलम का नाम और अपडेट किए जाने वाले मान को लिखने के लिए किया जाता है।
  • आप एक से ज़्यादा कॉलम अपडेट कर सकते हैं। आप हर लाइन के बीच में कॉमा का इस्तेमाल कर सकते हैं।
  • आप केवल कुछ पंक्तियों को निर्दिष्ट करने के लिए WHERE क्लॉज़ निर्दिष्ट कर सकते हैं। केवल वे पंक्तियाँ अपडेट की जाती हैं जिनका मूल्यांकन अभिव्यक्ति सत्य के रूप में करती है। यदि आपने WHERE क्लॉज़ निर्दिष्ट नहीं किया है, तो सभी पंक्तियाँ अपडेट हो जाएँगी।

SQLite अद्यतन उदाहरण

निम्नलिखित अद्यतन विवरण में, हम StudentId = 6 वाले छात्र के लिए DepartmentId को अद्यतन करके 3 कर देंगे:

UPDATE Students
SET DepartmentId = 3 
WHERE StudentId = 6;

यह सफलतापूर्वक चलना चाहिए और आपको कोई आउटपुट नहीं मिलना चाहिए:

SQLite अपडेट

UPDATE क्लॉज में, हमने निर्दिष्ट किया कि हम Students तालिका को अद्यतन करना चाहते हैं।

  • WHERE क्लॉज में, हमने सभी विद्यार्थियों को फ़िल्टर करके केवल StudentId = 6 वाली पंक्ति का चयन किया।
  • SET क्लॉज चयनित छात्रों के लिए विभाग आईडी का मान 3 तक अद्यतन कर देगा।

अब, निम्नलिखित कमांड चलाकर सत्यापित करें कि ID 6 वाला छात्र अपडेट है:

SELECT * FROM Students WHERE StudentId = 6;

अब आप देखेंगे कि विभाग आईडी मान अब 3 है, जैसा कि निम्नलिखित है:

SQLite अपडेट

SQLite मिटाना

SQLite DELETE क्वेरी का उपयोग किसी निर्दिष्ट तालिका से मौजूदा रिकॉर्ड हटाने के लिए किया जाता है। आप चयनित पंक्तियों को हटाने के लिए DELETE क्वेरी के साथ WHERE क्लॉज़ का उपयोग कर सकते हैं।

DELETE क्लॉज़ का सिंटैक्स निम्नलिखित है:

SQLite मिटाना

  • आपको DELETE FROM क्लॉज़ के बाद उस टेबल का नाम लिखना होगा जिससे आप रिकॉर्ड हटाना चाहते हैं। (ध्यान दें: DELETE क्लॉज़ का उपयोग किसी टेबल से कुछ रिकॉर्ड हटाने या सभी रिकॉर्ड हटाने के लिए किया जाता है, यह टेबल को स्वयं नहीं हटाता है। जबकि DROP क्लॉज़ का उपयोग टेबल को उसके सभी रिकॉर्ड सहित हटाने के लिए किया जाता है।)
  • यदि आप DELETE क्लॉज़ को इस तरह लिखते हैं “DELETE FROM guru”, तो यह “guru” टेबल से सभी रिकॉर्ड हटा देगा।
  • यदि आप कुछ विशिष्ट पंक्तियों को हटाना चाहते हैं, तो आप अभिव्यक्ति के साथ WHERE शर्त निर्दिष्ट कर सकते हैं। केवल वे पंक्तियाँ हटाई जाएँगी जिनके लिए अभिव्यक्ति सत्य का मूल्यांकन करती है। उदाहरण के लिए, “DELETE FROM guru WHERE id > 5” – यह केवल उन रिकॉर्ड्स को हटाएगा जिनकी id 5 से बड़ी है।

उदाहरण

निम्नलिखित कथन में, हम StudentId 11 और 12 वाले दो छात्रों को हटा देंगे:

DELETE FROM Students WHERE StudentId = 11 OR StudentId = 12;

अभिव्यक्ति “StudentId = 11 OR StudentId = 12” केवल उन छात्रों के लिए सत्य होगी जिनकी आईडी 11 और 12 हैं। इसलिए DELETE क्लॉज़ दोनों पर लागू होगा और केवल उन्हीं को हटाएगा।

यह कमांड सफलतापूर्वक चलना चाहिए और आपको निम्नलिखित जैसा कोई आउटपुट नहीं मिलना चाहिए:

SQLite मिटाना

आप निम्नलिखित तरीके से छात्र तालिका से सभी रिकॉर्ड का चयन करके सत्यापित कर सकते हैं कि दो छात्र हटा दिए गए हैं:

SELECT * FROM Students;

आपको आईडी 11 और 12 वाले दो छात्र इस प्रकार नहीं दिखाई देंगे:

SQLite मिटाना

SQLite संघर्ष खंड

मान लीजिए कि आपके पास एक ऐसा कॉलम है जिसमें निम्न कॉलम प्रतिबंध हैं: UNIQUE, NOT NULL, CHECK, या PRIMARY KEY. और फिर आपने उस कॉलम पर एक ऐसा मान डालने या अपडेट करने का प्रयास किया जो इस प्रतिबंध के साथ टकराव करता है.

उदाहरण के लिए, यदि किसी कॉलम में UNIQUE बाधा है और आपने पहले से मौजूद मान (एक डुप्लिकेट मान) डालने का प्रयास किया है, जो UNIQUE बाधा के साथ टकराव करता है। तब CONFLICT क्लॉज़ आपको यह चुनने देता है कि इस टकराव को हल करने के लिए ऐसे मामलों में क्या करना है।

इससे पहले कि हम यह समझाना जारी रखें कि CONFLICT क्लॉज़ संघर्ष को कैसे हल करता है। आपको यह समझना चाहिए कि डेटाबेस ट्रांजेक्शन क्या है।

डेटाबेस लेनदेन

डेटाबेस लेनदेन शब्द एक सूची है SQLite ऑपरेशन (इन्सर्ट या अपडेट या डिलीट)। डेटाबेस ट्रांजेक्शन को एक इकाई के रूप में निष्पादित किया जाना चाहिए, या तो सभी ऑपरेशन सफलतापूर्वक निष्पादित किए जाएं या बिल्कुल भी निष्पादित न किए जाएं। यदि उनमें से कोई एक निष्पादित करने में विफल रहता है, तो सभी ऑपरेशन रद्द कर दिए जाएंगे।

डेटाबेस लेनदेन का उदाहरण

एक बैंक खाते से दूसरे बैंक खाते में पैसे ट्रांसफर करने के लिए कई तरह की गतिविधियाँ करनी पड़ती हैं। इस लेनदेन में पहले खाते से पैसे निकालना और उसे दूसरे खाते में जमा करना शामिल है। यह लेनदेन पूरी तरह से पूरा होना चाहिए या पूरी तरह से रद्द होना चाहिए और बीच में ही विफल नहीं होना चाहिए।

यहां पांच प्रस्तावों की सूची दी गई है जिन्हें आप संघर्ष खंड में चुन सकते हैं:

  1. रोलबैक – यह उस लेन-देन को वापस ले लेगा जिसमें वर्तमान लेन-देन हुआ था SQLite कथन जिसमें संघर्ष है (यह पूरे लेनदेन को रद्द कर देगा)। उदाहरण के लिए, यदि आप 10 पंक्तियों को अपडेट करने का प्रयास कर रहे हैं, और पांचवीं पंक्ति में एक ऐसा मान है जो किसी बाधा के साथ संघर्ष करता है, तो कोई भी पंक्ति अपडेट नहीं की जाएगी, 10 पंक्तियाँ वही रहेंगी। एक त्रुटि फेंक दी जाएगी।
  2. ABORT – यह वर्तमान प्रक्रिया को रद्द कर देगा। SQLite केवल वही कथन अपडेट किया जाएगा जिसमें संघर्ष है और लेनदेन रद्द नहीं किया जाएगा। उदाहरण के लिए, यदि आप 10 पंक्तियों को अपडेट करने का प्रयास कर रहे हैं, और पाँचवीं पंक्ति में ऐसा मान है जो किसी बाधा के साथ संघर्ष करता है, तो केवल पाँचवाँ मान अपडेट नहीं किया जाएगा, लेकिन अन्य 9 पंक्तियाँ अपडेट की जाएँगी। एक त्रुटि फेंकी जाएगी।
  3. असफल – वर्तमान प्रक्रिया को रद्द करता है SQLite कथन जिसमें संघर्ष है। हालाँकि, लेन-देन जारी नहीं रहेगा, लेकिन संघर्ष वाली पंक्ति से पहले की पंक्तियों में किए गए पिछले परिवर्तन प्रतिबद्ध होंगे। उदाहरण के लिए, यदि आप 10 पंक्तियों को अपडेट करने का प्रयास कर रहे हैं, और पाँचवीं पंक्ति में एक मान है जो किसी बाधा के साथ संघर्ष करता है, तो केवल 4 पंक्तियाँ अपडेट होंगी और अन्य नहीं। एक त्रुटि फेंक दी जाएगी।
  4. अनदेखा करें – यह प्रतिबंध उल्लंघन वाली पंक्ति को छोड़ देगा और उसके बाद की अन्य पंक्तियों को संसाधित करना जारी रखेगा। SQLite कथन। उदाहरण के लिए, यदि आप 10 पंक्तियों को अपडेट करने का प्रयास कर रहे हैं, और पाँचवीं पंक्ति में ऐसा मान है जो किसी बाधा के साथ संघर्ष करता है, तो केवल 4 पंक्तियाँ अपडेट होंगी और अन्य नहीं। यह अन्य पंक्तियों को अपडेट करने के लिए आगे नहीं बढ़ेगा और उस पंक्ति पर रुक जाएगा जिसमें संघर्ष मान है। कोई त्रुटि नहीं फेंकी जाएगी।
  5. प्रतिस्थापन – यह उस बाधा के प्रकार पर निर्भर करता है जिसमें उल्लंघन हुआ है:
    • जब UNIQUE या PRIMARY KEY प्रतिबंध के लिए प्रतिबंध का उल्लंघन होता है। REPLACE उस पंक्ति को नई सम्मिलित या अद्यतन पंक्ति से प्रतिस्थापित कर देगा जो उल्लंघन का कारण बनती है।
    • जब NOT NULL प्रतिबंध का उल्लंघन होता है, तो REPLACE क्लॉज़ NULL मान को उस कॉलम के डिफ़ॉल्ट मान से बदल देगा। यदि कॉलम में कोई डिफ़ॉल्ट मान नहीं है, तो SQLite कथन निरस्त कर दिया जाएगा (बयान रद्द कर दिया जाएगा)
    • यदि CHECK प्रतिबंध का उल्लंघन होता है, तो खंड निरस्त कर दिया जाएगा।

नोट: ऊपर दिए गए 5 समाधान इस बात के विकल्प हैं कि आप विवाद को कैसे हल करना चाहते हैं। यह जरूरी नहीं है कि एक विवाद को हल करने के लिए जो तरीका लागू होता है, वह अन्य प्रकार के विवादों को हल करने के लिए भी लागू हो।

CONFLICT खंड की घोषणा कैसे करें

जब आप CREATE TABLE क्लॉज के भीतर कॉलम परिभाषा के लिए कोई बाधा परिभाषित करते हैं, तो आप ON CONFLICT क्लॉज घोषित कर सकते हैं। निम्नलिखित सिंटैक्स का उपयोग करके:

SQLite संघर्ष खंड

जैसा कि पहले बताया गया है, आप संघर्ष को हल करने के लिए पाँच समाधानों में से एक चुन सकते हैं।

संघर्ष पर ध्यान न दें उदाहरण

चरण 1) निम्नानुसार एक नया तालिका विषय बनाएं:

CREATE TABLE [Subjects] (  
    [SubjectId] INTEGER NOT NULL PRIMARY KEY ON CONFLICT IGNORE,
    [SubjectName] NVARCHAR NOT NULL
);

ध्यान दें कि हमने SubjectId कॉलम पर PRIMARY KEY कंस्ट्रेंट लगाया है। यह कंस्ट्रेंट SubjectId कॉलम में दो डुप्लिकेट मानों को डालने की अनुमति नहीं देता है, ताकि उस कॉलम के सभी मान अद्वितीय हों। साथ ही, ध्यान दें कि हमने कॉन्फ़्लिक्ट रिज़ॉल्यूशन को “IGNORE” चुना है।

कमांड सफलतापूर्वक चलना चाहिए और आपको कोई त्रुटि नहीं मिलनी चाहिए:

संघर्ष पर ध्यान न दें उदाहरण

चरण 2) अब, आइए नए तालिका विषयों में कुछ मान डालें, लेकिन ऐसे मान के साथ जो प्राथमिक कुंजी प्रतिबंध का उल्लंघन करता है:

INSERT INTO Subjects VALUES(1, 'Algebra');
INSERT INTO Subjects VALUES(2, 'Database Course');
INSERT INTO Subjects VALUES(2, 'Data Structures');
INSERT INTO Subjects VALUES(4, 'Algorithms');

इन INSERT कथन में, हमने एक ही प्राथमिक कुंजी विषय आईडी 2 के साथ दो पाठ्यक्रम सम्मिलित करने का प्रयास किया, जो प्राथमिक कुंजी प्रतिबंध का उल्लंघन है।

कमांड ठीक से चलनी चाहिए और आपको कोई त्रुटि नहीं मिलनी चाहिए। जैसा कि निम्नलिखित है:

संघर्ष पर ध्यान न दें उदाहरण

चरण 3) नीचे दी गई तालिका से सभी विषयों का चयन करें:

SELECT * FROM Subjects;

इससे आपको विषयों की सूची मिल जाएगी:

संघर्ष पर ध्यान न दें उदाहरण

ध्यान दें कि केवल तीन विषय ही शामिल किए गए हैं: "बीजगणित, डेटाबेस पाठ्यक्रम, और Algorithms” 4 पंक्तियों के बजाय.

वह पंक्ति जिसका मान प्राथमिक कुंजी बाधा का उल्लंघन करता है, जो कि "डेटा संरचना" है, उसे अनदेखा कर दिया गया और सम्मिलित नहीं किया गया। हालाँकि, SQLite उस पंक्ति के बाद अन्य कथनों का निष्पादन जारी रखता है।

चरण 4) निम्न आदेश चलाकर निम्न उदाहरण के लिए एक भिन्न ON CONFLICT खंड के साथ इसे पुनः बनाने के लिए तालिका विषयों को हटाएं:

DROP TABLE Subjects;

ड्रॉप कमांड संपूर्ण तालिका को हटा देता है। अब तालिका विषय मौजूद नहीं है।

संघर्ष प्रतिस्थापन उदाहरण

चरण 1) निम्नानुसार एक नया तालिका विषय बनाएं:

CREATE TABLE [Subjects] (  
    [SubjectId] INTEGER NOT NULL PRIMARY KEY ON CONFLICT REPLACE,
    [SubjectName] NVARCHAR NOT NULL
);

ध्यान दें कि हमने SubjectId कॉलम पर PRIMARY KEY कंस्ट्रेंट परिभाषित किया है। प्राथमिक कुंजी कंस्ट्रेंट SubjectId कॉलम में दो डुप्लिकेट मानों को सम्मिलित करने की अनुमति नहीं देगा, ताकि उस कॉलम में सभी मान अद्वितीय हों।

इसके अलावा, ध्यान दें कि हमने "REPLACE" को कॉन्फ़्लिक्ट रिज़ॉल्यूशन विकल्प के रूप में चुना है। कमांड सफलतापूर्वक चलना चाहिए और आपको कोई त्रुटि नहीं मिलनी चाहिए।

संघर्ष प्रतिस्थापन उदाहरण

चरण 2) अब, आइए नई तालिका Subjects में कुछ मान डालें, लेकिन ऐसे मान के साथ जो प्राथमिक कुंजी प्रतिबंध का उल्लंघन करता है:

INSERT INTO Subjects VALUES(1, 'Algebra');
INSERT INTO Subjects VALUES(2, 'Database Course');
INSERT INTO Subjects VALUES(2, 'Data Structures');
INSERT INTO Subjects VALUES(4, 'Algorithms');

इन INSERT कथन में, हमने एक ही प्राथमिक कुंजी विषय आईडी 2 के साथ दो पाठ्यक्रम सम्मिलित करने का प्रयास किया, जो प्राथमिक कुंजी प्रतिबंध का उल्लंघन है।

कमांड ठीक से चलनी चाहिए और आपको कोई त्रुटि नहीं मिलनी चाहिए। जैसा कि निम्नलिखित है:

संघर्ष प्रतिस्थापन उदाहरण

चरण 3) नीचे दी गई तालिका से सभी विषयों का चयन करें:

SELECT * FROM Subjects;

इससे आपको विषयों की सूची मिल जाएगी:

संघर्ष प्रतिस्थापन उदाहरण

ध्यान दें कि केवल तीन विषय ही शामिल किए गए हैं: "बीजगणित, डेटा संरचनाएं और Algorithms” जबकि हमने 4 पंक्तियाँ सम्मिलित करने का प्रयास किया।

जिस पंक्ति में प्राथमिक कुंजी की बाधा का उल्लंघन करने वाला मान है, यानी "डेटा संरचनाएं", उस पंक्ति में "डेटाबेस पाठ्यक्रम" मान को निम्नानुसार प्रतिस्थापित किया गया है:

  • पहले दो इन्सर्ट स्टेटमेंट बिना किसी समस्या के ठीक से चलते हैं। दो विषय बीजगणित, और डेटाबेस कोर्स आईडी 1, 2 के साथ डाले जाएंगे।
  • . SQLite जब यह SubjectId 2 और SubjectName “Data Structures“ के साथ तीसरा इंसर्ट स्टेटमेंट चलाने का प्रयास करता है, तो यह पाता है कि SubjectId = 2 नाम का एक सब्जेक्ट पहले से मौजूद है। जो SubjectId कॉलम पर परिभाषित प्राइमरी की कंस्ट्रेंट का उल्लंघन है।
  • SQLite इस समस्या के समाधान के लिए REPLACE विधि का चयन किया जाएगा। यह 'विषय' तालिका में पहले से मौजूद मान को 'इंसर्ट' स्टेटमेंट से प्राप्त नए मान से बदल देगा। अतः, "Database Course" SubjectName को "Data Structures" SubjectName से बदल दिया जाएगा।

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

UPSERT इंसर्ट और अपडेट दोनों को जोड़ता है। SQLite 3.24.0 (2018), INSERT INTO … ON CONFLICT(column) DO UPDATE SET … एक नई पंक्ति सम्मिलित करता है, या UNIQUE या PRIMARY KEY विरोध होने पर मौजूदा पंक्ति को अपडेट करता है। DO NOTHING इसके बजाय पंक्ति को चुपचाप छोड़ देता है।

INSERT OR REPLACE विरोधाभासी पंक्ति को हटाता है और एक नई पंक्ति सम्मिलित करता है, जिससे सूचीबद्ध न किए गए कॉलम अपने डिफ़ॉल्ट मानों पर रीसेट हो जाते हैं। ON CONFLICT DO UPDATE मौजूदा पंक्ति को यथावत संपादित करता है।ping अन्य कॉलम बरकरार हैं, जो इसे अधिक सुरक्षित ट्रू अप्सर्ट बनाता है।

VALUES के बाद अल्पविराम से अलग करके कई मान समूहों को सूचीबद्ध करें: INSERT INTO Students (id, name) VALUES (1,'A'), (2,'B'), (3,'C');। यह बहु-पंक्ति प्रारूप काम करता है क्योंकि SQLite 3.7.11 संस्करण प्रति पंक्ति एक INSERT स्टेटमेंट चलाने की तुलना में तेज़ है।

DELETE FROM table_name; कमांड को बिना WHERE क्लॉज़ के चलाएँ। SQLite इसमें TRUNCATE कमांड नहीं है, लेकिन यह एक ट्रंकेट ऑप्टिमाइजेशन लागू करता है जो एक साथ सभी पंक्तियों को हटा देता है। टेबल संरचना बनी रहती है; टेबल को पूरी तरह से हटाने के लिए DROP TABLE कमांड का उपयोग करें।

जबसे SQLite 3.35.0 (2021) में, INSERT, UPDATE और DELETE में एक वैकल्पिक RETURNING क्लॉज़ शामिल किया जा सकता है जो प्रभावित पंक्तियों को आउटपुट करता है। उदाहरण के लिए, INSERT … RETURNING id; जनरेट किए गए मानों को तुरंत लौटाता है, जिससे यह जानने के लिए अलग से SELECT करने की आवश्यकता नहीं होती कि क्या बदला है।

INSERT INTO … SELECT: INSERT INTO का उपयोग करें Archive (id, name) SELECT id, name FROM Students WHERE DepartmentId = 4;. SQLite यह SELECT द्वारा लौटाई गई प्रत्येक पंक्ति को सम्मिलित करता है, इसलिए कॉलम का क्रम और संख्या लक्ष्य तालिका से मेल खाना चाहिए।

जी हां। एआई टेक्स्ट-टू-एसक्यूएल सहायक साधारण अंग्रेजी अनुरोधों को परिवर्तित करते हैं। SQLite INSERT, UPDATE और DELETE स्टेटमेंट, जिनमें WHERE और ON CONFLICT क्लॉज़ शामिल हैं। टेबल और कॉलम के नाम देने से सटीकता बढ़ती है, और वास्तविक डेटा पर चलाने से पहले प्रत्येक जेनरेट किए गए स्टेटमेंट की समीक्षा और परीक्षण किया जाना चाहिए।

गिटहब कोपिलॉट पता चलता है SQLite INSERT, UPDATE और DELETE क्वेरी को एडिटर में इनलाइन रूप से उपयोग किया जा सकता है, जैसे कि VS Codeयह आस-पास के स्कीमा और टिप्पणियों को पढ़ता है, इसलिए पूर्णता आपके वास्तविक तालिका और स्तंभ नामों का पुन: उपयोग करती है, लेकिन आपको निष्पादन से पहले प्रत्येक कथन को सत्यापित करना चाहिए।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: