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 سه معیار ثابت برای ارزیابی نمونهها هستند.