UPDATE কী?
টেবিলে আগে থেকে থাকা ডেটা পরিবর্তন করতে UPDATE ব্যবহার করি। যেমন শিক্ষার্থীর সেকশন বদলানো, মোবাইল নম্বর বদলানো, নম্বর সংশোধন করা।
- এই পাঠের কমান্ডগুলো টেবিলের ডেটা স্থায়ীভাবে বদলে দেয়।
- প্রতিটি উদাহরণ মূল ডেটা থেকে শুরু হয়েছে। একটি উদাহরণের পরিবর্তন পরের উদাহরণে নেই।
- SQL Playground এ চর্চা করলে প্রতিটি উদাহরণের পরে Reset করে আবার মূল টেবিল তৈরি করো। তাহলে ফলাফল এই পাতার সাথে মিলবে।
সিনট্যাক্স
UPDATE [টেবিলের নাম] SET [কলাম] = [নতুন মান] WHERE [শর্ত];
UPDATE এর পরে টেবিলের নাম, SET এর পরে কোন কলামে কী মান বসবে, আর WHERE এর পরে কোন সারিগুলো বদলাবে।
লাল সারি = যে সারি বদলাবে বা মুছে যাবে। সবুজ সারি = বদলের পরের নতুন মান।
উদাহরণ ১: একটি মান পরিবর্তন
Priya (roll 5) section A থেকে section B তে গেছে।
UPDATE student SET section = 'B' WHERE roll = 5;ব্যাখ্যা
UPDATE student→student টেবিলে পরিবর্তন হবেSET section = 'B'→section কলামে B বসবেWHERE roll = 5→শুধু roll 5 এর সারিতে
| roll | name | class | section | group_name |
|---|---|---|---|---|
| 1 | Rudra | 11 | A | Science |
| 2 | Habib | 12 | A | Commerce |
| 3 | Pappu | 11 | B | Arts |
| 4 | Anik | 12 | B | Science |
| 5 | Priya | 11 | A | Commerce |
| roll | name | class | section | group_name |
|---|---|---|---|---|
| 1 | Rudra | 11 | A | Science |
| 2 | Habib | 12 | A | Commerce |
| 3 | Pappu | 11 | B | Arts |
| 4 | Anik | 12 | B | Science |
| 5 | Priya | 11 | B | Commerce |
উদাহরণ ২: একসাথে একাধিক কলাম
Pappu (roll 3) Barisal থেকে Rajshahi তে গেছে, মোবাইল নম্বরও বদলেছে। কলামগুলো কমা দিয়ে আলাদা করি।
UPDATE contact
SET address = 'Rajshahi', mobile_no = '01799999999'
WHERE roll = 3;| contact_id | roll | address | mobile_no |
|---|---|---|---|
| 101 | 1 | Gopalganj | 01711111111 |
| 102 | 2 | Narayanganj | 01822222222 |
| 103 | 3 | Barisal | 01933333333 |
| 104 | 4 | Dhaka | 01644444444 |
| 105 | 5 | Khulna | 01555555555 |
| contact_id | roll | address | mobile_no |
|---|---|---|---|
| 101 | 1 | Gopalganj | 01711111111 |
| 102 | 2 | Narayanganj | 01822222222 |
| 103 | 3 | Rajshahi | 01799999999 |
| 104 | 4 | Dhaka | 01644444444 |
| 105 | 5 | Khulna | 01555555555 |
উদাহরণ ৩: হিসাব করে পরিবর্তন
ICT (275) পরীক্ষায় সবাইকে ৫ নম্বর গ্রেস দেওয়া হলো। নতুন নম্বর = আগের নম্বর + 5।
UPDATE result
SET marks = marks + 5
WHERE subject_code = 275;marks = marks + 5→প্রতিটি সারির নিজের marks এর সাথে 5 যোগWHERE subject_code = 275→শুধু ICT এর সারিগুলো
| roll | subject_code | marks |
|---|---|---|
| 1 | 275 | 88 |
| 2 | 275 | 78 |
| 3 | 275 | 29 |
| 4 | 275 | 31 |
| 5 | 275 | 65 |
| roll | subject_code | marks |
|---|---|---|
| 1 | 275 | 93 |
| 2 | 275 | 83 |
| 3 | 275 | 34 |
| 4 | 275 | 36 |
| 5 | 275 | 70 |
গ্রেসের পরে Pappu (34) ও Anik (36) দুজনেই পাস নম্বর পেয়েছে।
আরও একটি উদাহরণ: WHERE ভুলে গেলে কী হয়
ধরো Pappu কে class 12 তে তুলতে চেয়েছিলাম, কিন্তু WHERE লিখতে ভুলে গেছি।
UPDATE student SET class = 12;| roll | name | class | section | group_name |
|---|---|---|---|---|
| 1 | Rudra | 11 | A | Science |
| 2 | Habib | 12 | A | Commerce |
| 3 | Pappu | 11 | B | Arts |
| 4 | Anik | 12 | B | Science |
| 5 | Priya | 11 | A | Commerce |
| roll | name | class | section | group_name |
|---|---|---|---|---|
| 1 | Rudra | 12 | A | Science |
| 2 | Habib | 12 | A | Commerce |
| 3 | Pappu | 12 | B | Arts |
| 4 | Anik | 12 | B | Science |
| 5 | Priya | 12 | A | Commerce |
WHERE না থাকায় সব সারিতে class 12 বসে গেছে। কোনো সতর্কবার্তা আসে না।
- UPDATE চালানোর আগে একই WHERE দিয়ে SELECT চালাও। যেমন
SELECT * FROM student WHERE roll = 3;। ঠিক সারিগুলো এলে তারপর UPDATE চালাও। - শর্তে প্রাইমারি কী (যেমন roll) ব্যবহার করো। নাম দিয়ে শর্ত দিলে একই নামের অন্যজনও বদলে যেতে পারে।
- লেখা নতুন মান সিঙ্গেল কোটে, সংখ্যা কোট ছাড়া।
অনুশীলন
প্রতিটি প্রশ্নের Query নিজে লেখো। চাইলে SQL Playground এ টেবিল তৈরি করে চালিয়ে দেখো। তারপর উত্তর মিলিয়ে নাও।
Habib (roll 2) এর মোবাইল নম্বর বদলে 01811111111 করো।
উত্তর দেখো
UPDATE contact
SET mobile_no = '01811111111'
WHERE roll = 2;| contact_id | roll | address | mobile_no |
|---|---|---|---|
| 101 | 1 | Gopalganj | 01711111111 |
| 102 | 2 | Narayanganj | 01811111111 |
| 103 | 3 | Barisal | 01933333333 |
| 104 | 4 | Dhaka | 01644444444 |
| 105 | 5 | Khulna | 01555555555 |
roll 4 এর ICT (275) নম্বর 31 থেকে 35 করো।
উত্তর দেখো
UPDATE result
SET marks = 35
WHERE roll = 4 AND subject_code = 275;| roll | subject_code | marks |
|---|---|---|
| 4 | 101 | 70 |
| 4 | 174 | 90 |
| 4 | 275 | 35 |
Pappu (roll 3) কে class 12 তে তোলো।
উত্তর দেখো
UPDATE student SET class = 12 WHERE roll = 3;| roll | name | class | section | group_name |
|---|---|---|---|---|
| 1 | Rudra | 11 | A | Science |
| 2 | Habib | 12 | A | Commerce |
| 3 | Pappu | 12 | B | Arts |
| 4 | Anik | 12 | B | Science |
| 5 | Priya | 11 | A | Commerce |
