MySQL टेबल से सभी रिकॉर्ड जल्दी हटाने के लिए TRUNCATE TABLE स्टेटमेंट का उपयोग करें।
सिंटैक्स
TRUNCATE TABLE yourTableName;
उदाहरण
टेबल बनाना
mysql> create table DeleteAllFromTable ( -> PersonId int, -> PersonName varchar(200) -> ); Query OK, 0 rows affected (0.67 sec)
रिकॉर्ड डालना
mysql> insert into DeleteAllFromTable values(100,'Johnson'); mysql> insert into DeleteAllFromTable values(101,'John'); mysql> insert into DeleteAllFromTable values(102,'Carol'); mysql> insert into DeleteAllFromTable values(103,'Sam');
हटाने से पहले
mysql> select *from DeleteAllFromTable;
+----------+------------+ | PersonId | PersonName | +----------+------------+ | 100 | Johnson | | 101 | John | | 102 | Carol | | 103 | Sam | +----------+------------+
TRUNCATE TABLE से सभी हटाना
mysql> TRUNCATE TABLE DeleteAllFromTable; Query OK, 0 rows affected (0.80 sec)
हटाने के बाद
mysql> select *from DeleteAllFromTable; Empty set (0.00 sec)
TRUNCATE vs DELETE
| पहलू | TRUNCATE TABLE | DELETE FROM table |
|---|---|---|
| गति | बहुत तेज (टेबल रीबिल्ड) | धीमी (पंक्ति-दर-पंक्ति) |
| रोलबैक | नहीं (DDL - ऑटो-कमिट) | हां (DML - ट्रांजैक्शन में) |
| WHERE क्लॉज | समर्थित नहीं | समर्थित |
| ट्रिगर | फायर नहीं करता | फायर करता है |
| AUTO_INCREMENT | रीसेट हो जाता है | नहीं बदलता |
| विदेशी कुंजी | ब्लॉक कर सकता है (FK निर्भर) | FK कंस्ट्रेंट के अनुसार |
कब उपयोग करें
- TRUNCATE: सभी डेटा हटाना, टेबल रीसेट करना, टेस्टिंग, AUTO_INCREMENT रीसेट
- DELETE: चुनिंदा पंक्तियां हटाना, ट्रिगर फायर करना, ट्रांजैक्शन में रोलबैक आवश्यक
सावधानी
-- FK वाले टेबल पर TRUNCATE एरर दे सकता है TRUNCATE TABLE parent_table; -- Error यदि child_table में FK है -- समाधान: FK अक्षम करें, फिर ट्रंकेट, फिर सक्षम करें SET FOREIGN_KEY_CHECKS = 0; TRUNCATE TABLE parent_table; TRUNCATE TABLE child_table; SET FOREIGN_KEY_CHECKS = 1;