Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL डेटाबेस में डेटा अपडेट करें

यह पृष्ठ बताता है कि MySQL डेटाबेस में मौजूदा डेटा को कैसे अपडेट किया जाए।

इसलिए हमने अपने डेटाबेस में डेटा पहले ही जोड़ लिया है। लेकिन अब हमें एहसास हुआ कि हमारे डेटा में एक गलती है। सेब को एक UnitId सौंपा गया है का 1 — लेकिन यह 2 होना चाहिए ।

आप इसे यहां देख सकते हैं:

कोई बात नहीं। हम अभी उस रिकॉर्ड को अपडेट करेंगे।

UPDATE कथन

एसक्यूएल UPDATE स्टेटमेंट हमें अपने डेटाबेस में डेटा को अपडेट करने की अनुमति देता है। हम इस स्टेटमेंट का इस्तेमाल 1 . से यूनिट आईडी बदलने के लिए कर सकते हैं करने के लिए 2 . ऐसा करने के लिए, हम WHERE . का उपयोग करते हैं सटीक रिकॉर्ड निर्दिष्ट करने के लिए क्लॉज जिसे हमें अपडेट करने की आवश्यकता है। इस तरह:

UPDATE Fruit
SET UnitId = 2
WHERE FruitId = 1;

आम तौर पर, UPDATE करते समय सलाह दी जाती है ऑपरेशन, उस रिकॉर्ड के आईडी फ़ील्ड को निर्दिष्ट करने के लिए जिसे आप अपडेट करने का प्रयास कर रहे हैं (या इसकी प्राथमिक कुंजी जो भी हो)। यह गलती से गलत रिकॉर्ड को अपडेट करने से बचाने में मदद करता है। इस उदाहरण में हम जानते हैं कि सेब में FruitId होता है का 1 . लेकिन हो सकता है कि आप जिस रिकॉर्ड को अपडेट करने का प्रयास कर रहे हैं, उसकी आईडी हमेशा आपको पता न हो। उस स्थिति में आप कुछ ऐसा कर सकते हैं:

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple' AND UnitId = 1;

हम इनमें से किसी एक को SELECT . के साथ फ़ॉलो कर सकते हैं कथन और यहाँ परिणाम है:

ध्यान दें कि DateUpdated कॉलम को भी अपडेट कर दिया गया है, भले ही हमने उस कॉलम के लिए अपडेट निर्दिष्ट नहीं किया है। ऐसा इसलिए है, क्योंकि जब हमने तालिका बनाई थी, तो हम उस कॉलम को वर्तमान दिनांक/समय के साथ अद्यतन करने के लिए हर बार रिकॉर्ड में अपडेट होने के लिए सेट करते थे।

यहां वह कोड है जिसका उपयोग हमने उस कॉलम को बनाते समय किया था:

DateUpdated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

अधिक विशेष रूप से, यह ON UPDATE CURRENT_TIMESTAMP . है इसके परिणामस्वरूप जब हमने UPDATE चलाया तो कॉलम अभी अपडेट किया जा रहा था बयान।

सुरक्षित अपडेट

हम उतनी ही आसानी से अपना UPDATE बना सकते थे इस तरह से कमांड करें (बिना AND UnitId = 1 ):

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple';

हालाँकि, यदि आप ऐसा करने का प्रयास करते हैं, तो आपको निम्न त्रुटि का सामना करना पड़ सकता है:

सुरक्षित अपडेट मोड

यदि आप उपरोक्त त्रुटि का सामना करते हैं, तो ऐसा इसलिए है क्योंकि आपका MySQL कनेक्शन सुरक्षित अपडेट मोड में चल रहा है। यह हमें गलती से बड़ी मात्रा में डेटा को ओवरराइट करने से रोकने में मदद करता है। वास्तव में, अगर हम WHERE . को शामिल करना भूल गए थे क्लॉज हम तालिका में हर एक रिकॉर्ड को अपडेट करेंगे!

हां, निम्नलिखित कोड चलाने से हमारी तालिका के प्रत्येक रिकॉर्ड को केला में अपडेट किया जाएगा। :

UPDATE Fruit
SET FruitName = 'Banana'

इसलिए सुरक्षित अपडेट मोड में चलने का वास्तविक लाभ है।

हालाँकि, यदि आपको वास्तव में उस क्वेरी को निष्पादित करने की आवश्यकता है (या यदि आपके सभी फल वास्तव में केले में बदल गए हैं), तो आप निम्न में से एक कर सकते हैं:

  • एक KEY शामिल करने के लिए अपनी क्वेरी को संशोधित करें कॉलम। हमने इसे इस पृष्ठ के शीर्ष पर उदाहरणों में किया है।
  • सुरक्षित अपडेट मोड अक्षम करें।

सुरक्षित अपडेट मोड अक्षम करें

यदि आप पाते हैं कि आपको UPDATE करने की आवश्यकता है KEY . का उपयोग किए बिना ऑपरेशन फ़ील्ड, आप हमेशा सुरक्षित अपडेट मोड को अक्षम कर सकते हैं।

सुरक्षित अपडेट मोड को अक्षम करने के लिए, अपना UPDATE चलाने से पहले निम्न आदेश चलाएँ:कथन:

set sql_safe_updates = 0;

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

सुरक्षित अपडेट मोड को सक्षम करने के लिए, निम्नलिखित चलाएँ:

set sql_safe_updates = 1;

वास्तव में, आप सब कुछ एक ही समय में इस तरह चला सकते हैं:

set sql_safe_updates = 0;

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple';

select * from Fruit;

set sql_safe_updates = 1;

एकाधिक फ़ील्ड अपडेट करें

आप प्रत्येक फ़ील्ड असाइनमेंट को अलग करने के लिए अल्पविराम का उपयोग करके एकाधिक फ़ील्ड अपडेट कर सकते हैं। इस तरह:

UPDATE Fruit
SET FruitName = 'Red Grapes', Inventory = '11'
WHERE FruitId = 5;

परिणाम:


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2018 में MySQL:8.0 और अन्य टिप्पणियों में क्या है

  2. MySQL और PHP:सिरिलिक वर्णों के साथ UTF-8

  3. तंग करना? #1146 - तालिका 'xxx.xxxxx' मौजूद नहीं है

  4. MySQLDumper:एक PHP और पर्ल आधारित MySQL डेटाबेस बैकअप टूल

  5. MySQL क्वेरी में IF कंडीशन के साथ गिनें