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;
ఇప్పుడు 50K కంటే తక్కువ జీతం ఉన్న ప్రతి ఒక్కరికీ , మేము దానిని 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వే కంటే ఎక్కువ ఉన్న మంచి ఉద్యోగుల కోసం మాత్రమే మీరు స్థాయిని 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;
ఇప్పుడు దానితో జీవించండి.
GO TO FULL VERSION