DROP, TRUNCATE और DELETE Difference
हटाने के तीन तरीके
MySQL में तीन commands हैं जो चीज़ें हटाती हैं, और इन्हें मिला देना आसान है: DELETE rows हटाता है, TRUNCATE पूरी table खाली करता है, और DROP पूरी table हटाता है। अंतर जानना — ख़ासकर क्या undo हो सकता है — महँगी गलतियाँ रोकता है।
DELETE
DELETE FROM students WHERE marks < 40; -- कुछ rows DELETE FROM students; -- सारी rows
DELETE rows हटाता है। WHERE के साथ यह सिर्फ़ मेल खाती rows हटाता है; इसके बिना, सारी rows। यह DML command है, तो transaction के अंदर rollback हो सकता है। यह लचीला, सावधान विकल्प है।
TRUNCATE
TRUNCATE TABLE students;
TRUNCATE सारी rows बहुत तेज़ी से हटाकर table reset करता है (AUTO_INCREMENT counter समेत)। यह खाली table रखता है ताकि आप दोबारा इस्तेमाल कर सकें। यह DDL command है और undo करना बहुत कठिन है, तो सावधानी से इस्तेमाल कीजिए।
DROP
DROP TABLE students;
DROP पूरी table हटाता है — data और संरचना। DROP के बाद, table अब मौजूद नहीं; आपको इसे फिर CREATE करना होगा। यह तीनों में सबसे विनाशकारी है।
Rollback और speed
- DELETE — धीमा (row-दर-row), पर transaction के अंदर rollback हो सकता है।
- TRUNCATE — बहुत तेज़ (drop करके फिर बनाता), undo कठिन, auto-increment reset करता।
- DROP — सब हटाता है; table चली गई।
सुरक्षा को, जब undo की ज़रूरत पड़ सकती हो तब DELETE; जब पक्का हो table खाली करनी है तभी TRUNCATE इस्तेमाल कीजिए।
तुलना
| बात | DELETE | TRUNCATE | DROP |
|---|---|---|---|
| हटाता है | चुनी या सारी rows | सारी rows | पूरी table |
| संरचना रखता है | हाँ | हाँ | नहीं |
| WHERE allowed | हाँ | नहीं | नहीं |
| Rollback | हाँ (transaction में) | कठिन | कठिन |
| Speed | धीमा | तेज़ | तेज़ |
| Type | DML | DDL | DDL |
आम गलतियाँ
- WHERE बिना DELETE। यह हर row हटाता है — WHERE दोबारा जाँचिए।
- TRUNCATE को आसान undo की उम्मीद से इस्तेमाल करना। यह DDL command है; rollback कठिन।
- TRUNCATE और DROP मिलाना। TRUNCATE खाली table रखता है; DROP उसे delete करता है।
- Auto-increment reset भूलना। TRUNCATE इसे reset करता है; DELETE नहीं।
सारांश
- DELETE चुनी या सारी rows हटाता है और rollback हो सकता है।
- TRUNCATE table तेज़ी से खाली करके auto-increment reset करता है।
- DROP पूरी table हटाता है, संरचना समेत।
- DELETE DML है; TRUNCATE और DROP DDL हैं।
- जब undo की ज़रूरत पड़ सकती हो तब DELETE बेहतर।
आगे, command समूह सीखिए DDL, DML और DQL में, या सुरक्षित editing safe UPDATE और DELETE में।
