मैं wampserver 2.2 का उपयोग करता हूं। जब मैं phpMyAdmin में तालिका के सभी रिकॉर्ड हटाना चाहता हूं (सभी का चयन करें) यह केवल एक रिकॉर्ड को हटाता है न कि सभी रिकॉर्ड को। यह सभी रिकॉर्ड क्यों नहीं हटाता है?
SHIFT-DEL
मैं wampserver 2.2 का उपयोग करता हूं। जब मैं phpMyAdmin में तालिका के सभी रिकॉर्ड हटाना चाहता हूं (सभी का चयन करें) यह केवल एक रिकॉर्ड को हटाता है न कि सभी रिकॉर्ड को। यह सभी रिकॉर्ड क्यों नहीं हटाता है?
SHIFT-DEL
जवाबों:
आपके पास 2 विकल्प हैं delete
और truncate
:
delete from mytable
यह तालिका की सभी सामग्री को हटा देगा, ऑटोइनक्रीमेंटल आईडी को रीसेट नहीं करेगा, यह प्रक्रिया बहुत धीमी है। यदि आप विशिष्ट रिकॉर्ड हटाना चाहते हैं, तो अंत में एक क्लॉज जोड़ें।
truncate myTable
इससे टेबल रीसेट हो जाएगा यानी सभी ऑटो इंक्रीमेंटल फील्ड रीसेट हो जाएंगे। इसका DDL और इसका बहुत तेज होना। आप किसी भी विशिष्ट रिकॉर्ड को नहीं हटा सकते truncate
।
Sql टैब पर जाएं नीचे दिए गए क्वेरी में से एक चलाएं:
delete from tableName;
हटाएं : आपकी तालिका से सभी पंक्तियों को हटा देगा। अगला इन्सर्ट अगली ऑटो इंक्रीमेंट आईडी लेगा।
या
truncate tableName;
Truncate : आपकी तालिका से पंक्तियों को हटा देगा लेकिन यह 1 के साथ नई पंक्ति से शुरू होगा।
उदाहरण के साथ एक विस्तृत ब्लॉग: http://sforsuresh.in/phpmyadmin-de हटाना-rows-mysql-table/
इस क्वेरी का उपयोग करें:
DELETE FROM tableName;
नोट: कुछ विशिष्ट रिकॉर्ड को हटाने के लिए आप उस स्थिति को दे सकते हैं जहां क्लॉज में क्लॉज भी है।
या आप इस क्वेरी का उपयोग कर सकते हैं:
truncate tableName;
यह भी याद रखें कि आपका अन्य तालिका के साथ कोई संबंध नहीं होना चाहिए। यदि तालिका में कोई विदेशी कुंजी बाधा होगी, तो वे रिकॉर्ड हटाए नहीं जाएंगे और त्रुटि देंगे।
'ट्रंककेट टेबलनेम' एक मेज पर विफल होगा जिसमें मुख्य बाधा निर्धारित है। यह भी टेबल AUTO_INCREMENT
वैल्यू को रिवाइंड नहीं करेगा । इसके बजाय, सभी तालिका प्रविष्टियों को हटा दें और इस sql सिंटैक्स का उपयोग करके अनुक्रमणिका को वापस 1 पर रीसेट करें:
DELETE FROM tableName;
ALTER TABLE tableName AUTO_INCREMENT = 1
एक रोचक तथ्य।
मुझे यकीन था कि TRUNCATE हमेशा बेहतर प्रदर्शन करेगा, लेकिन मेरे मामले में, विदेशी कुंजियों के साथ लगभग 30 तालिकाओं वाले एक db के लिए, केवल कुछ पंक्तियों के साथ आबादी में, सभी तालिकाओं को TRUNCATE करने में लगभग 12 सेकंड का समय लगा, केवल कुछ सौ मिलीसेकंड के विपरीत पंक्तियों को प्राप्त करने के लिए। ऑटो इंक्रीमेंट सेट करना कुल मिलाकर लगभग एक सेकंड लगता है, लेकिन यह अभी भी बहुत बेहतर है।
तो मैं सुझाव दूंगा कि दोनों कोशिश करें, देखें कि आपके मामले के लिए कौन सा काम तेजी से होता है।
क्वेरी लिखें: 'Your_table_name' को काटें;
DELETE FROM tableName