4.1 SET स्टेटमेंट अपडेट करा
जर आपल्याला टेबलमधील विद्यमान रेकॉर्ड बदलण्याची आवश्यकता असेल तर यासाठी आम्ही ऑपरेटर वापरतो 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;
आणि आता ५० हजार पेक्षा कमी पगार असलेल्या प्रत्येकासाठी आम्ही त्यात २०% वाढ करू. विनंतीचे उदाहरण:
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 क्वेरी कार्याच्या वर्णनापेक्षा अगदी लहान असल्याचे दिसून आले. एसक्यूएलच्या निर्मात्यांनी त्यांची भाकरी व्यर्थ खाल्ली नाही.
तुम्हाला अस्वस्थ करण्यास भाग पाडले -हा दृष्टिकोन काम करणार नाही. प्रथम आपल्याला या सारण्यांमध्ये सामील होणे आवश्यक आहे, ते असे काहीतरी दिसेल:
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;
चला ते थोडे अधिक कठीण करूया. ज्यांचा पगार ५०k पेक्षा जास्त असेल अशा चांगल्या कर्मचाऱ्यांसाठी तुम्हाला ८० वर स्तर सेट करणे आवश्यक आहे. संपूर्ण समाधान असे दिसेल:
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;
आता त्याच्याबरोबर जगा.