یکی از دستورات بسیار مهم در 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

برای ۳ هدف متفاوت برای این دستور می‌توان به سه روش کلی کوئری نوشت.

  1. عملیات به‌روزرسانی در یک جدول
  2. عملیات به‌روزرسانی جدولی به کمک جدول دیگر
  3. عملیات به‌روزرسانی بر روی چندین جدول متفاوت

وقتی که اجرای عملیات 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» به معنای اینکه عمل به‌روزرسانی روی دو ردیف اعمال شد نشان داده ‌می‌شود.

پیاده سازی دستور UPDATE در SQL بروی 2 ردیف از جدول کارمندان

برای اینکه کد بالا و نحوه اجرای آن را درک کنیم به نتیجه اجرای کد باید نگاه کنیم.

دستور 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 باشد.

پرسنل در حال تصور فرایند کار با داده ها در SQL هستند.

سوالات متداول

در این بخش به بررسی چند سوال می‌پردازیم که بین کاربران بیشترین پرسش را داشته‌اند. شاید برای شما هم پیش آمده‌اند.

کاربرد دستور UPDATE در SQL چیست؟

فرمان UPDATE دستوری است که برای تغییر داده‌های موجود در جدول مورد استفاده قرار می‌گیرد و می‌تواند برای به‌روزرسانی یک ردیف، همه ردیف‌ها یا مجموعه‌ای از ردیف‌ها بر حسب شرایط خاصی که کاربر تعیین می‌کند استفاده شود.

آیا از دستور UPDATE هم می توان برای وارد کردن داده در SQL استفاده کرد؟

دستور UPDATE در SQL داده‌هایی را که در قبل از پایگاه داده موجود بودند را تغییر می‌دهد و دستور INSERT برای وارد کردن داده‌های جدید در جدول کاربرد دارد اما دستوری وجود دارد به نام UPSERT که ترکیبی از دستورهای UPDATE و INSERT است. از این دستور می‌توان هم برای به‌روزرسانی رکورد و هم وارد کردن رکورد در جدول استفاده کرد.

جمع بندی

در این مطلب از مجله فرادرس به بررسی دستور UPDATE در SQL پرداختیم. شکل ساده سینتکس این دستور را پیاده‌سازی کردیم و در موقعیت‌های فرضی کوئری نوشتیم. انواع روش‌های پیاده‌سازی این دستور را بر روی ستون‌ها و ردیف‌ها و حتی با استفاده از جداول دیگر نشان دادیم. تقویت مهارت استفاده از دستور UPDATE برای مدیران پایگاه‌های داده بسیار ضروری است زیرا کاهش عملیات حذف و اضافه کردن داده‌ها باعث صرفه‌جویی در زمان و افزایش دقت در مدیریت داده‌ها می‌شود.

دانشجویان و افرادی که به دلایل شغلی به کار با پایگاه‌های داده می‌پردازند باید مهارت خود را در استفاده از دستورات اصلی SELECT و INSERT و DELETE و UPDATE و غیره افزایش دهند تا بتوانند به بهترین روش از پس مسئولیت‌های خود برآیند.

source

توسط expressjs.ir