دستور UPDATE در SQL برای به روز رسانی دادههای موجود در یک جدول استفاده میشود. این دستور یکی دیگر از دستورات CRUD (ایجاد، خواندن، بهروزرسانی، حذف) در SQL است که برای مدیریت دادهها در پایگاههای داده به کار میرود.
اجزای دستور UPDATE:
- UPDATE: کلمه کلیدی که نشان میدهد میخواهید رکوردها را به روز رسانی کنید.
- table_name: نام جدولی که میخواهید رکوردهای آن را به روز رسانی کنید.
- SET column_name = new_value, …: مشخص میکند که کدام ستونها و با چه مقادیری به روز شوند.
- WHERE (condition): (اختیاری) شرطی را تعیین میکند که مشخص میکند کدام رکوردها باید به روز شوند.
مثال۱:
فرض کنید جدول زیر را برای ذخیره اطلاعات دانشجویان داریم:
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(۲۵۵) NOT NULL,
email VARCHAR(۲۵۵) NOT NULL,
gpa DECIMAL(۳,۲)
);
برای به روز رسانی ایمیل دانشجویی با شناسه ۱ به new_email@example.com
دستور زیر را اجرا میکنیم:
UPDATE students
SET email = "new_email@example.com"
WHERE id = ۱;
نکات:
- در صورتی که از شرط
WHERE
استفاده نکنید، تمام رکوردهای جدول به روز رسانی میشوند. - میتوانید چندین ستون را به طور همزمان به روز رسانی کنید.
- میتوانید از عبارات ریاضی و توابع برای تعیین مقادیر جدید استفاده کنید.
- برای به روز رسانی رکوردها بر اساس اطلاعات جدول دیگر، میتوانید از subquery استفاده کنید.
مثال۲:
- به روز رسانی نمرات (gpa) تمام دانشجویان به A (فرض کنید معادل ۴ باشد):
UPDATE students
SET gpa = ۴;
- به روز رسانی ایمیل تمام دانشجویانی که gpa آنها بالاتر از ۳.۵ است:
UPDATE students
SET email = CONCAT(name, "@university.edu")
WHERE gpa > ۳.۵;
مثال ۳:
فرض کنید جدول زیر را برای ذخیره اطلاعات کارمندان داریم:
CREATE TABLE employees (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(۲۵۵) NOT NULL,
email VARCHAR(۲۵۵) NOT NULL,
department VARCHAR(۵۰) NOT NULL,
salary DECIMAL(۱۰,۲) NOT NULL
);
مثال ۱: به روز رسانی نام و ایمیل کارمندی با شناسه ۵
UPDATE employees
SET name = "علی احمدی",
email = "ali.ahmadi@example.com"
WHERE id = ۵;
مثال ۲: افزایش حقوق ۱۰ درصدی برای تمام کارمندان بخش “فروش”
UPDATE employees
SET salary = salary * ۱.۱
WHERE department = "فروش";
مثال ۳: به روز رسانی اطلاعات کارمندان بر اساس اطلاعات جدول دیگر
UPDATE employees
SET department = departments.name
FROM departments
WHERE employees.department = departments.old_name;
مثال ۴: استفاده از تابع برای به روز رسانی اطلاعات
UPDATE employees
SET email = CONCAT(name, "@", department, ".com")
WHERE department IN ("فروش", "بازاریابی");
مثال ۵: به روز رسانی اطلاعات به صورت گام به گام
BEGIN TRANSACTION;
UPDATE employees
SET salary = salary * ۱.۱
WHERE department = "فروش";
UPDATE employees
SET salary = salary * ۱.۲
WHERE department = "بازاریابی";
COMMIT TRANSACTION;
نکات:
- در مثالهای بالا، فقط برخی از ستونها به روز شدهاند.
- میتوانید از
NULL
برای نشان دادن مقدار خالی در یک ستون استفاده کنید. - در مثال ۵، از
BEGIN TRANSACTION
وCOMMIT TRANSACTION
برای اطمینان از بهروزرسانی همزمان اطلاعات در دو بخش “فروش” و “بازاریابی” استفاده شده است.
نکته:
به یاد داشته باشید که قبل از اجرای هر دستور UPDATE، از اطلاعات خود نسخه پشتیبان تهیه کنید.