DELETE
किसी तालिका में डेटा को हटाने के लिए कथन का उपयोग किया जा सकता है।
WHERE
क्लॉज का उपयोग यह निर्दिष्ट करने के लिए किया जा सकता है कि वास्तव में किन पंक्तियों को हटाया जाना चाहिए।
WHERE
द्वारा लागू की गई फ़िल्टरिंग शर्तों के आधार पर आप सभी पंक्तियों, कुछ पंक्तियों या किसी को भी नहीं हटा सकते हैं खंड।
एक साधारण डिलीट
सबसे पहले, आइए एक कलाकार को हटाते हैं:
sqlite> SELECT * FROM Artists; ArtistId ArtistName Bio -------- -------------------- ---------------------------------------- 1 Joe Satriani 2 Steve Vai 3 The Tea Party 4 Noiseworks 5 Wayne Jury 6 Mr Percival 7 Iron Maiden 8 Atmasphere Australian jazz band centred around poly 9 Ian Moss 10 Magnum 11 Strapping Young Lad 12 Slayer 13 Primus 14 Pat Metheny 15 Frank Gambale 16 Mothers of Invention 17 The Wiggles
ठीक है, आइए कलाकार संख्या 12 को हटा दें (कातिल)।
यहां सरल डिलीट स्टेटमेंट दिया गया है जो उस रिकॉर्ड को कलाकारों . से हटा देता है तालिका:
DELETE FROM Artists WHERE ArtistId = 12;
इसलिए, इसे चलाने के बाद, हम सत्यापित कर सकते हैं कि रिकॉर्ड वास्तव में SELECT
. के साथ हटा दिया गया था कथन:
sqlite> SELECT * FROM Artists WHERE ArtistId = 12; sqlite>
(कोई परिणाम नहीं)।
विदेशी कुंजी प्रतिबंध के साथ डेटा हटाना
यदि आप किसी विदेशी कुंजी द्वारा संदर्भित रिकॉर्ड को हटाने का प्रयास करते हैं, तो आपको एक त्रुटि मिलनी चाहिए। प्राथमिक कुंजी रिकॉर्ड को हटाने से पहले आपको पहले विदेशी कुंजी रिकॉर्ड को हटाना होगा।
उदाहरण के लिए, कलाकार आईडी 17 ( कलाकारों . से तालिका) को एल्बम . में दो रिकॉर्ड द्वारा संदर्भित किया जाता है तालिका (देखें ArtistId कॉलम):
sqlite> SELECT * FROM Albums WHERE ArtistId = 17; AlbumId AlbumName ReleaseDate ArtistId -------- -------------------- ------------ ------------ 5 Yummy Yummy 1994 17 13 Big Red Car 1995 17
इसलिए अगर हम कलाकार को हटाने की कोशिश करते हैं 17 कलाकार तालिका से (जिसमें प्राथमिक कुंजी होती है), हमें एक त्रुटि मिलनी चाहिए।
ये रहा डिलीट स्टेटमेंट:
DELETE FROM Artists WHERE ArtistId = 17;
और ये रहा परिणाम:
sqlite> DELETE FROM Artists ...> WHERE ArtistId = 17; Error: FOREIGN KEY constraint failed sqlite>
इसलिए, प्राथमिक कुंजी को हटाने से पहले हमें विदेशी कुंजी रिकॉर्ड को हटाना होगा।
अगर आपको
विदेशी कुंजी बाधा विफल नहीं हुई
संदेश, आपको विदेशी कुंजी बाधा जाँच को सक्षम करने की आवश्यकता हो सकती है। PRAGMA foreign_keys = ON;
चलाएं विदेशी कुंजी बाधा जांच सक्षम करने के लिए।
संबद्ध रिकॉर्ड हटाएं
तो चलिए एल्बम . में संबंधित रिकॉर्ड को हटाते हैं तालिका, उपरोक्त डिलीट स्टेटमेंट को फिर से आज़माने से पहले।
DELETE FROM Albums WHERE ArtistId = 17;
जांचें कि उन्हें हटा दिया गया था:
sqlite> SELECT * FROM Albums WHERE ArtistId = 17; sqlite>
(कोई परिणाम नहीं)।
आइए अब मूल डिलीट स्टेटमेंट को फिर से देखें:
DELETE FROM Artists WHERE ArtistId = 17;
आशाजनक लग रहा है — कोई त्रुटि नहीं:
sqlite> DELETE FROM Artists ...> WHERE ArtistId = 17; sqlite>
और एक SELECT
कथन विलोपन की पुष्टि करता है:
sqlite> SELECT * FROM Artists WHERE ArtistId = 17; sqlite>
कोई परिणाम नहीं।
सभी पंक्तियां हटाएं
आप WHERE
. को छोड़ कर किसी तालिका की सभी पंक्तियों को हटा सकते हैं खंड।
हमारे पास एक अतिरिक्त टेबल है ( Albums1 ), तो चलिए उस पर कोशिश करते हैं।
सबसे पहले, आइए देखें कि इसमें वास्तव में डेटा है:
sqlite> SELECT * FROM Albums1; AlbumId AlbumName Year ArtistId -------- -------------------- ------------ ------------ 1 Killers 1981 7 2 Powerslave 1984 7 3 Surfing with the Ali 1987 1 4 Heavy as a Really He 1995 11 5 Yummy Yummy 1994 17 6 Out of the Loop 2007 6 7 Suck on This 1989 13 8 Pork Soda 1993 13 9 Sailing the Seas of 1991 13 10 Flying in a Blue Dre 1989 1 11 Black Swans and Worm 2010 1 12 Somewhere in Time 1986 7 13 Big Red Car 1995 17
ऐसा होता है। तो चलिए आगे बढ़ते हैं और यह सब मिटा देते हैं:
DELETE FROM Albums1;
आइए अब इसकी सामग्री को दोबारा जांचें:
sqlite> SELECT * FROM Albums1; sqlite>
(कोई परिणाम नहीं)।