MySQL TRUNCATE कथनको व्याख्या: सिन्ट्याक्स, उदाहरणहरू, र उत्तम अभ्यासहरू

目次

१. TRUNCATE स्टेटमेन्ट के हो?

TRUNCATE स्टेटमेन्टको आधारभूत अवधारणा

MySQL मा TRUNCATE स्टेटमेन्ट एउटा कमान्ड हो जसले तालिकाबाट सबै डाटा एकैचोटि हटाउँछ। DELETE स्टेटमेन्ट जसले रोहरू एक-एक गरी हटाउँछ, त्यसबाट फरक, TRUNCATE ले तालिकालाई आन्तरिक रूपमा पुनः सिर्जना गरेर यसको डाटा सफा गर्दछ। यसले ठूलो मात्रामा डाटा कुशलतापूर्वक हटाउनको लागि यो अत्यन्त प्रभावकारी बनाउँछ।

आधारभूत सिंट्याक्स

TRUNCATE स्टेटमेन्टको आधारभूत सिंट्याक्स निम्नानुसार छ:

TRUNCATE TABLE table_name;

योले निर्दिष्ट तालिकाबाट सबै रोहरू हटाउँछ र यसलाई यसको प्रारम्भिक अवस्थामा रिसेट गर्दछ। तथापि, हटाइएको डाटा पुनर्प्राप्त गर्न सकिँदैन, त्यसैले यो कमान्ड प्रयोग गर्दा सावधानी अपनाउनु पर्छ।

उदाहरण: आधारभूत प्रयोग

तलको उदाहरणमा, एउटा users तालिका सिर्जना गरिएको छ र त्यसपछि TRUNCATE स्टेटमेन्ट प्रयोग गरेर सफा गरिएको छ:

CREATE TABLE users (
    id INT AUTO_INCREMENT,
    name VARCHAR(100),
    PRIMARY KEY (id)
);

INSERT INTO users (name) VALUES ('Taro'), ('Hanako'), ('Jiro');

-- Execute TRUNCATE
TRUNCATE TABLE users;

-- The table is emptied, and AUTO_INCREMENT is reset.

यो उदाहरणमा, तालिकाको सबै डाटा हटाइएको छ, र नयाँ डाटा इन्सर्ट गर्दा id कलम १ बाट फेरि सुरु हुनेछ।

२. TRUNCATE र DELETE बीचका भिन्नताहरू

गति र प्रदर्शनमा भिन्नताहरू

TRUNCATE DELETE भन्दा उल्लेखनीय रूपमा छिटो छ किनकि यो पूरै तालिकाहरू सफा गर्न विशेष रूपमा डिजाइन गरिएको छ। DELETE ले रोहरू एक-एक गरी हटाउँछ, जसले ठूलो संख्यामा रोहरू हुँदा ढिलो हुन सक्छ। अर्कोतर्फ, TRUNCATE ले तालिकालाई आन्तरिक रूपमा पुनः सिर्जना गरेर डाटा हटाउँछ, जसले बल्क हटाइहरूको लागि यो अत्यन्त कुशल बनाउँछ।

उदाहरण: प्रदर्शन तुलना

लाखौं रोहरू हटाउँदा, DELETE स्टेटमेन्ट यसरी देखिन सक्छ:

DELETE FROM users WHERE condition;

यसको विपरीत, TRUNCATE ले तपाईंलाई सबै रोहरू एकैचोटि हटाउन अनुमति दिन्छ:

TRUNCATE TABLE users;

प्रदर्शन भिन्नता धेरै ठूला तालिकाहरूसँग बढी स्पष्ट हुन्छ—DELETE ले उल्लेखनीय समय लिन सक्छ, जबकि TRUNCATE लगभग तुरुन्तै सम्पन्न हुन्छ।

रोलब्याक भिन्नताहरू

TRUNCATE स्टेटमेन्टलाई रोलब्याक गर्न सकिँदैन। एकपटक निष्पादन भएपछि, डाटा स्थायी रूपमा हटाइएको हुन्छ र पुनर्स्थापना गर्न सकिँदैन। यसको विपरीत, DELETE लाई ट्रान्जेक्सन भित्र प्रयोग गर्दा रोलब्याक गर्न सकिन्छ, जसले त्रुटिहरूको अवस्थामा पुनर्प्राप्ति अनुमति दिन्छ। यसले DELETE लाई निश्चित सन्दर्भहरूमा सुरक्षित बनाउँछ।

चयनात्मक हटाइ भिन्नताहरू

DELETE स्टेटमेन्टले WHERE क्लज प्रयोग गरेर विशिष्ट अवस्थाहरूमा आधारित रोहरू हटाउन सक्छ, जबकि TRUNCATE ले चयनात्मक हटाइ अनुमति दिँदैन। उदाहरणको लागि, केवल एउटा विशिष्ट प्रयोगकर्ता हटाउनको लागि, तपाईं DELETE प्रयोग गर्नुहुनेछ:

DELETE FROM users WHERE id = 1;

किनकि TRUNCATE ले सधैं सबै रोहरू हटाउँछ, DELETE ले केवल चयनित डाटा हटाउन आवश्यक हुँदा बढी उपयुक्त हुन्छ।

३. AUTO_INCREMENT मा TRUNCATE को प्रभाव

AUTO_INCREMENT रिसेट

TRUNCATE निष्पादन गर्दा, तालिकाको सबै डाटा मात्र हटाइँदैन, तर AUTO_INCREMENT काउन्टर पनि रिसेट हुन्छ। यसको मतलब नयाँ डाटा ID १ बाट फेरि सुरु हुनेछ। उदाहरणको लागि, यदि तपाईं ट्रंकेटेसन पछि users तालिकामा इन्सर्ट गर्नुहुन्छ:

INSERT INTO users (name) VALUES ('Ken');
-- id will start again from 1

यो रिसेट केही अवस्थाहरूमा उपयोगी हुन सक्छ, तर यदि ID हरू अन्य तालिकाहरूमा विदेशी कुञ्जीहरूको रूपमा प्रयोग गरिएका छन् भने सावधानी आवश्यक छ, किनकि यसले अप्रत्याशित असंगतिहरू निम्त्याउन सक्छ।

४. TRUNCATE प्रयोग गर्दा सावधानीहरू

डाटा पुनर्प्राप्त गर्न सकिँदैन

TRUNCATE को सबैभन्दा ठूलो जोखिम यो हो कि हटाइएको डाटा पुनर्स्थापना गर्न सकिँदैन। महत्त्वपूर्ण डाटालाई आकस्मिक रूपमा ट्रंकेट गर्नुको मतलब स्थायी क्षति हो। TRUNCATE निष्पादन गर्नुअघि सधैं आफ्नो डाटाको ब्याकअप लिनुहोस्।

विदेशी कुञ्जी बाधाहरू

विदेशी कुञ्जी बाधाहरूसँग भएका तालिकाहरूमा TRUNCATE प्रयोग गर्न सकिँदैन। यस्ता अवस्थाहरूमा, तपाईंले पहिले बाधाहरू हटाउनु पर्छ वा सम्बन्धित डाटालाई अन्य माध्यमहरूबाट ह्यान्डल गर्नु पर्छ।

अनुमति आवश्यकताहरू

TRUNCATE निष्पादन गर्नको लागि, तपाईंसँग तालिकामा DROP विशेषाधिकारहरू हुनु पर्छ। पर्याप्त विशेषाधिकारहरू नभएका प्रयोगकर्ताहरूले यो कमान्ड चलाउन सक्दैनन्, त्यसैले पहिले आफ्नो अनुमतिहरू जाँच्नुहोस्।

५. TRUNCATE बनाम DELETE कहिले प्रयोग गर्ने

TRUNCATE कहिले प्रयोग गर्ने

TRUNCATE सबै टेबल एकै पटक सफा गर्न आवश्यक पर्दा सबैभन्दा उपयुक्त हुन्छ। यो विशेष गरी सबै पङ्क्तिहरू छिटो हटाउन र AUTO_INCREMENT रिसेट गर्न आवश्यक पर्दा उपयोगी हुन्छ, जस्तै परीक्षण डेटा रिफ्रेश गर्दा।

DELETE कहिले प्रयोग गर्ने

DELETE चयनात्मक पङ्क्ति हटाउन आवश्यक पर्दा वा ट्रिगरहरू चलाउनुपर्ने अवस्थामा प्रयोग गर्नुपर्छ। यो निश्चित शर्तहरू अन्तर्गत डेटा सुरक्षित रूपमा हटाउन र डेटाबेसको स्थिरता कायम राख्न उपयुक्त हुन्छ।

6. TRUNCATE सुरक्षित रूपमा प्रयोग गर्ने उत्तम अभ्यासहरू

ब्याकअपको महत्व

TRUNCATE चलाउनु अघि, सधैं तपाईंको डेटा को ब्याकअप बनाउनुहोस्। अनजानेमा चलाएमा डेटा नोक्सानी अपरिवर्तनीय हुन्छ, त्यसैले उत्पादन वातावरणमा अतिरिक्त सावधानी आवश्यक छ।

विकास वातावरणमा परीक्षण

उत्पादनमा प्रयोग गर्नु अघि सधैं स्टेजिङ वा विकास वातावरणमा TRUNCATE परीक्षण गर्नुहोस्। यसले अपेक्षित रूपमा काम गर्छ भन्ने सुनिश्चित गर्दछ र अनपेक्षित समस्याहरूलाई रोक्छ।

AUTO_INCREMENT स्तम्भहरू व्यवस्थापन

TRUNCATE ले AUTO_INCREMENT रिसेट गर्ने कारणले, अनन्य ID र अन्य टेबलहरूसँगको सम्बन्धहरू बाधित नहुनु सुनिश्चित गर्नुहोस्। महत्वपूर्ण प्रणालीहरूमा TRUNCATE चलाउनु अघि सधैं ब्याकअप लिनुहोस् र निर्भरताहरूको समीक्षा गर्नुहोस्।