Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
MySQL + SQL · Lesson 54

Safe UPDATE और DELETE Practices

एक ख़तरनाक गलती

SQL में सबसे महँगी शुरुआती गलती UPDATE या DELETE को WHERE clause बिना चलाना है। यह table की हर row एक साथ बदल या हटा देती है। कुछ सरल आदतें — WHERE, एक test SELECT, transactions — इन commands को सुरक्षित बनाती हैं।

💡 WHERE बिना UPDATE/DELETE सारी rows प्रभावित करता है। हमेशा ठीक जो rows का मतलब हो उन्हें target कीजिए।

हमेशा WHERE इस्तेमाल करें

-- ख़तरा: हर row बदलता है!
UPDATE students SET marks = 0;

-- सुरक्षित: सिर्फ़ एक student
UPDATE students SET marks = 0 WHERE roll = 5;

WHERE clause बदलाव को मेल खाती rows तक सीमित करता है। इसके बिना, पूरी table प्रभावित होती है। कुछ और से पहले WHERE लिखने की आदत डालिए।

पहले SELECT से test करें

-- 1. जाँचिए कौन-सी rows प्रभावित होंगी
SELECT * FROM students WHERE marks < 40;

-- 2. पुष्टि के बाद, बदलाव चलाइए
DELETE FROM students WHERE marks < 40;

पहले उसी WHERE के साथ SELECT चलाना आपको ठीक दिखाता है DELETE या UPDATE कौन-सी rows पर लगेगा। सिर्फ़ तब आगे बढ़िए जब SELECT सही rows दिखाए।

Transaction में लपेटें

START TRANSACTION;
DELETE FROM students WHERE marks < 40;
-- result जाँचिए...
SELECT COUNT(*) FROM students;
-- गलत हो तो:
ROLLBACK;
-- सही हो तो:
COMMIT;

Transaction आपको undo करने देता है। बदलाव गलत लगे, तो ROLLBACK इसे उलट देता है। सिर्फ़ पक्का होने पर COMMIT कीजिए। यह जोखिम भरे edits को आपका safety net है।

सुरक्षा को LIMIT इस्तेमाल करें

DELETE FROM logs WHERE created < '2020-01-01' LIMIT 1000;

LIMIT जोड़ना एक statement कितनी rows हटाता है सीमित करता है। यह runaway delete रोकता है और आपको बड़ी tables नियंत्रित batches में साफ़ करने देता है, चलते-चलते जाँचते हुए।

Safe update mode

MySQL (ख़ासकर Workbench) में safe update mode है जो key column पर WHERE बिना UPDATE या DELETE रोकता है। अगर आपको "You are using safe update mode" जैसा error दिखे, यह आपको बचा रहा है — सही WHERE clause जोड़िए। यह mode ग़लती से mass changes के ख़िलाफ़ सहायक रक्षक है।

आम गलतियाँ

  • WHERE छोड़ना। सबसे ख़तरनाक गलती — यह हर row पर लगता है।
  • SELECT से test न करना। हमेशा प्रभावित rows पहले देखिए।
  • जोखिम भरे बदलावों पर transactions छोड़ना। वे आपको roll back करने देते हैं।
  • Safe update mode से लड़ना। यह आपको बचा रहा है — WHERE जोड़िए।

सारांश

  • WHERE बिना UPDATE/DELETE हर row प्रभावित करता है — सबसे बड़ी SQL गलती।
  • हमेशा ठीक rows target करता WHERE clause शामिल कीजिए।
  • पहले उसी WHERE वाले SELECT से test कीजिए।
  • जोखिम भरे बदलावों को transaction में लपेटिए ताकि ROLLBACK कर सकें।
  • अतिरिक्त सुरक्षा को LIMIT और safe update mode इस्तेमाल कीजिए।

आगे, removal commands तुलना कीजिए DROP vs TRUNCATE vs DELETE में, या कई rows update कीजिए updating multiple rows में।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

अगर मैं WHERE बिना UPDATE या DELETE चलाऊँ तो क्या होता है?
WHERE clause बिना, UPDATE table की हर row बदल देता है, और DELETE हर row हटा देता है। यह आम और गंभीर गलती है जो आपका सारा data एक साथ मिटा या corrupt कर सकती है। जब तक आप सच में सारी rows का मतलब न रखें, हमेशा WHERE clause शामिल कीजिए।
मैं UPDATE या DELETE को सुरक्षित कैसे test करूँ?
पहले उसी WHERE clause के साथ SELECT चलाइए, यह देखने को कि ठीक कौन-सी rows प्रभावित होंगी। जब आप पुष्टि करें SELECT सिर्फ़ आपकी चाही rows लौटाता है, इसे UPDATE या DELETE में बदल दीजिए।
Transactions UPDATE और DELETE को सुरक्षित कैसे बनाते हैं?
Transaction (START TRANSACTION) के अंदर चलाकर, आप result जाँच सकते हैं और कुछ गलत हो तो ROLLBACK कर सकते हैं, बदलाव undo करके। सिर्फ़ पक्का होने के बाद आप COMMIT करते हैं। यह जोखिम भरे बदलावों को safety net देता है।
MySQL में safe update mode क्या है?
Safe update mode एक setting है (ख़ासकर MySQL Workbench में) जो key column पर WHERE clause बिना UPDATE या DELETE रोकती है। यह आपको ग़लती से हर row बदलने से बचाती है, सही WHERE को मजबूर करके।
DELETE के साथ LIMIT क्यों इस्तेमाल करूँ?
DELETE में LIMIT जोड़ना एक statement में कितनी rows हटती हैं सीमित करता है, जो runaway delete रोक सकता है और नियंत्रित batches में delete करने को उपयोगी है। यह बड़ी tables पर अतिरिक्त safety उपाय है।
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicMySQL में CASE Expression आपकी प्रगति: 54 / 151 (36%) · Lesson 55 / 151 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें