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;

இன்னும் கொஞ்சம் சிரமப்படுவோம். 50,000க்கு மேல் சம்பளம் வாங்கும் நல்ல ஊழியர்களுக்கு மட்டுமே லெவலை 80 ஆக அமைக்க வேண்டும். முழுமையான தீர்வு இப்படி இருக்கும்:

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;

இப்போது அதனுடன் வாழுங்கள்.