آموزش Update کردن داده ها در MySQL
- توسط : علی حسین شهابی
- 0 نظر
با سلام خدمت دوستان عزیزم
امروز نوبت میرسه به ویرایش و آپدیت کردن داده ها.یکی از مهم ترین کار هایی که شما در زمان کار با دیتابیس انجام می دهید آپدیت دادها می باشد .در این آموزش قرار است یاد بگیرید که چگونه از دستور UPDATE برای آپدیت کردن داده ها در یک جدول استفاده نماییم.
معرفی دستور UPDATE در MySQL
ما از دستور UPDATE برای آپدیت کردن و ویرایش داده های موجود در یک جدول استفاده می کنیم.می توانیم از دستور UPDATE برای تعقیر دادن مقدار های ستون یک رکورد واحد یا گروهی از رکوردها و یا همه ی رکوردها نیز استفاده نماییم.
همانطور که مشاهده می کنید سینتکس دستور UPDATE در MySQL به صورت زیر میباشد :
UPDATE [LOW_PRIORITY] [IGNORE] table_name
SET
column_name1 = expr1,
column_name2 = expr2,
...
WHERE
condition;
در ابتدا نام جدولی که میخواهید ویرایش شود را بعد از کلمه ی کلیدی UPDATE می آورید .
در مرحله ی دوم , عبارت SET مشخص کننده ستون هایی است که میخواهید مقادیر آنها را با مقادیر جدید تغییر دهید .
برای آپدیت کردن چندین ستون, از یک لیست که مقادیر آنها با علامت کاما از هم جداشده اند استفاده میکنیم .
در مرحله ی سوم با استفاده از یک شرط در عبارت WHERE مشخص می کنیم کدام رکورد ها آپدیت خواهند شد.
عبارت WHERE اختیاری میباشد و اگر آن را حذف کنید, دستور UPDATE همه ی رکورد های جدول را آپدیت خواهد کرد.
توجه کنید که عبارت WHERE بسیار مهم است و شما نباید آن را فراموش کنید زیرا ممکن است که بخواهید فقط یک رکورد را تغییر دهید و اگر با استفاده از WHERE برای آن شرطی نگذاشته باشید , به طور ناگهانی همه ی رکورد ها در یک جدول آپدیت خواهند شد .
- MySQL از دو modifier برای دستور update استفاده می کند :
LOW_PRIORITY به دستور UPDATE فرمان می دهد که آپدیت را تا زمانی که هیچ اتصالی برای خواندن اطلاعات از جدول وجود نداشته باشد به تاخیر بیندازد. LOW_PRIORITY تنها بر روی storage engines هایی که از قفل گذاری در سطح جدول یا (table-level locking ) استفاده می کنند , تاثیر میگذارد. برای مثال MyISAM, MERGE, MEMORY. - IGNORE دستور UPDATE را قادر می سازد که به آپدیت کردن رکورد ها حتی اگر خطا اتفاق می افتد ادامه دهد. رکورد هایی که باعث ایجاد خطاهایی مانند duplicate-key می شوند آپدیت نخواهندشد.
مثال :
در این مثال قصد داریم که ایمیل Mary Patterson را با ایمیل جدیدی مثل mary.patterso@classicmodelcars.com آپدیت نماییم.
در ابتدا رکوردی که مربوط به Mary Patterson را بازیابی میکنیم تا ایمیل قبلی آن را مشاهده کنیم :
SELECT
firstname, lastname, email
FROM
employees
WHERE
employeeNumber = 1056;
در مرحله ی دوم با استفاده از دستور UPDATE ایمیل Mary را به ایمیل جدید mary.patterso@classicmodelcars.com , همانطور که در query زیر مشاهده می کنید آپدیت می نماییم.
بخاطر اینکه میخواهیم تنها یک رکورد را آپدیت کنیم از عبارت WHERE برای مشخص کردن رکورد مورد نظر با استفاده از employee number 1056 استفاده می کنیم.
UPDATE employees
SET
email = 'mary.patterson@classicmodelcars.com'
WHERE
employeeNumber = 1056;
حالا دوباره با استفاده از دستور select چک میکنیم مقدار ایمیل عوض شده است یا خیر :
SELECT
firstname, lastname, email
FROM
employees
WHERE
employeeNumber = 1056;
خروجی :
ویرایش همزمان چندین فیلد
برای آپدیت چندین فیلد به صورت همزمان کافی است نام آنها را در جلوی عبارت SET مشخص نماییم.برای مثال دستور زیر هر دو فیلد last name و email را برای رکوردی با employeeNumber = 1056 آپدیت می نماید.
UPDATE employees
SET
lastname = 'Hill',
email = 'mary.hill@classicmodelcars.com'
WHERE
employeeNumber = 1056;
حالا دوباره تغییرات رو چک کنیم :
SELECT
firstname, lastname, email
FROM
employees
WHERE
employeeNumber = 1056;
خروجی :
آموزش update
UPDATE customers
SET
salesRepEmployeeNumber = (SELECT
employeeNumber
FROM
employees
WHERE
jobtitle = 'Sales Rep'
LIMIT 1)
WHERE
salesRepEmployeeNumber IS NULL;
استفاده از دستور SELECT و UPDATE باهم
شما می توانید مقدار های عبارت SET را , از یک دستور SELECT که اطلاعات را از جداول دیگر جستجو میکند تعیین کنید.
برای مثال در جدول customers بعضی مشتری ها هیچ نماینده ی فروشی ندارند یاهیچ نمونه قابل فروشی ندارند مقدار ستون saleRepEmployeeNumber برای آنها null است .
SELECT
customername, salesRepEmployeeNumber
FROM
customers
WHERE
salesRepEmployeeNumber IS NULL;
کوئری زیر تمام رکورهایی که مقدار فیلد salesRepEmployeeNumber آنها برابر با NULL است را با یک مقدار رندوم پر می نماید و این مقدار رندوم را با استفاده از دستور SELECT می گیرد :
UPDATE customers
SET
salesRepEmployeeNumber = (SELECT
employeeNumber
FROM
employees
WHERE
jobtitle = 'Sales Rep'
LIMIT 1)
WHERE
salesRepEmployeeNumber IS NULL;
- از خطوط ۳ تا ۹ تابع select یک مقدار را به صورت رندوم بر میگرداند
- در خط با استفاده از IS NULL چک کردیم کدام رکوردها مقدار فیلد salesRepEmployeeNumber برابر NULL می باشد .
امیدوارم با دستور UPDATE در MYSQL آشنا شده باشین .
خب مقاله امروز هم به پایان رسید.خوشحال میشم مثل همیشه نظراتتون رو اعلام کنید.