فصل 5 از 24 درس 1 از 1

INSERT و ثبت داده‌ها

INSERT و ثبت داده‌ها

بخشی از آموزش جامع SQL Server

محتوای درس INSERT و ثبت داده‌ها

T-SQL | VALUES، DEFAULT، OUTPUT و IDENTITY

INSERT Row جدید ایجاد می‌کند و باید Contract Table شامل NULLability، Default، Identity و Constraintها را رعایت کند. نوشتن Column List صریح، Script را خواناتر و مقاوم‌تر می‌کند.

متن این فصل با رویکرد مرجع فنی و قابل استفاده در پروژه واقعی تنظیم شده است؛ مثال‌ها در امتداد مدل StoreDb نوشته شده‌اند و اصطلاحات اصلی SQL Server و T-SQL به‌صورت یکدست به‌کار می‌روند.

1. مفاهیم و قراردادهای اصلی

INSERT Row جدید ایجاد می‌کند و باید Contract Table شامل NULLability، Default، Identity و Constraintها را رعایت کند. نوشتن Column List صریح، Script را خواناتر و مقاوم‌تر می‌کند.

در طراحی پایگاه داده، Syntax تنها بخشی از مسئله است. نوع داده، Constraint، الگوی دسترسی، Transaction و هزینه اجرای Query باید هم‌زمان با نیاز Domain در نظر گرفته شوند.

مفهومکارکرد
INSERT INTOمقصد درج
VALUESمقادیر ورودی
Column Listستون‌های هدف
DEFAULTمقدار پیشفرض
IDENTITYشناسه خودکار
OUTPUTخروجی Row درج‌شده

2. ساختار و Syntax پایه

Columnهای هدف به‌صورت صریح نوشته می‌شوند و مقدارها با Type متناظر هماهنگ‌اند. برای متن Unicode از N استفاده می‌شود و مقادیر تولیدشده با OUTPUT قابل دریافت هستند.

INSERT INTO dbo.Categories
(
    Name
)
OUTPUT INSERTED.Id, INSERTED.Name
VALUES
(
    N'لپ‌تاپ'
);

3. سناریوی StoreDb

چند Product را می‌توان در یک INSERT چندردیفی ثبت کرد. مقدار CreatedAt در صورت وجود Default از Column List حذف می‌شود تا Database آن را تولید کند.

نمونه‌های این فصل بر مدل فروشگاهی StoreDb بنا شده‌اند تا ارتباط مفاهیم میان فصل‌ها حفظ شود و Queryها در یک Context یکپارچه قابل بررسی باشند.

INSERT INTO dbo.Products
(
    Name, Sku, Price, Stock, IsActive
)
VALUES
(N'Laptop', N'LAP-001', 85000000, 8, 1),
(N'Mouse',  N'MOU-001', 2800000, 30, 1);

4. اصول طراحی و Performance

طراحی پایدار باید هم صحت داده و هم هزینه اجرای عملیات را پوشش دهد. انتخاب ساده‌تر زمانی ترجیح دارد که Contract داده را روشن‌تر و رفتار Optimizer را قابل پیش‌بینی‌تر نگه دارد.

  • Column List همیشه صریح باشد.
  • Defaultهای Database برای مقادیر سیستمی استفاده شوند.
  • Batch Insert برای حجم مناسب و کنترل Transaction طراحی شود.
  • OUTPUT برای Id و داده تولیدشده قابل استفاده است.

5. خطاهای رایج و نکات ایمنی

دستورهای SQL می‌توانند مستقیماً داده و ساختار را تغییر دهند؛ بنابراین بازبینی Context، تعداد Rowهای هدف و اثر Transaction قبل از اجرای تغییرات اهمیت عملی دارد.

  • اتکا به ترتیب فیزیکی Columnها.
  • درج متن فارسی بدون N در Literal.
  • استفاده بی‌دلیل از IDENTITY_INSERT.
  • نادیده گرفتن Truncation و طول Column.

6. چک‌لیست نهایی فصل

  • INSERT ساده و چندردیفی قابل اجراست.
  • NULL و DEFAULT درست مدیریت می‌شوند.
  • Identity و OUTPUT درک شده‌اند.
  • Data Type ورودی با Column سازگار است.

7. جمع‌بندی

خروجی این فصل باید به تصمیمی قابل اتکا در طراحی یا Query منجر شود؛ صحت داده، قابلیت نگهداری و رفتار Performance سه معیار ثابت برای ارزیابی نمونه‌ها هستند.