खोज…


वाक्य - विन्यास

  • अद्यतन [LOW_PRIORITY] [IGNORE] तालिका नाम SET column1 = अभिव्यक्ति 1, स्तंभ 2 = अभिव्यक्ति 2, ... [जहां शर्तें]; // सरल सिंगल टेबल अपडेट

  • अद्यतन [LOW_PRIORITY] [IGNORE] तालिका नाम SET column1 = अभिव्यक्ति 1, column2 = अभिव्यक्ति2, ... [WHERE स्थितियां] [अभिव्यक्ति द्वारा आदेश] ASC | DESC]] [लिमिट रो_काउंट]; // ऑर्डर और सीमा के अनुसार अपडेट करें

  • अद्यतन [LOW_PRIORITY] [IGNORE] तालिका 1, तालिका 2, ... सेट कॉलम 1 = अभिव्यक्ति 1, कॉलम 2 = अभिव्यक्ति 2, ... [जहां शर्तें]; // एकाधिक तालिका अद्यतन

मूल अद्यतन

एक पंक्ति को अद्यतन करना

UPDATE customers SET email='[email protected]' WHERE id=1

यह क्वेरी customers तालिका में email की सामग्री को स्ट्रिंग [email protected] अपडेट करती है, जहां id का मूल्य 1 के बराबर है। डेटाबेस तालिका की पुरानी और नई सामग्री क्रमशः बाईं और दाईं ओर नीचे दी गई है:

यहाँ छवि विवरण दर्ज करें


सभी पंक्तियों को अद्यतन करना

UPDATE customers SET lastname='smith'

यह क्वेरी customers तालिका में हर प्रविष्टि के लिए अंतिम lastname की सामग्री को अद्यतन करती है। डेटाबेस तालिका की पुरानी और नई सामग्री क्रमशः नीचे बाईं और दाईं ओर चित्रित की गई है:

यहाँ छवि विवरण दर्ज करें

सूचना: UPDATE क्वेरी में सशर्त खंड (WHERE) का उपयोग करना आवश्यक है। यदि आप किसी भी सशर्त खंड का उपयोग नहीं करते हैं, तो उस तालिका की विशेषता के सभी रिकॉर्ड अपडेट किए जाएंगे। उपरोक्त उदाहरण में ग्राहकों की तालिका में अंतिम नाम का नया मान (स्मिथ) सभी पंक्तियों के लिए सेट किया गया है।

Join पैटर्न से अपडेट करें

एक उत्पादन तालिका कहा जाता है पर विचार करें questions_mysql और एक मेज iwtQuestions (आयातित worktable) एक से आयात सीएसवी डेटा के अंतिम बैच का प्रतिनिधित्व LOAD DATA INFILE । आयात करने से पहले वर्कटेबल को काट दिया जाता है, डेटा आयात किया जाता है, और यह प्रक्रिया यहां नहीं दिखाई जाती है।

हमारे आयातित वर्कटेबल डेटा से जुड़कर हमारे प्रोडक्शन डेटा को अपडेट करें।

UPDATE questions_mysql q -- our real table for production 
join iwtQuestions i -- imported worktable 
ON i.qId = q.qId
SET q.closeVotes = i.closeVotes,
q.votes = i.votes, 
q.answers = i.answers, 
q.views = i.views;

उपनाम q और i का उपयोग तालिका संदर्भों को संक्षिप्त करने के लिए किया जाता है। यह विकास और पठनीयता को आसान बनाता है।

qId , प्राथमिक कुंजी, Stackoverflow प्रश्न आईडी का प्रतिनिधित्व करता है। शामिल होने से पंक्तियों के मिलान के लिए चार कॉलम अपडेट किए गए हैं।

आदेश द्वारा और सीमा के साथ अद्यतन करें

यदि आपके अद्यतन SQL कथन में ORDER BY क्लॉज निर्दिष्ट किया गया है, तो पंक्तियों को निर्दिष्ट किए गए क्रम में अपडेट किया जाता है।

यदि आपके SQL स्टेटमेंट में LIMIT क्लॉज निर्दिष्ट है, तो यह उन पंक्तियों की संख्या पर एक सीमा रखता है जिन्हें अपडेट किया जा सकता है। कोई सीमा नहीं है, नहीं है LIMIT खंड निर्दिष्ट नहीं।

ORDER BY और LIMIT उपयोग मल्टी टेबल अपडेट के लिए नहीं किया जा सकता है।

MySQL UPDATE के लिए ORDER BY और LIMIT का सिंटेक्स है,

UPDATE [ LOW_PRIORITY ] [ IGNORE ]
tableName
SET column1 = expression1,
    column2 = expression2,
    ...
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]]
[LIMIT row_count];

---> Example
UPDATE employees SET isConfirmed=1 ORDER BY joiningDate LIMIT 10

उपरोक्त उदाहरण में, 10 पंक्तियों को कर्मचारियों के joiningDate के आदेश के अनुसार अद्यतन किया जाएगा।

एकाधिक तालिका अद्यतन

कई तालिका UPDATE , यह शर्तों को पूरा करने वाले प्रत्येक निर्दिष्ट तालिकाओं में पंक्तियों को अद्यतन करता है। प्रत्येक मिलान पंक्ति को एक बार अपडेट किया जाता है, भले ही वह कई बार स्थितियों से मेल खाती हो।

कई तालिका में UPDATE , ORDER BY और LIMIT उपयोग नहीं किया जा सकता है।

मल्टी टेबल UPDATE का सिंटैक्स है,

UPDATE [LOW_PRIORITY] [IGNORE] 
table1, table2, ...
    SET column1 = expression1,
        column2 = expression2,
        ...
    [WHERE conditions]

उदाहरण के लिए दो तालिकाओं, products और salesOrders । मामले में, हम बिक्री के आदेश से एक विशेष उत्पाद की मात्रा को कम करते हैं जो पहले से ही रखा गया है। फिर हमें products तालिका के अपने स्टॉक कॉलम में उस मात्रा को बढ़ाने की भी आवश्यकता है। यह नीचे की तरह एकल SQL अपडेट स्टेटमेंट में किया जा सकता है।

UPDATE products, salesOrders
  SET salesOrders.Quantity = salesOrders.Quantity - 5, 
      products.availableStock = products.availableStock + 5
WHERE products.productId = salesOrders.productId
  AND salesOrders.orderId = 100 AND salesOrders.productId = 20;

उपरोक्त उदाहरण में, '5' की salesOrders टेबल से कम की salesOrders और WHERE शर्तों के अनुसार products तालिका में बढ़ाई जाएगी।

थोक अद्यतन

विभिन्न मूल्यों के साथ कई पंक्तियों को अपडेट करते समय बल्क अपडेट का उपयोग करना अधिक तेज होता है।

UPDATE people 
SET name = 
  (CASE id WHEN 1 THEN 'Karl'
           WHEN 2 THEN 'Tom'
           WHEN 3 THEN 'Mary'
   END)
WHERE id IN (1,2,3);

बल्क अपडेट करके प्रत्येक पंक्ति को अद्यतन करने के लिए केवल एक क्वेरी के बजाय सर्वर पर एक क्वेरी भेजी जा सकती है। मामलों में वे सभी संभावित पैरामीटर होने चाहिए जो WHERE क्लॉज में देखे गए हैं।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow