4.1 अपडेट सेट स्टेटमेंट
यदि आपको तालिका में मौजूदा अभिलेखों को बदलने की आवश्यकता है, तो इसके लिए हम ऑपरेटर का उपयोग करते हैं UPDATE
।
एक ओर, ऑपरेटर UPDATE
ऑपरेटर के समान है INSERT
, क्योंकि हमें कॉलम के लिए नए मान निर्दिष्ट करने की आवश्यकता है। और दूसरी ओर, ऑपरेटर पर SELECT
, क्योंकि यह आपको डेटा समूहों के साथ तुरंत काम करने की अनुमति देता है।
महत्वपूर्ण! ऑपरेटर का उद्देश्य UPDATE
डेटा को तालिका की एक पंक्ति में नहीं, बल्कि सभी पंक्तियों में बदलना है जो एक निश्चित स्थिति को पूरा करते हैं। और अगर आप एक छोटी सी गलती करते हैं, तो आप तालिका में सभी डेटा आसानी से खो सकते हैं।
अनुरोध का सामान्य दृश्य:
UPDATE table SET
column 1 = expression 1,
column 2 = expression 2,
column 3 = expression 3
WHERE condition;
आइए एक प्रश्न लिखते हैं जो हमारे सभी कर्मचारियों के वेतन में 100 की वृद्धि करेगा। हमारी क्वेरी इस तरह दिखाई देगी:
UPDATE employee SET
salary = salary+100;
और अब 50 हजार से कम सैलरी वाले सभी लोगों के लिए भी हम इसमें 20 फीसदी की बढ़ोतरी करेंगे। अनुरोध उदाहरण:
UPDATE employee SET
salary = salary*1.2
WHERE salary<50000;
और निश्चित रूप से, हम निदेशक के वेतन में 2 गुना वृद्धि करेंगे, यह उसके बिना कैसे हो सकता है:
UPDATE employee SET
salary = salary*2
WHERE id=4;
4.2 जटिल डेटा संशोधन परिदृश्य
यदि आप एक ही समय में कई तालिकाओं में डेटा बदलने का निर्णय लेते हैं, या जब आप एक तालिका में डेटा बदलते हैं, तो आपको इसे दूसरे से डेटा भरने की आवश्यकता होती है, या पहले को बदलने की प्रक्रिया में बस किसी अन्य तालिका के डेटा का उपयोग करें, तब आश्चर्य हमारा इंतजार करता है।
आइए कर्मचारी तालिका में मौजूद उपयोगकर्ता तालिका में सभी उपयोगकर्ताओं के स्तर को बदलने का प्रयास करें। सरलता के लिए, हम नाम से उपयोगकर्ताओं के संयोग की जाँच करेंगे।
हम इस प्रश्न को कैसे लिखना चाहेंगे:
UPDATE user SET
level = 80,
WHERE user . name IN ( list of names from employee table );
चलिए, इस क्वेरी में कर्मचारी तालिका से नामों की एक सूची जोड़ते हैं:
UPDATE user SET
level = 80,
WHERE user.name IN (select name from employee);
दिलचस्प! नाम प्राप्त करने के लिए स्वयं SQL क्वेरी कार्य के विवरण से भी कम हो गई। SQL के निर्माताओं ने अपनी रोटी व्यर्थ नहीं खाई।
आपको परेशान करने के लिए मजबूर -यह तरीका काम नहीं करेगा. पहले आपको इन तालिकाओं में शामिल होने की आवश्यकता है, यह कुछ इस तरह दिखाई देगी:
UPDATE table 1, table 2 SET
column 1 = expression 1,
column 2 = expression 2,
column 3 = expression 3
WHERE table 1.id = table 2.ref_id;
आइए इसे थोड़ा और कठिन बनाते हैं। आपको केवल अच्छे कर्मचारियों के लिए स्तर 80 पर सेट करने की आवश्यकता है जिनका वेतन 50000 से अधिक होगा। पूरा समाधान इस तरह दिखेगा:
UPDATE user, good_employees SET
user.level = 80
WHERE user.name = good_employees.name;
तालिकाओं का ऐसा जुड़ाव वास्तव में होता है INNER JOIN
, ताकि अंत में केवल वही उपयोगकर्ता बचे रहें जिनका नाम दूसरी तालिका में नाम से मेल खाता है।
लेकिन हमें अभी भी किसी तरह अच्छे कर्मचारियों का चयन करने की आवश्यकता है, तो चलिए कुछ और कोड जोड़ते हैं:
SELECT * FROM employee WHERE salary >= 50000
और अब हम इस तालिका को अपनी अंतिम क्वेरी में प्रतिस्थापित करते हैं:
UPDATE user,
(SELECT * FROM employee WHERE salary >= 50000) good_emps
SET
user.level = 80
WHERE user.name = good_emps.name;
अब इसके साथ जियो।