آموزش Update کردن داده ها در MySQL

علی حسین شهابی

1395/8/14

نظر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 برای آن شرطی نگذاشته باشید , به طور ناگهانی همه ی رکورد ها در یک جدول آپدیت خواهند شد .

  1. MySQL از دو modifier برای دستور update استفاده می کند :‌
    LOW_PRIORITY به دستور UPDATE فرمان می دهد که آپدیت را تا زمانی که هیچ اتصالی برای خواندن اطلاعات از جدول وجود نداشته باشد به تاخیر بیندازد. LOW_PRIORITY تنها بر روی storage engines هایی که از قفل گذاری در سطح جدول یا (table-level locking ) استفاده می کنند , تاثیر میگذارد. برای مثال MyISAM, MERGE, MEMORY.
  2.  IGNORE دستور UPDATE را قادر می سازد که به آپدیت کردن رکورد ها حتی اگر خطا اتفاق می افتد ادامه دهد. رکورد هایی که باعث ایجاد خطاهایی مانند duplicate-key می شوند آپدیت نخواهندشد.

مثال :‌

در این مثال قصد داریم که ایمیل Mary Patterson را با ایمیل جدیدی مثل mary.patterso@classicmodelcars.com آپدیت نماییم.
در ابتدا رکوردی که مربوط به Mary Patterson را بازیابی می‌کنیم تا ایمیل قبلی آن را مشاهده کنیم :‌

SELECT 
    firstname, lastname, email
FROM
    employees
WHERE
    employeeNumber = 1056;

 

آموزش دستور update

آموزش دستور update

در مرحله ی دوم با استفاده از دستور UPDATE ایمیل Mary را به ایمیل جدید mary.patterso@classicmodelcars.com , همانطور که در query زیر مشاهده می کنید آپدیت می نماییم.
بخاطر اینکه میخواهیم تنها یک رکورد را آپدیت کنیم از عبارت WHERE برای مشخص کردن رکورد مورد نظر با استفاده از employee number 1056 استفاده می کنیم.

حالا دوباره با استفاده از دستور select چک می‌کنیم مقدار ایمیل عوض شده است یا خیر :‌

SELECT 
    firstname, lastname, email
FROM
    employees
WHERE
    employeeNumber = 1056;

خروجی :‌

آموزش update

 

 

آموزش update

ویرایش همزمان چندین فیلد

برای آپدیت چندین فیلد به صورت همزمان کافی است نام آن‌ها را در جلوی عبارت 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

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;

 

آموزش دستور update

آموزش دستور update

 

کوئری زیر تمام رکورهایی که مقدار فیلد 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 آشنا شده باشین .

خب مقاله امروز هم به پایان رسید.خوشحال میشم مثل همیشه نظراتتون رو اعلام کنید.

اینستاگرام علی حسین شهابی لینکدین علی حسین شهابی

0 نظر

ارسال نظر جدید

 
Not signed in

کلیه حقوق مادی و معنوی , متعلق به سایت (Alihossein.ir)می باشد ,انتشار مطالب بدون ذکر منبع از نظر اخلاقی و شرعی صحیح نمی باشد.