دستورات UPDATE و DELETE در SQL

04 اسفند 1397
درسنامه درس 8 از سری آموزش زبان SQL
sql-language-update-delete

با سلام خدمت شما دوستان گرامی، در ادامه ی مبحث بررسی دستورات SQL به دو دستور بسیار مهم دیگر رسیده ایم؛ دستورات UPDATE و DELETE. در این قسمت از این سری آموزشی قصد داریم به بررسی کامل این دو دستور و ذکر مثال های مختلف از آن ها بپردازیم.

دستور UPDATE

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

ساختار کلی این دستور به شکل زیر است:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

قبل از هر کار مانند همیشه، نگاهی به جدول Customers می اندازیم:

قسمتی از جدول customer ها در پایگاه داده ی Northwind
قسمتی از جدول customer ها در پایگاه داده ی Northwind

حال، مثال ها را روی این جدول پیاده میکنیم.

مثال های دستور UPDATE

دستور SQL زیر اطلاعات اولین مشتری را بروزرسانی می کند (یعنی جایی که CustomerID = 1 باشد)؛ قرار است به ستون های ContactName و City مقادیر جدیدی بدهیم:

UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;

برای اجرای این دستور در پایگاه داده ی Northwind روی این لینک کلیک کنید. پس اجرای این کد پیام زیر به شما نمایش داده خواهد شد:

You have made changes to the database. Rows affected: 1

حال برای مشاهده ی جدول و نتیجه ی تغییرات از دستوری استفاده می کنیم که در جلسات اول با آن آشنا شدیم:

SELECT * FROM CUSTOMERS

با اجرای این دستور خواهید دید که جدول داده ی ما به این شکل در می آید:

قسمتی از جدول cutomers پس از اجرای دستور UPDATE
قسمتی از جدول cutomers پس از اجرای دستور UPDATE

همانطور که می بینید ستون های ContactName و City تغییر کرده اند.

اگر بخواهیم چندین record را همزمان بروزرسانی کنیم چطور؟ اگر یادتان باشد گفتیم که WHERE مسئول تعیین شرط و محدودیت است بنابراین با استفاده از آن می توان چندین ردیف و record مختلف را برروزرسانی کرد. مثال:

UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';

به نظر شما این دستور چه کاری انجام می دهد؟

این دستور می گردد و تمام record هایی را که در آن ها مقدار country مساوی با Mexico باشد پیدا می کند و مقدار contactname را در تمام این ردیف ها به Juan تغییر میدهد! برای انجام این کار روی پایگاه داده ی Northwind روی این لینک کلیک کنید.

برای مشاهده ی تغییرات اعمال شده از کد های جلسات قبل استفاده می کنیم:

SELECT * FROM CUSTOMERS
WHERE Country='Mexico';

با این دستور تمام ردیف هایی که در آن ها مقدار country مساوی با Mexico باشد به ما برمیگردد. می توان به راحتی دید که همه ی contactname ها به Juan تغییر کرده است.

هشدار: توجه به ساختار دستور UPDATE بسیار مهم است و مهم ترین قسمت آن نیز دستور WHERE می باشد. اگر یادتان باشد، WHERE یک شرط را برای دستور SQL وضع می کرد تا دامنه ی انتخاب یا تغییر را کاهش دهد. حالا اگر به هر دلیلی فراموش کنید که WHERE را قرار دهید، هیچ شرط و محدودیتی برای UPDATE نمی ماند و عملا تمام جدول شما آپدیت می شود و داده هایتان بر باد می رود!

به مثال زیر توجه کنید:

UPDATE Customers
SET ContactName='Juan';

برای اجرای این دستور در پایگاه داده ی Northwind به این لینک مراجعه کنید. پس از اجرای آن با پیام زیر روبرو می شود:

You have made changes to the database. Rows affected: 92

می بینید که تمام 92 ردیف ما تغییر کرده اند و تمام ContactName ها به Juan تبدیل شده است!

برای آن که کدهایتان در جلسات بعد مانند هم باشد و با ما پیش بروید، پس از اجرای این دستور باید پایگاه داده یا restore کنید. برای انجام این کار به یکی از لینک های بالا که به Northwind می رود بروید و از سمت راست و بالای صفحه گزینه ی Restore Database را انتخاب کنید. مانند تصویر زیر:

گزینه ی Restore Database پایگاه داده را به شکل اولیه اش بر میگرداند
گزینه ی Restore Database پایگاه داده را به شکل اولیه اش بر میگرداند

دستور DELETE

دستور DELETE همانطور که از نامش پیداست برای حذف کردن داده های جدول به کار می رود.

ساختار کلی این دستور به شکل زیر است:

DELETE FROM table_name WHERE condition;

اگر پایگاه داده را restore کرده باشید، باید پایگاهی شبیه به این داشته باشید:

جدول Customers پس از Restore کردن پایگاه داده
جدول Customers پس از Restore کردن پایگاه داده

مثال های DELETE

دستور SQL زیر، مشتری به نام "Alfreds Futterkiste" را از جدول Customers حذف می کند:

DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';

برای اجرای این دستور در Northwind روی این لینک کلیک کنید.

پس از اجرای این دستور متوجه می شوید که یک ردیف از جدول ما کم شده است و حالا تنها 91 ردیف داریم. حال می توانید با دستور زیر دنبال این مشتری بگردید:

SELECT * FROM CUSTOMERS

خواهید دید که مشتری اول حذف شده است و هیچ اثری از آن نیست.

هشدار: نکته ی بسیار مهم اینجاست که نباید بدون حساب و کتاب از دستور DELETE استفاده کنید. بار ها پیش آمده است که حتی برنامه نویسان با سابقه با اشتباه در قسمت شرط (WHERE) تمام پایگاه داده ی خود را حذف کرده اند! عواقب استفاده ی اشتباه از دستور DELETE میتواند کسب و کار شما را نابود کند! در استفاده از این دستور به شدت احتیاط کنید.

در مثال زیر تمام ردیف ها حذف خواهند شد:

DELETE FROM Customers;

برای اجرای این دستور در Northwind روی این لینک کلیک کنید. اگر پس از اجرای این دستور دستور زیر را اجرا کنید به پیغام "No result" برخواهید خورد:

SELECT * FROM CUSTOMERS

نکته: با اینکه تمام ردیف ها حذف شده اند، باید توجه داشت که هنوز هم ساختار جدول حفظ می شود. یعنی ردیف ها (اطلاعات داخل جدول) حذف می شوند اما خودِ جدول دست نخورده باقی می ماند. برای حذف خود جدول دستورات دیگری موجود است که در جلسات بعد با آن ها آشنا خواهیم شد.

خلاصه ی مقاله

در این قسمت با دو دستور بسیار مهم، یعنی UPDATE و DELETE، آشنا شدیم و برای هر کدام مثال هایی ذکر کردیم. از نکات بسیار مهم در رابطه با این دو دستور، شرطِ استفاده (WHERE) بود که می توانست باعث تغییرات ناخواسته و بعضا مخرب شود و نیازمند توجه ویژه ی ما بود. امیدوارم از این قسمت لذت برده باشید.

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری آموزش زبان SQL توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.