खोज…


परिचय

DELETE कथन का उपयोग किसी तालिका से रिकॉर्ड हटाने के लिए किया जाता है।

वाक्य - विन्यास

  1. 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 )


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow