SQL INSERT INTO Statement

INSERT INTO برای افزودن ردیف‌های جدید به یک جدول استفاده می‌شود.

🟢 ساختار کلی

1️⃣ مشخص‌کردن نام ستون‌ها (روش توصیه‌شده)

INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
  • مقدارها به همان ترتیب ستون‌ها قرار می‌گیرند.

  • می‌توانید فقط برای بعضی ستون‌ها مقدار بدهید (بقیه می‌توانند NULL یا مقدار پیش‌فرض باشند).

2️⃣ بدون مشخص‌کردن ستون‌ها

INSERT INTO table_name VALUES (value1, value2, value3, ...);
  • باید تمام ستون‌های جدول به ترتیب تعریف‌شده در ساختار جدول پر شوند.

  • اگر ترتیب ستون‌ها تغییر کند، این روش ممکن است خطا دهد.

🟡 مثال‌های متداول

1️⃣ افزودن یک ردیف

INSERT INTO users (name, age, city) VALUES ('Ali', 25, 'Tehran');

یک کاربر جدید با نام علی، سن ۲۵ و شهر تهران.

2️⃣ افزودن چند ردیف با یک دستور

INSERT INTO users (name, age, city) VALUES ('Sara', 30, 'Shiraz'), ('Omid', 28, 'Tabriz'), ('Niloofar', 22, 'Mashhad');

سه ردیف در یک دستور اضافه می‌شوند.

3️⃣ فقط برای برخی ستون‌ها

INSERT INTO products (name, price) VALUES ('Keyboard', 450);
  • ستون‌های مشخص‌نشده (مثلاً description) مقدار پیش‌فرض یا NULL می‌گیرند.

4️⃣ از نتیجهٔ یک پرس‌وجو

INSERT INTO archive_orders (id, customer_id, amount) SELECT id, customer_id, amount FROM orders WHERE order_date < '2023-01-01';

کپی‌کردن داده‌های قدیمی به جدول آرشیو.

🟠 نکات مهم

  • برای تاریخ/رشته‌ها از کوتیشن ' ' استفاده کنید.

  • مقادیر NULL را بدون کوتیشن می‌نویسیم:

    INSERT INTO users (name, age, city) VALUES ('Reza', NULL, 'Isfahan');
  • در دیتابیس‌هایی که ستون Auto Increment دارند (مثلاً id)، نیازی به مقداردهی آن ستون نیست.

  • برای جلوگیری از تکرار یا خطا می‌توان از دستورات پیشرفته‌تر مثل
    INSERT IGNORE, ON DUPLICATE KEY UPDATE (MySQL) یا
    INSERT ... ON CONFLICT (PostgreSQL) استفاده کرد.

✅ جمع‌بندی

  • INSERT INTO ردیف‌های جدید را به جدول اضافه می‌کند.

  • روش امن‌تر: ستون‌ها را صراحتاً بنویسید تا ترتیب آن‌ها وابسته به ساختار جدول نباشد.

  • می‌توان چند ردیف را همزمان اضافه کرد یا از نتایج یک SELECT برای درج استفاده نمود.