مقدمه
وقتی با یک پایگاه داده کار میکنید، گاهی لازم است دادههایی که قبلاً وارد شدهاند را تغییر دهید. مثلاً ممکن است بخواهید یک اشتباه تایپی را اصلاح کنید یا اطلاعات جدیدی به یک رکورد ناقص اضافه کنید.
زبان SQL (Structured Query Language) با استفاده از دستور UPDATE این امکان را میدهد که دادههای موجود در یک جدول را تغییر دهید.
پیشنیازها
برای دنبال کردن این آموزش، باید یک سیستم مدیریت پایگاه داده (RDBMS) مثل MySQL داشته باشید.
همچنین بهتر است یک دیتابیس نمونه داشته باشید تا بتوانید دستورات را تمرین کنید.
اتصال به MySQL و ساخت دیتابیس نمونه
CREATE DATABASE updateDB;
USE updateDB;
ساخت جدولها
جدول clients:
CREATE TABLE clients (
clientID int PRIMARY KEY,
name varchar(20),
routine varchar(30),
standardFee decimal (5,2)
);
جدول shows:
CREATE TABLE shows (
showID int PRIMARY KEY,
showDate date,
clientID int,
attendance int,
ticketPrice decimal (4,2),
CONSTRAINT client_fk
FOREIGN KEY (clientID)
REFERENCES clients(clientID)
);
اضافه کردن داده نمونه
INSERT INTO clients VALUES
(1, 'Gladys', 'song and dance', 180),
(2, 'Catherine', 'standup', 99.99),
(3, 'Georgeanna', 'standup', 45),
(4, 'Wanda', 'song and dance', 200),
(5, 'Ann', 'trained squirrel', 79.99);
INSERT INTO shows VALUES
(1, '2019-12-25', 4, 124, 15),
(2, '2020-01-11', 5, 84, 29.50),
(3, '2020-01-17', 3, 170, 12.99),
(4, '2020-01-31', 5, 234, 14.99),
(5, '2020-02-08', 1, 86, 25);
بهروزرسانی داده در یک جدول
ساختار کلی:
UPDATE table_name
SET column_name = value
WHERE condition;
⚠️ اگر WHERE ننویسید، همهی ردیفها تغییر میکنند.
مثال 1: اصلاح یک مقدار
UPDATE clients
SET name = 'Katherine'
WHERE name = 'Catherine';
مثال 2: آپدیت چند ردیف
UPDATE clients
SET standardFee = 140
WHERE routine LIKE 's%';
مثال 3: استفاده از عملیات ریاضی
UPDATE clients
SET standardFee = standardFee * 1.4;
آپدیت چند ستون همزمان
UPDATE shows
SET attendance = attendance + 20,
ticketPrice = ticketPrice * 1.5
WHERE clientID IN (
SELECT clientID
FROM clients
WHERE name = 'Georgeanna' OR name = 'Wanda'
);
آپدیت با JOIN (چند جدول)
UPDATE clients JOIN shows
USING (clientID)
SET clients.routine = 'mime',
shows.ticketPrice = 30
WHERE name = 'Gladys';
مدیریت Foreign Key در UPDATE
حالت پیشفرض:
اگر آپدیت باعث نقض Foreign Key شود، خطا میگیرید:
UPDATE clients
SET clientID = 9
WHERE name = 'Ann';
راهحل: استفاده از ON UPDATE CASCADE
ALTER TABLE shows
DROP FOREIGN KEY client_fk;
ALTER TABLE shows
ADD CONSTRAINT new_client_fk
FOREIGN KEY (clientID)
REFERENCES clients (clientID)
ON UPDATE CASCADE;
حالا آپدیت بدون خطا:
UPDATE clients
SET clientID = 9
WHERE name = 'Ann';
✔ این تغییر به جدول shows هم منتقل میشود.
جمعبندی
- دستور UPDATE برای تغییر دادهها استفاده میشود
- با WHERE مشخص میکنید کدام ردیفها تغییر کنند
- میتوانید چند ستون را همزمان تغییر دهید
- میتوانید با JOIN چند جدول را آپدیت کنید
- رفتار Foreign Key را میتوان با CASCADE کنترل کرد
از همراهی شما با پارمین کلود سپاسگزاریم.
نظرات کاربران