آموزش INSERT در SQL Server درج داده

آموزش جامع دستور INSERT در SQL Server: درج داده‌های هوشمندانه

دستور INSERT در SQL Server برای افزودن یک یا چند ردیف جدید از داده‌ها به یک جدول در پایگاه داده مورد استفاده قرار می‌گیرد. این دستور جزء گروه دستورات تغییر داده (DML) است و به شما امکان می‌دهد اطلاعات جدیدی را به ساختار جدول موجود خود اضافه کنید.

ساختار کلی دستور INSERT INTO برای درج داده‌ها به صورت زیر است:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

این ساختار پایه نشان می‌دهد که چگونه می‌توان با مشخص کردن نام جدول، ستون‌های هدف و مقادیر متناظر، یک ردیف جدید را وارد کرد. در ادامه، سناریوهای مختلف درج داده با دستور INSERT و مثال‌های کاربردی آن را بررسی می‌کنیم.

ابتدا یک جدول نمونه برای استفاده در مثال‌ها ایجاد می‌کنیم:

CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    FirstName NVARCHAR(50),
    LastName NVARCHAR(50),
    Department NVARCHAR(50),
    HireDate DATE
);

این جدول شامل اطلاعات پایه کارمندان از جمله شناسه، نام، نام خانوادگی، بخش و تاریخ استخدام است.

برای درج یک ردیف ساده با مشخص کردن تمام مقادیر ستون‌ها، می‌توانید از دستور زیر استفاده کنید:

INSERT INTO Employees (EmployeeID, FirstName, LastName, Department, HireDate)
VALUES (1, 'Ali', 'Mohammadi', 'IT', '2023-01-15');

در این مثال، تمام ستون‌ها به ترتیب مقادیر مشخص شده پر می‌شوند. این روش رایج‌ترین راه برای درج یک ردیف کامل در یک جدول است.

اگر بخواهید داده‌ها را تنها در ستون‌های خاصی از جدول درج کنید و ستون‌های دیگر مقادیر پیش‌فرض یا NULL داشته باشند، می‌توانید نام ستون‌ها را به صراحت ذکر کنید:

INSERT INTO Employees (EmployeeID, FirstName, LastName)
VALUES (2, 'Sara', 'Ahmadi');

در این حالت، ستون‌های Department و HireDate چون مقداری برای آن‌ها مشخص نشده، یا با مقدار NULL پر می‌شوند (در صورتی که اجازه NULL را داشته باشند) یا با مقدار پیش‌فرض تعریف شده برای آن‌ها (اگر وجود داشته باشد).

یکی از قابلیت‌های قدرتمند دستور INSERT، امکان درج داده از نتیجه یک دستور SELECT است. این برای کپی کردن داده‌ها از یک جدول به جدول دیگر یا فیلتر کردن و درج زیرمجموعه‌ای از داده‌ها بسیار مفید است:

INSERT INTO Employees (EmployeeID, FirstName, LastName, Department, HireDate)
SELECT EmployeeID, FirstName, LastName, Department, HireDate
FROM OldEmployees
WHERE Department = 'HR';

در این مثال، داده‌های مربوط به کارمندان بخش منابع انسانی (HR) از جدول OldEmployees انتخاب شده و به جدول Employees درج می‌شوند. این روش برای انتقال داده‌ها بین جداول یا یکپارچه‌سازی اطلاعات استفاده می‌شود.

زمانی که ستونی در جدول دارای مقدار پیش‌فرض (DEFAULT) باشد، می‌توانید هنگام درج ردیف، به جای مشخص کردن صریح مقدار آن ستون، از کلمه کلیدی DEFAULT استفاده کنید:

-- فرض کنید ستون Department مقدار پیش فرض 'Unknown' دارد
ALTER TABLE Employees ADD CONSTRAINT DF_Department DEFAULT 'Unknown' FOR Department;

INSERT INTO Employees (EmployeeID, FirstName, LastName, HireDate, Department)
VALUES (3, 'Reza', 'Karimi', '2024-03-01', DEFAULT);

در این حالت، مقدار 'Unknown' که به عنوان پیش‌فرض برای ستون Department تعریف شده است، به صورت خودکار درج می‌شود.

برای ستون‌های IDENTITY که مقادیر آن‌ها به صورت خودکار توسط SQL Server تولید می‌شوند، نیازی به درج صریح مقدار نیست. در واقع، سیستم به صورت خودکار عدد بعدی را تخصیص می‌دهد:

-- ایجاد یک جدول جدید با ستون IDENTITY
CREATE TABLE Products (
    ProductID INT IDENTITY(1,1) PRIMARY KEY,
    ProductName NVARCHAR(100),
    Price MONEY
);

INSERT INTO Products (ProductName, Price)
VALUES ('Laptop', 1200.00);

در این مثال، ProductID به صورت خودکار توسط SQL Server مقداردهی می‌شود و نیازی به درج آن در دستور INSERT نیست. این ستون برای ایجاد شناسه‌های منحصر به فرد (Unique IDs) بسیار کاربردی است.

دستور OUTPUT در SQL Server به شما امکان می‌دهد اطلاعات ردیف‌های درج شده را بلافاصله پس از عملیات INSERT بازیابی کنید. این اطلاعات می‌تواند شامل مقادیر ستون‌های IDENTITY یا هر ستون دیگری باشد:

INSERT INTO Products (ProductName, Price)
OUTPUT INSERTED.ProductID, INSERTED.ProductName
VALUES ('Keyboard', 75.00);

این دستور پس از درج ردیف، ProductID و ProductName ردیف درج شده را به عنوان خروجی برمی‌گرداند. این قابلیت برای لاگ‌برداری، گزارش‌دهی یا استفاده از شناسه‌های جدید در عملیات بعدی مفید است.

با استفاده از کلمه کلیدی TOP در دستور INSERT، می‌توانید تعداد ردیف‌هایی را که از نتیجه یک دستور SELECT درج می‌شوند، محدود کنید. این قابلیت برای درج تنها چند ردیف اول از یک مجموعه داده بزرگ مفید است:

-- فرض کنید یک جدول SourceData دارید
CREATE TABLE SourceData (
    SourceID INT,
    SourceName NVARCHAR(50),
    SourceValue INT
);

INSERT INTO SourceData VALUES (1, 'A', 10), (2, 'B', 20), (3, 'C', 30), (4, 'D', 40);

-- درج 2 ردیف اول از SourceData به Products (برای مثال)
INSERT TOP (2) INTO Products (ProductName, Price)
SELECT SourceName, SourceValue
FROM SourceData
ORDER BY SourceID;

در این مثال، تنها دو ردیف اول از نتیجه SELECT، بر اساس ترتیب SourceID، در جدول Products درج می‌شوند. این کاربرد برای درج نمونه‌ای از داده‌ها یا تقسیم‌بندی درج‌های بزرگ مناسب است.

من علی دستجردی‌ام؛ عاشق کار با دیتا، از SQL Server تا بیگ‌دیتا و هوش مصنوعی. دغدغه‌ام کشف ارزش داده‌ها و به‌اشتراک‌گذاری تجربه‌هاست. ✦ رزومه من: alidastjerdi.com ✦

عضویت
منو باخبر کن!!!
guest
نام
ایمیل

0 دیدگاه
Inline Feedbacks
دیدن تمامی کامنتها

فوتر سایت

ورود به سایت

sqlyar

هنوز عضو نیستید؟

ورود به سایت

هنوز تبت نام نکردید ؟