دستور INSERT در SQL برای اضافه کردن دادههای جدید به یک جدول استفاده میشود. این دستور یکی از دستورات CRUD (ایجاد، خواندن، بهروزرسانی، حذف) در SQL است که برای مدیریت دادهها در پایگاههای داده به کار میرود.
اجزای دستور INSERT:
- INSERT INTO: نام جدول مورد نظر برای اضافه کردن دادهها را مشخص میکند.
- (column_name1, column_name2, …): نام ستونهایی که میخواهید دادهها را در آنها درج کنید، لیست میکند.
- VALUES (value1, value2, …): مقادیر مربوط به هر ستون را لیست میکند.
مثال:
INSERT INTO employees (name, age, department)
VALUES ("علی", ۳۰, "فروش");
این دستور اطلاعات یک کارمند جدید با نام “علی”، سن ۳۰ سال و دپارتمان “فروش” را به جدول employees اضافه میکند.
نکات:
- ترتیب ستونها در لیست
column_name
باید با ترتیب مقادیر در لیستVALUES
مطابقت داشته باشد. - اگر میخواهید فقط برخی از ستونها را با داده پر کنید، میتوانید ستونهای خالی را بدون مقدار رها کنید.
- میتوانید از
NULL
برای نشان دادن مقدار خالی در یک ستون استفاده کنید. - برای درج چندین رکورد به طور همزمان، میتوانید از دستور INSERT INTO … SELECT استفاده کنید.
مثال۱:
INSERT INTO employees (name, age, department)
SELECT name, age, department FROM new_employees;
این دستور تمام اطلاعات موجود در جدول new_employees
را به جدول employees
اضافه میکند.
گزینههای پیشرفته:
- ON DUPLICATE KEY UPDATE: این گزینه به شما اجازه میدهد تا در صورت وجود رکوردی با کلید تکراری، مقادیر آن را بهروزرسانی کنید.
- IGNORE: این گزینه باعث میشود که اگر رکوردی با کلید تکراری وجود داشته باشد، دستور INSERT نادیده گرفته شود.
مثال۲:
INSERT INTO employees (name, age, department)
VALUES ("علی", ۳۰, "فروش")
ON DUPLICATE KEY UPDATE age = ۳۱;
این دستور اطلاعات یک کارمند جدید با نام “علی” و سن ۳۰ سال و دپارتمان “فروش” را به جدول employees اضافه میکند. اگر رکوردی با نام “علی” از قبل در جدول وجود داشته باشد، سن آن به ۳۱ سال بهروزرسانی میشود.
مثال جامع ۳:
فرض کنید جدول زیر را برای ذخیره اطلاعات مشتریان داریم:
CREATE TABLE customers (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(۲۵۵) NOT NULL,
email VARCHAR(۲۵۵) NOT NULL,
phone_number VARCHAR(۲۰) NOT NULL,
address VARCHAR(۲۵۵) NOT NULL,
city VARCHAR(۵۰) NOT NULL,
postal_code VARCHAR(۱۰) NOT NULL
);
مثال ۱: اضافه کردن یک رکورد جدید
INSERT INTO customers (name, email, phone_number, address, city, postal_code)
VALUES ("علی احمدی", "ali.ahmadi@example.com", "09123456789", "خیابان آزادی", "تهران", "۱۲۳۴۵");
این دستور اطلاعات یک مشتری جدید با نام “علی احمدی” و … را به جدول customers اضافه میکند.
مثال ۲: اضافه کردن چندین رکورد به طور همزمان
INSERT INTO customers (name, email, phone_number, address, city, postal_code)
VALUES
("مریم رضایی", "maryam.rezaei@example.com", "09387654321", "خیابان انقلاب", "تهران", "۱۲۳۴۶"),
("احمد محمدی", "ahmad.mohammadi@example.com", "09101234567", "خیابان ولیعصر", "مشهد", "۵۶۷۸۹");
این دستور اطلاعات دو مشتری جدید را به طور همزمان به جدول customers اضافه میکند.
مثال ۳: بهروزرسانی رکورد موجود
INSERT INTO customers (name, email, phone_number, address, city, postal_code)
VALUES ("علی احمدی", "ali.ahmadi@example.com", "09123456789", "خیابان آزادی", "تهران", "۱۲۳۴۵")
ON DUPLICATE KEY UPDATE email = "new_email@example.com";
این دستور اطلاعات یک مشتری جدید با نام “علی احمدی” و … را به جدول customers اضافه میکند. اگر رکوردی با نام “علی احمدی” از قبل در جدول وجود داشته باشد، آدرس ایمیل آن به “new_email@example.com” بهروزرسانی میشود.
مثال ۴: نادیده گرفتن رکورد تکراری
INSERT INTO customers (name, email, phone_number, address, city, postal_code)
VALUES ("علی احمدی", "ali.ahmadi@example.com", "09123456789", "خیابان آزادی", "تهران", "۱۲۳۴۵")
IGNORE;
اگر رکوردی با نام “علی احمدی” در جدول customers وجود داشته باشد، این دستور نادیده گرفته میشود و هیچ رکوردی اضافه نمیشود.
نکات:
- در مثالهای بالا، فقط برخی از ستونها با داده پر شدهاند. ستونهای خالی با مقادیر پیشفرض خود پر میشوند.
- میتوانید از
NULL
برای نشان دادن مقدار خالی در یک ستون استفاده کنید.