खोज…
परिचय
DELETE कथन का उपयोग किसी तालिका से रिकॉर्ड हटाने के लिए किया जाता है।
वाक्य - विन्यास
- TableName से हटाएँ [जहां स्थिति] [की संख्या सीमा]
कहाँ के साथ कुछ पंक्तियों DELETE
यह उन सभी पंक्तियों को हटा देगा जो WHERE
मापदंड से मेल खाती हैं।
DELETE FROM Employees
WHERE FName = 'John'
सभी पंक्तियों का पालन करें
WHERE
क्लॉज़ को ओमिट करने से एक टेबल से सभी पंक्तियाँ हट जाएँगी।
DELETE FROM Employees
TRUNCATE का प्रदर्शन बेहतर कैसे हो सकता है, इस बारे में जानकारी के लिए TRUNCATE दस्तावेज़ देखें क्योंकि यह ट्रिगर और इंडेक्स को अनदेखा करता है और डेटा को हटाने के लिए लॉग करता है।
TRUNCATE खंड
उस स्थिति पर तालिका को रीसेट करने के लिए इसका उपयोग करें जिस पर इसे बनाया गया था। यह सभी पंक्तियों को हटा देता है और ऑटो-इंक्रीमेंट जैसे मूल्यों को रीसेट करता है। यह भी प्रत्येक व्यक्ति पंक्ति विलोपन लॉग इन नहीं करता है।
TRUNCATE TABLE Employees
अन्य तालिकाओं के साथ तुलना के आधार पर कुछ पंक्तियों को हटाएं
यदि यह अन्य तालिकाओं में कुछ डेटा से मेल खाता है (या बेमेल है) तो किसी तालिका से डेटा DELETE
संभव है।
मान लें कि हम एक बार लक्ष्य से लोड होने के बाद स्रोत से डेटा DELETE
चाहते हैं।
DELETE FROM Source
WHERE EXISTS ( SELECT 1 -- specific value in SELECT doesn't matter
FROM Target
Where Source.ID = Target.ID )
अधिकांश सामान्य RDBMS कार्यान्वयन (जैसे MySQL, Oracle, PostgresSQL, Teradata) DELETE
दौरान तालिकाओं में शामिल होने की अनुमति देते हैं जो एक कॉम्पैक्ट सिंटैक्स में अधिक जटिल तुलना की अनुमति देते हैं।
मूल परिदृश्य में जटिलता जोड़ते हुए, मान लें कि एग्रीगेट दिन में एक बार लक्ष्य से बनाया गया है और इसमें एक ही आईडी नहीं है, लेकिन एक ही तिथि समाहित है। आइए हम यह भी मान लें कि दिन के लिए कुल आबादी के बाद ही हम स्रोत से डेटा हटाना चाहते हैं।
MySQL, Oracle और Teradata पर यह प्रयोग किया जा सकता है:
DELETE FROM Source
WHERE Source.ID = TargetSchema.Target.ID
AND TargetSchema.Target.Date = AggregateSchema.Aggregate.Date
PostgreSQL उपयोग में:
DELETE FROM Source
USING TargetSchema.Target, AggregateSchema.Aggregate
WHERE Source.ID = TargetSchema.Target.ID
AND TargetSchema.Target.DataDate = AggregateSchema.Aggregate.AggDate
स्रोत, लक्ष्य और एकत्रीकरण के बीच INNER JOINs में यह अनिवार्य रूप से परिणाम देता है। विलोपन स्रोत पर किया जाता है जब लक्ष्य में वही आईडी मौजूद होते हैं और उन आईडी के लिए लक्ष्य में मौजूद तिथि भी एग्रीगेट में मौजूद होती है।
इसी तरह प्रश्न भी लिखा जा सकता है (MySQL, Oracle, Teradata पर):
DELETE Source
FROM Source, TargetSchema.Target, AggregateSchema.Aggregate
WHERE Source.ID = TargetSchema.Target.ID
AND TargetSchema.Target.DataDate = AggregateSchema.Aggregate.AggDate
स्पष्ट मिलती है में उल्लेख किया जा सकता Delete
कुछ आरडीबीएमएस कार्यान्वयन पर बयान (जैसे ओरेकल, MySQL), लेकिन सभी प्लेटफार्मों पर समर्थित नहीं है (जैसे Teradata उन्हें समर्थन नहीं करता)
सभी सिंटैक्स शैलियों के साथ मेल खाने के बजाय बेमेल परिदृश्यों की जांच करने के लिए तुलना की जा सकती है (नीचे दिए गए NOT EXISTS
देखें)
DELETE FROM Source
WHERE NOT EXISTS ( SELECT 1 -- specific value in SELECT doesn't matter
FROM Target
Where Source.ID = Target.ID )