update

পাঠ ১৫ · UPDATE

UPDATE কী?

টেবিলে আগে থেকে থাকা ডেটা পরিবর্তন করতে UPDATE ব্যবহার করি। যেমন শিক্ষার্থীর সেকশন বদলানো, মোবাইল নম্বর বদলানো, নম্বর সংশোধন করা।

এই পাঠের নিয়ম
  • এই পাঠের কমান্ডগুলো টেবিলের ডেটা স্থায়ীভাবে বদলে দেয়।
  • প্রতিটি উদাহরণ মূল ডেটা থেকে শুরু হয়েছে। একটি উদাহরণের পরিবর্তন পরের উদাহরণে নেই।
  • SQL Playground এ চর্চা করলে প্রতিটি উদাহরণের পরে Reset করে আবার মূল টেবিল তৈরি করো। তাহলে ফলাফল এই পাতার সাথে মিলবে।

সিনট্যাক্স

SQL Syntax Rule
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 এর সারিতে
আগে৫টি সারি
rollnameclasssectiongroup_name
1Rudra11AScience
2Habib12ACommerce
3Pappu11BArts
4Anik12BScience
5Priya11ACommerce
↓ পরিবর্তনের পরে
পরে৫টি সারি
rollnameclasssectiongroup_name
1Rudra11AScience
2Habib12ACommerce
3Pappu11BArts
4Anik12BScience
5Priya11BCommerce

উদাহরণ ২: একসাথে একাধিক কলাম

Pappu (roll 3) Barisal থেকে Rajshahi তে গেছে, মোবাইল নম্বরও বদলেছে। কলামগুলো কমা দিয়ে আলাদা করি।

UPDATE contact
SET address = 'Rajshahi', mobile_no = '01799999999'
WHERE roll = 3;
আগে৫টি সারি
contact_idrolladdressmobile_no
1011Gopalganj01711111111
1022Narayanganj01822222222
1033Barisal01933333333
1044Dhaka01644444444
1055Khulna01555555555
↓ পরিবর্তনের পরে
পরে৫টি সারি
contact_idrolladdressmobile_no
1011Gopalganj01711111111
1022Narayanganj01822222222
1033Rajshahi01799999999
1044Dhaka01644444444
1055Khulna01555555555

উদাহরণ ৩: হিসাব করে পরিবর্তন

ICT (275) পরীক্ষায় সবাইকে ৫ নম্বর গ্রেস দেওয়া হলো। নতুন নম্বর = আগের নম্বর + 5।

UPDATE result
SET marks = marks + 5
WHERE subject_code = 275;
  • marks = marks + 5→প্রতিটি সারির নিজের marks এর সাথে 5 যোগ
  • WHERE subject_code = 275→শুধু ICT এর সারিগুলো
ICT এর রেজাল্ট (আগে)৫টি সারি
rollsubject_codemarks
127588
227578
327529
427531
527565
↓ পরিবর্তনের পরে
ICT এর রেজাল্ট (পরে)৫টি সারি
rollsubject_codemarks
127593
227583
327534
427536
527570

গ্রেসের পরে Pappu (34) ও Anik (36) দুজনেই পাস নম্বর পেয়েছে।

আরও একটি উদাহরণ: WHERE ভুলে গেলে কী হয়

ধরো Pappu কে class 12 তে তুলতে চেয়েছিলাম, কিন্তু WHERE লিখতে ভুলে গেছি।

UPDATE student SET class = 12;
আগে৫টি সারি
rollnameclasssectiongroup_name
1Rudra11AScience
2Habib12ACommerce
3Pappu11BArts
4Anik12BScience
5Priya11ACommerce
↓ পরিবর্তনের পরে
পরে৫টি সারি
rollnameclasssectiongroup_name
1Rudra12AScience
2Habib12ACommerce
3Pappu12BArts
4Anik12BScience
5Priya12ACommerce

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_idrolladdressmobile_no
1011Gopalganj01711111111
1022Narayanganj01811111111
1033Barisal01933333333
1044Dhaka01644444444
1055Khulna01555555555
২

roll 4 এর ICT (275) নম্বর 31 থেকে 35 করো।

উত্তর দেখো
UPDATE result
SET marks = 35
WHERE roll = 4 AND subject_code = 275;
পরিবর্তনের পরে৩টি সারি
rollsubject_codemarks
410170
417490
427535
৩

Pappu (roll 3) কে class 12 তে তোলো।

উত্তর দেখো
UPDATE student SET class = 12 WHERE roll = 3;
পরিবর্তনের পরে৫টি সারি
rollnameclasssectiongroup_name
1Rudra11AScience
2Habib12ACommerce
3Pappu12BArts
4Anik12BScience
5Priya11ACommerce