SQL DELETE बनाम DROP: मुख्य अंतर
DELETE एक DML (डेटा मैनिपुलेशन लैंग्वेज) कमांड है जो टेबल से पंक्तियों को हटाता है। DROP एक DDL (डेटा डेफिनिशन लैंग्वेज) कमांड है जो पूरे डेटाबेस ऑब्जेक्ट्स (टेबल, इंडेक्स, व्यू, स्कीमा) को हटाता है।
तुलना तालिका
| क्र.सं. |
पहलू |
DELETE |
DROP |
| 1 |
उद्देश्य |
टेबल से कुछ या सभी पंक्तियों/रिकॉर्ड्स को हटाता है |
स्कीमा तत्वों को हटाता है: टेबल, इंडेक्स, व्यू, कंस्ट्रेंट, डेटाबेस |
| 2 |
भाषा प्रकार |
DML (डेटा मैनिपुलेशन) |
DDL (डेटा डेफिनिशन) |
| 3 |
क्लॉज |
फ़िल्टरिंग के लिए WHERE क्लॉज का उपयोग करता है |
कोई WHERE क्लॉज नहीं (पूरा ऑब्जेक्ट हटाता है) |
| 4 |
रोलबैक |
रोलबैक किया जा सकता है (लॉग बफर में काम करता है) |
रोलबैक नहीं किया जा सकता (मेटाडेटा पर सीधे काम करता है) |
| 5 |
मेमोरी स्पेस |
सभी पंक्तियाँ हटाने के बाद भी टेबल स्पेस बरकरार रखता है |
टेबल द्वारा उपयोग की गई मेमोरी स्पेस मुक्त करता है |
| 6 |
समस्याएं |
बड़े डिलीट के लिए मेमोरी की कमी का कारण हो सकता है |
मेमोरी विखंडन का कारण हो सकता है |
सिंटैक्स तुलना
-- DELETE: पंक्तियाँ हटाता है, टेबल रखता है
DELETE FROM employees WHERE department_id = 10;
DELETE FROM employees; -- सभी पंक्तियाँ हटाता है (लेकिन टेबल संरचना रखता है)
-- DROP: पूरा ऑब्जेक्ट हटाता है
DROP TABLE employees; -- टेबल हटाता है
DROP INDEX idx_name ON employees; -- इंडेक्स हटाता है
DROP VIEW employee_view; -- व्यू हटाता है
DROP DATABASE company_db; -- डेटाबेस हटाता है
TRUNCATE: मध्य मैदान
TRUNCATE TABLE employees;
- DDL कमांड (DELETE की तरह DML नहीं)
- तेज़: व्यक्तिगत पंक्ति हटाने को लॉग नहीं करता
- पहचान रीसेट करता है: AUTO_INCREMENT काउंटर रीसेट करता है
- रोलबैक नहीं कर सकता (अधिकांश डेटाबेस में)
- WHERE क्लॉज नहीं - सभी पंक्तियाँ हटाता है
कब क्या उपयोग करें
| परिदृश्य | अनुशंसित |
| विशिष्ट पंक्तियाँ हटाएं | DELETE WHERE ... |
| सभी पंक्तियाँ हटाएं, टेबल रखें | TRUNCATE TABLE |
| टेबल संरचना + डेटा पूरी तरह हटाएं | DROP TABLE |
| इंडेक्स/व्यू/कंस्ट्रेंट हटाएं | DROP INDEX/VIEW/CONSTRAINT |
सुरक्षा विचार
- DROP के लिए उन्नत विशेषाधिकार की आवश्यकता होती है
- उत्पादन में DROP से पहले बैकअप लें
- आकस्मिक DROP को रोकने के लिए विदेशी कुंजी कंस्ट्रेंट का उपयोग करें