یکی از دستورات بسیار مهم در SQL عبارت UPDATE است که نقش حیاتی را در تغییر و اصلاح رکوردهای موجود درون پایگاه داده ایفا میکند. به همراه این دستور بندهای مهمی از کوئریها مانند SET و WHERE میآیند که در واقع باعث افزایش دقت دستور UPDATE میشوند. برای تسلط و استفاده بهتر از این دستور باید نسبت به استفاده از این کلمات کلیدی هم آگاهی داشته باشید. در مثالهایی که آوردهایم سعی کردیم به کاملترین صورت انواع روش پیادهسازی دستور UPDATE را پوشش دهیم. در این مطلب از مجله فرادرس سینتکس این عبارت، موارد کاربرد و بهترین روشهای استفاده از دستور UPDATE در SQL را بررسی خواهیم کرد. هر قدر در این مطلب پیش برویم بیشتر با روشهای پیادهسازی دستور UPDATE در سناریوهای مختلف آشنا خواهیم شد. بنابراین، اگر میخواهید به طور کامل با این دستور آشنا شوید، تا انتهای مطلب، آن را مطالعه کنید.
دستور UPDATE در SQL
دستور UPDATE در SQL برای تغییردادن رکوردی که هم اکنون در جدول پایگاه داده موجود است بکار میرود. عملکرد این دستور به گونهای است که بدون تغییر همه رکورد، مقادیر ذخیره شده در یک فیلد یا بیشتر بهطور سفارشی تغییر کنند. ساختار پایه شامل مواردی است که در زیر فهرست کردهایم.
- مشخص کردن نام جدولی که عملیات روی دادههای آن انجام خواهد شد.
- ستونهایی که باید بهروزرسانی شوند.
- مقادیر جدید که باید مقادیر قدیمی شوند.
- شرایطی که در عبارت WHERE میآیند تا مشخص کنند کدام رکوردها باید بهروزرسانی شوند.
دستور UPDATE در SQL روش سادهای برای بهروزرسانی دادهها بهوسیله تصحیح دادههای غلط فراهم میکند. این کار را با حذف و اضافه کردن دادهها و تغییر مقادیر بهصورت مستقیم درون جدول پایگاه داده انجام میدهد.
چگونه از دستور UPDATE در SQL استفاده کنیم؟
دستور UPDATE در SQL برای اصلاح یا تغییردادن رکوردهای موجود درون جدول بکار میرود. اگر بخواهیم که مقدار خواصی را «بهروزرسانی» (UPDATE) کنیم باید از ماده WHERE همرا با ماده UPDATE استفاده کنیم. اگر از ماده WHERE استفاده نکنیم همه سطرها از این دستور تاثیر میگیرند و احتمال دارد نظم دادهها بهم بریزد. علاوه بر این، میتوانیم از عبارت UPDATE بسته به نیازمان برای بهروزرسانی یک یا چند ستون نیز استفاده کنیم.
سینتکس دستور UPDATE در SQL
برای ۳ هدف متفاوت برای این دستور میتوان به سه روش کلی کوئری نوشت.
- عملیات بهروزرسانی در یک جدول
- عملیات بهروزرسانی جدولی به کمک جدول دیگر
- عملیات بهروزرسانی بر روی چندین جدول متفاوت
وقتی که اجرای عملیات UPDATE بر روی یک جدول صورت میگیرد سینتکس پایه دستور UPDATE را به دو شکل میتوان نوشت که از لحاظ ظاهری باهم متفاوتاند اما در واقع یکی هستند.
فرم اول سینتکس در روش اول بهصورت زیر است.
1UPDATE table_name
2SET col1=val1, col2=val2…
3[Where condition];
در فرم دوم سینتکس در روش اول چیدمان نام ستونها کمی تغییر میکند.
1UPDATE table_name
2SET col1=val1,
3 col2=val2,
4 ...
5[WHERE conditions];
از آنجا که کلمات UPDATE و SET و WHERE جزو کلمات کلیدی هستند از این کلمات عبور میکنیم و باقی پارامترها را توضیح میدهیم. کلمه table_name
اشاره به نام جدولی دارد که میخواهید دادههای آن را بهروزرسانی کنید. col1
، col2
، و … ستونهایی هستند که برای بهروزرسانی درنظر گرفته شدهاند. پارامترهای val1
، val2
و … مقادیر جدیدی هستند که باید در مکانهای نشان داده شده قرار بگیرند و بخش مربوط به شرط در عبارت WHERE
قرار دارد. در انتهای آنها هم علامت نقطه ویرگول ;
قرار میگیرد.
روش دوم نوشتن دستور UPDATE در SQL مربوط به زمانی است که میخواهیم دادههای جدولی را با کمک دادههای جدول دیگری بهروزرسانی کنیم. به کد نوشته شده در پایین نگاه کنید.
1UPDATE table1
2SET column1 = (SELECT expression1
3 FROM table2
4 WHERE conditions)
5[WHERE conditions];
و روش سوم نوشتن دستور UPDATE در SQL مربوط به وقتی است که میخواهیم دادههای چندین جدول را در پایگاه داده بهصورت همزمان بهروزرسانی کنیم – این کار در پایگاه داده Oracle مجاز نیست. به کدی که در ادامه نوشتهایم دقت کنید.
1UPDATE table1, table2, ...
2SET column1 = expression1,
3 column2 = expression2,
4 ...
5WHERE table1.column = table2.column
6[AND conditions];
توضیحات لازم برای پارامترهای استفاده شده در دو روش بالا را در ادامه فهرست کردهایم.
- column1
و column2
: ستونهایی هستند که میخواهید دادههای مربوط به آن ستونها را بهروزرسانی کنید.
- expression1
و expression2
: مقادیر جدیدی هستند که با دادههای قبلی ستونهای column1 و column2 باید جایگزین شوند و این کار را به ترتیب و منظم انجام میدهند.
- عبارت WHERE
: وجود این بند در عبارت اختیاری است و شرایطی را تعیین میکند برای مشخص شدن ردیفهایی که باید بهروزرسانی شوند. اگر عبارت WHERE استفاده نشود همه رکوردهای داخل جدول بهروزرسانی خواهند شد.
برای نمایش و اعمال کدها در این مطلب از جداول فرضی و موقتی استفاده کردهایم.
دستور UPDATE برای به روزرسانی جدول در SQL
در ادامه به بهروزرسانی چند رکورد در جدول فرضی کارمندان employee
با استفاده از دستور UPDATE در SQL میپردازیم.
1UPDATE employee
2SET e_age=42
3WHERE e_name=’sam’;
بعد از نوشتن کوئری بالا بر روی دکمه «Execute» کلیک کنید تا وجود خطاهای احتمالی را بررسی کنید.
وقتی که کوئری اجرا شد پیامی با این مضمون که «دستورات با موفقیت اجرا شدند» به صورت «Commands completed successfully» به نمایش درخواهد آمد.
دستور SELECT * from بر روی جدول کارمندان
در تصویر زیر اجرای دستور SELECT * from
را بر روی جدول کارمندان بررسی کردهایم.
با اجرای دستور بالا میتوانیم نتیجه اجرای دستور UPDATE
را روی دادههای داخل جدول ببینیم.
دستور UPDATE در SQL برای به روزرسانی یک ستون
در این بخش به کمک مثالی روش استفاده از دستور UPDATE در SQL برای بهروزرسانی یک ستون را بررسی خواهیم کرد. در این مثال از دستور UPDATE
، جدولی برای مشتریان به نام customers
با دادههای فرضی آمده در پایین داریم.
favorite_website | first_name | last_name | customer_id |
techonthenet.com | Joe | Jackson | 4000 |
digminecraft.com | Jane | Smith | 5000 |
bigactivities.com | Samantha | Ferguson | 6000 |
checkyourmath.com | Allen | Reynolds | 7000 |
NULL | Paige | Anderson | 8000 |
techonthenet.com | Derek | Johnson | 9000 |
در ادامه مطلب روش کار عبارت UPDATE
را با بهروزرسانی ستونی در جدول customers
نمایش خواهیم داد. برای این کار از کوئری زیر برای اجرای دستور UPDATE
استفاده کردهایم.
1UPDATE customers
2SET first_name = 'Judy'
3WHERE customer_id = 8000;
الان فقط ۱ رکورد آپدیت شده است. همانطور که در کوئری زیر آمده، دادههای جدول customers
را دوباره با بکاربردن دستور SELECT
نگاه میکنیم.
1SELECT * FROM customers;
نتایجی که خواهید دید باید بهصورت زیر باشند.
favorite_website | first_name | last_name | customer_id |
techonthenet.com | Joe | Jackson | 4000 |
digminecraft.com | Jane | Smith | 5000 |
bigactivities.com | Samantha | Ferguson | 6000 |
checkyourmath.com | Allen | Reynolds | 7000 |
NULL | Judy | Anderson | 8000 |
techonthenet.com | Derek | Johnson | 9000 |
در مثال بالا برای دستور UPDATE
اول رکوردی که درآن customer_id
برابر 8000 است شناسایی میشود بعد مقدار رکورد را در ستون first_name
به «Judy» تغییر میکند.
دستور UPDATE در SQL برای بهروزرسانی چندین ستون
بهروزرسانی چند ستون هم، مانند بهروزرسانی داده در یک ستون عمل میکند. فقط نام ستونها باید پشت سر هم بیاید و با کاراکتر کاما از یکدیگر جدا شوند. در کد پایین مثالی از اعمال دستور UPDATE
بر روی دو ستون را میبینید.
1UPDATE EMPLOYEE
2SET Last_Name='KAPADIA',First_Name='MANISH'
3WHERE Employee_ID=7369
بعد از اینکه کوئری بالا را نوشتید بر روی دکمه «Execute» کلیک کنید تا خطاهای احتمالی را بررسی کنید. وقتی که کوئری اجرا شد، پیامی شبیه « 1row affected» به معنای اینکه عمل بهروزرسانی روی یک ردیف اعمال شد، نشان داده میشود.
در ادامه این مطلب از مجله فرادرس به بررسی نتیجه اعمال کوئری بالا خواهیم پرداخت.
دستور SELECT * from بر روی جدول کارمندان
برای دیدن نتیجه کوئری دستور SELECT * from را بر روی جدول customers
اعمال میکنیم. الان میتوانیم دادههای بهروزرسانی شده را در داخل جدول ببنیم.
دستور UPDATE در SQL برای بهروزرسانی چندین ردیف
به کمک این دستور میتوان چندین ردیف را مانند یک ردیف بهروزرسانی کرد. برای انجام این کار فقط باید کوئری را کمی توسعه دهیم. به کدی که به عنوان مثال در پایین آمده توجه کنید.
1UPDATE Employee
2SET Middle_Name
3= CASE Employee_ID
4WHEN 7369 THEN 'A'
5WHEN 7499 THEN 'B'
6ELSE Middle_Name
7END
8WHERE Employee_ID IN(7369,7499);
بعد از اینکه کوئری بالا را نوشتیم بر روی دکمه «Execute» کلیک میکنیم تا خطاهای احتمالی را بررسی کنیم. وقتی که کوئری اجرا شد، پیامی شبیه «2rows affected» به معنای اینکه عمل بهروزرسانی روی دو ردیف اعمال شد نشان داده میشود.
برای اینکه کد بالا و نحوه اجرای آن را درک کنیم به نتیجه اجرای کد باید نگاه کنیم.
دستور SELECT * from بر روی جدول کارمندان
با استفاده از دستور SELECT * from
بر روی جدول کارمندان میتوان نتیجه عملیات UPDATE را در جدول دید.
میبینید که در دو ردیف فقط مقدار ستون Middle_Name
هر ردیف در بند WHEN
ازکوئری با شماره Employee_ID
مشخص شده و مقدار جدید بعد از عبارت THEN
آمده است.
به روزرسانی داده های جدولی با کمک داده های جدول دیگر
بعضی وقتها نیاز داریم که مقدار زیادی داده را از طریق جداول دیگر بهروزرسانی کنیم. در اینجا مثالی از انجام این عملیات را پیادهسازی کردهایم. در مثال UPDATE
که در ادامه آوردهایم، جدولی برای محصولات بهنام products
با دادههای زیر موجود است.
category_id | product_name | product_id |
50 | Pear | 1 |
50 | Banana | 2 |
50 | Orange | 3 |
50 | Apple | 4 |
75 | Bread | 5 |
25 | Sliced Ham | 6 |
NULL | Kleenex | 7 |
و جدولی هم برای خلاصه اطلاعات محصول، یعنی تعداد هر محصول بر اساس شماره id به نام summary_data
داریم.
current_category | product_id |
---|---|
10 | 1 |
10 | 2 |
10 | 3 |
10 | 4 |
10 | 5 |
10 | 8 |
میبینیم که اطلاعات جدول summary_data
غلط است و باید اصلاح شوند. بنابراین الان باید اطلاعات جدول summary_data
را با کمک اطلاعات جدول products
بهروزرسانی کنیم. برای این کار از عبارت UPDATE
استفاده خواهیم کرد. به کوئری آمده در پایین از دستور UPDATE در SQL دقت کنید.
1UPDATE summary_data
2SET current_category = (SELECT category_id
3 FROM products
4 WHERE products.product_id = summary_data.product_id)
5WHERE EXISTS (SELECT category_id
6 FROM products
7 WHERE products.product_id = summary_data.product_id);
بر اثر دستور بالا ۵ رکورد بهروزرسانی خواهند شد. یکبار دیگر به جدول summary_data
با کمک دستور زیر نگاهی میاندازیم.
1SELECT * FROM summary_data;
نتایجی که نشان داده میشوند بهصورت زیر خواهند بود.
current_category | product_id |
---|---|
50 | 1 |
50 | 2 |
50 | 3 |
50 | 4 |
75 | 5 |
10 | 8 |
در مثالی که دیدیم مقادیر current_category
از جدول summary_data
توسط اطلاعات مقادیر category_id
از جدول products
بهروزرسانی خواهند شد، به شرطی که مقادیر product_id
در هر دو جدول برابر باشد. در نتیجه ۵ رکورد اول از جدول summary_data
اصلاح شدهاند.
توجه کنید که عبارت UPDATE
شامل شرط EXISTS
در بند WHERE
شده است تا قبل از شروع به UPDATE کردن دادهها، تضمین کند که product_id
مشترکی بین هر دو جدول products
و summary_data
وجود داشته باشد.
اگر در این کوئری شرط EXISTS
را لحاظ نمیکردیم، کوئری UPDATE
ستون current_category
را با مقدار NULL در ردیف ششم از جدول summary_data
بهروزرسانی کرده بود. زیرا جدول products
رکوردی نداشت که در آن product_id
برابر با 8 باشد.
سوالات متداول
در این بخش به بررسی چند سوال میپردازیم که بین کاربران بیشترین پرسش را داشتهاند. شاید برای شما هم پیش آمدهاند.
کاربرد دستور UPDATE در SQL چیست؟
فرمان UPDATE دستوری است که برای تغییر دادههای موجود در جدول مورد استفاده قرار میگیرد و میتواند برای بهروزرسانی یک ردیف، همه ردیفها یا مجموعهای از ردیفها بر حسب شرایط خاصی که کاربر تعیین میکند استفاده شود.
آیا از دستور UPDATE هم می توان برای وارد کردن داده در SQL استفاده کرد؟
دستور UPDATE در SQL دادههایی را که در قبل از پایگاه داده موجود بودند را تغییر میدهد و دستور INSERT برای وارد کردن دادههای جدید در جدول کاربرد دارد اما دستوری وجود دارد به نام UPSERT که ترکیبی از دستورهای UPDATE و INSERT است. از این دستور میتوان هم برای بهروزرسانی رکورد و هم وارد کردن رکورد در جدول استفاده کرد.
جمع بندی
در این مطلب از مجله فرادرس به بررسی دستور UPDATE در SQL پرداختیم. شکل ساده سینتکس این دستور را پیادهسازی کردیم و در موقعیتهای فرضی کوئری نوشتیم. انواع روشهای پیادهسازی این دستور را بر روی ستونها و ردیفها و حتی با استفاده از جداول دیگر نشان دادیم. تقویت مهارت استفاده از دستور UPDATE برای مدیران پایگاههای داده بسیار ضروری است زیرا کاهش عملیات حذف و اضافه کردن دادهها باعث صرفهجویی در زمان و افزایش دقت در مدیریت دادهها میشود.
دانشجویان و افرادی که به دلایل شغلی به کار با پایگاههای داده میپردازند باید مهارت خود را در استفاده از دستورات اصلی SELECT و INSERT و DELETE و UPDATE و غیره افزایش دهند تا بتوانند به بهترین روش از پس مسئولیتهای خود برآیند.
source