
Primary Key در SQL Server و تفاوت با Unique Key در سال 2025!
مفهوم کلید اصلی یا Primary Key در SQL Server به یک فیلد خاص یا ترکیبی از فیلدها در یک جدول پایگاه داده اشاره داره. کلیدها سرعت بازیابی داده ها رو بهبود میبخشند و همچنین کمک میکنند تا روابط بین جداول برقرار بشه.
- Primary Key در SQL Server و تفاوت با Unique Key در سال 2025!
- تعریف کلید اصلی یا Primary Key در SQL Server
- ویژگی های Primary Key در SQL Server
- ایجاد کلید اصلی یا Primary Key در SQL Server
- چطور یک کلید اصلی تک ستونه در SQL Server ایجاد کنیم؟
- چطور یک کلید اصلی ترکیبی در SQL Server ایجاد کنیم؟
- چطور Primary Key در SQL Server را ویرایش کنیم؟
- چطور یک Primary Key در SQL Server را حذف کنیم؟
- تفاوت کلید اصلی در مقابل کلید منحصر به فرد
- تفاوت های بیشتر بین کلید اصلی و کلید منحصر به فرد
- نتیجه گیری
Primary Key در SQL Server یک شناسه منحصر به فرد برای هر رکورد درون یک جدول هست که از مقادیر تکراری جلوگیری میکنه و امکان بازیابی و دستکاری داده ها رو در جدول به طور کارآمد فراهم میکنه. به همین دلیل، کلید اصلی یکی از اجزای اصلی طراحی پایگاه داده هست.
(یه پیشنهاد عالی): میخوای تو دنیای دیتا حرفه ای بشی؟ یک مجموعه کامل 0 تا 100 و پروژه محور با مدرس های متخصص و کاربلد برات آماده کردیم که میتونی باهاش خیلی سریع، مهارتهای پایگاه داده و SQL رو به دست بیاری! پس همین الان شروع کن چون تمام ابزارهای لازم برای تبدیل شدن به یه متخصص داده رو با تخفیف های ویژه برات فراهم کردیم! برای ورود به دنیای پایگاه داده، اینجا کلیک کن.
در این مقاله به بررسی جزئیات Primary Key در SQL Server میپردازیم و انواع اون و نحوه استفاده ازش رو توضیح میدهیم.
تعریف کلید اصلی یا Primary Key در SQL Server
کلید اصلی یا Primary Key در SQL Server یک ستون یا ترکیبی از ستون ها در یک جدول خاص پایگاه داده است که به عنوان یک شناسه منحصر به فرد برای هر ردیف در اون جدول عمل میکنه و یک ایندکس منحصر به فرد برای داده های جدول ایجاد میکنه.
ویژگی های Primary Key در SQL Server
کلید اصلی یا Primary Key در SQL Server ویژگی های زیر رو داره:
- فقط یک کلید اصلی برای هر جدول مجاز است.
- فرمت نام کلید اصلی باید به شکل PK_ باشد.
- حداکثر طول ستونها در یک کلید اصلی 900 بایت است.
- مقادیر درون کلید اصلی باید منحصر به فرد باشند؛ مقادیر تکراری مجاز نیستند.
- تمام ستونهای یک کلید اصلی باید روی NOT NULL تنظیم شوند.
- ایجاد یک Primary Key در SQL Server همچنین یک ایندکس خوشهای منحصر به فرد روی ستونهای شامل شده ایجاد میکند.
- کلید اصلی که فقط از یک ستون تشکیل شده باشد به آن کلید اصلی تکستونه گفته میشود. زمانی که کلید از چندین ستون تشکیل شود، به آن کلید اصلی ترکیبی گفته میشود.
ایجاد کلید اصلی یا Primary Key در SQL Server
برای ایجاد یک کلید اصلی یا Primary Key در SQL Server دو روش وجود دارد:
- در زمان ایجاد جدول با استفاده از دستور CREATE TABLE.
- پس از ایجاد جدول با استفاده از دستور ALTER TABLE.
چطور یک کلید اصلی تک ستونه در SQL Server ایجاد کنیم؟
برای ایجاد یک کلید اصلی تک ستونه، باید یک ستون از جدول را به عنوان PRIMARY KEY(COLUMN_NAME) معرفی کنید. زمانی که کلید فقط از یک ستون تشکیل شده باشد، میتوانید محدودیت PRIMARY KEY را به طور مستقیم به عنوان ویژگی ستون اعمال کنید.
(یه پیشنهاد هیجانانگیز): تا حالا فقط داده ها رو میدیدی ولی از حالا وقتشه کنترلشون رو بدست بگیری! با آموزش SQL مثل یه حرفه ای داده ها رو مدیریت کنی. این دوره آموزشی از پایه تا پیشرفته و کاملا کاربردی طراحی شده و همین حالا میتونی با تخفیف ویژه تهیه کنی. پس اگه میخوای از یه کاربر ساده، به تحلیلگر داده تبدیل بشی، وارد دوره آموزش SQL شو و دنیای دیتا رو با مهارت های خودت زیر و رو کن!
نکته: اگر جدول داده هایی داشته باشد، قبل از اضافه کردن این محدودیت باید اطمینان حاصل کنید که ستونی که میخواهید به عنوان کلید اصلی انتخاب کنید، مقادیر منحصر به فرد (و NOT NULL) داشته باشد. در غیر این صورت، دستور منجر به خطا خواهد شد.
چطور یک کلید اصلی تکستونه با استفاده از دستور CREATE TABLE ایجاد کنیم؟
در مثال زیر نحوه ایجاد یک جدول با یک کلید اصلی یا Primary Key در SQL Server نمایش داده شده است:
CREATE TABLE AdventureWorks2022.HumanResources.Training (
Employee_ID INT PRIMARY KEY IDENTITY
,Name VARCHAR(50) NOT NULL
,Last_Name VARCHAR(50) NOT NULL
,Course_Title VARCHAR(250) NOT NULL
,Start DATE NOT NULL
,Finish DATE NOT NULL
);در حال حاضر، جدول HumanResources.Training دارای ستون Employee_ID به عنوان کلید اصلی است، که به این معنی است که این ستون باید تنها مقادیر منحصر به فرد داشته باشد.

معمولاً Primary Key در SQL Server برای یک جدول در زمان ایجاد اولیه آن تعریف میشود. با این حال، ممکن است شرایطی پیش بیاید که یک جدول بدون کلید اصلی ایجاد شده باشد. در این موارد، میتوان کلید اصلی را با استفاده از دستور ALTER TABLE اضافه کرد.
چطور یک کلید اصلی تکستونه با استفاده از دستور ALTER TABLE ایجاد کنیم؟
فرض کنید که جدول HumanResources.Courses را بدون تعیین کلید اصلی ایجاد کردهایم.
ALTER TABLE HumanResources.Courses
ADD CONSTRAINT PK_Courses PRIMARY KEY(Employee_ID);حالا میخواهیم ستون Employee_ID را به عنوان کلید اصلی در این جدول قرار دهیم. برای انجام این کار، از دستور بالا استفاده میکنیم.

توجه: اگر جدول حاوی داده باشد، ضروری است که قبل از اعمال محدودیت، اطمینان حاصل کنید که ستونی که قصد دارید به عنوان کلید اصلی تعیین کنید، مقادیر منحصر به فرد و غیر NULL داشته باشد. در غیر این صورت، اجرای دستور منجر به خطا خواهد شد.
چطور یک کلید اصلی ترکیبی در SQL Server ایجاد کنیم؟
همانطور که قبلاً تعریف شد، کلید اصلی ترکیبی (Composite Key) در SQL Server از ترکیب چندین ستون به عنوان کلید تشکیل میشود. این روش زمانی مفید است که یک جدول نیاز به شناسایی منحصر به فرد رکوردها داشته باشد اما هیچکدام از ستون های آن مقادیر منحصر به فرد نداشته باشند.
(یه پیشنهاد فوق العاده): همیشه حس کردی دیتابیس کُنده یا بهینه نیست؟ وقتشه با یادگیری Performance Tuning، دیتابیس رو به نهایت سرعت و کارایی برسونی. این دوره به صورت جامع و تخصصی طراحی شده و همین حالا میتونی با تخفیف ویژه تهیه کنی. پس اگه میخوای به متخصص بهینه سازی عملکرد تبدیل بشی، وارد دوره آموزش Performance Tuning شو و کاری کن دیتابیس با نهایت سرعت پاسخ بده!
در این موارد میتوان یک کلید اصلی ترکیبی ایجاد کرد که با ترکیب ستون ها، یک مقدار منحصر به فرد تولید شود. علاوه بر این، ستون های موجود در کلید اصلی ترکیبی میتوانند انواع داده ای متفاوتی داشته باشند.
ایجاد یک کلید اصلی ترکیبی با استفاده از دستور CREATE TABLE
بیایید جدول جدید HumanResources.TrainingCourses را در نظر بگیریم که ستونهایی مانند Employee_ID First_Name، Last_Name، Course_Title، Start و Finish دارد. از آنجا که ممکن است این ستونها به طور فردی مقادیر تکراری داشته باشند، اختصاص یک Primary Key در SQL Server به هر ستون به تنهایی ممکن نیست. با این حال، با ترکیب مقادیر این ستون ها میتوانیم یک مقدار منحصر به فرد برای شناسایی هر رکورد دریافت کنیم.
CREATE TABLE AdventureWorks2022.HumanResources.TrainingCourses (
Employee_ID VARCHAR(50) NOT NULL
,Name VARCHAR(50) NOT NULL
,Last_Name VARCHAR(50) NOT NULL
,Course_Title VARCHAR(250) NOT NULL
,Start DATE NOT NULL
,Finish DATE NOT NULL
,CONSTRAINT PK_TrainingCourses PRIMARY KEY CLUSTERED (Employee_ID, Last_Name, Course_Title)
);تفاوت اصلی در نحوه نوشتار دستور CREATE TABLE در این خواهد بود که یک خط جداگانه برای فهرست کردن تمام ستون های مرتبط با کلید اصلی ترکیبی اضافه میشود.

بنابراین، ما یک کلید اصلی ترکیبی را بر روی سه ستون پیاده سازی کردهایم.
ایجاد یک کلید اصلی ترکیبی با استفاده از دستور ALTER TABLE
دستور ALTER TABLE ADD CONSTRAINT به توسعه دهندگان این امکان را میدهد که یک کلید اصلی ترکیبی را به جدول موجود اضافه کنند، به همان روشی که قبلاً برای کلید اصلی تک ستونه توضیح داده شد.
ALTER TABLE AdventureWorks2022.HumanResources.Training
ADD CONSTRAINT PK_Training PRIMARY KEY CLUSTERED (Employee_ID, Last_Name, Course_Title);ما یک کلید اصلی ترکیبی را بر روی یک جدول موجود برقرار کردهایم.

چطور Primary Key در SQL Server را ویرایش کنیم؟
کلید اصلی یا Primary Key در SQL Server را نمیشود ویرایش کرد یعنی SQL Server اجازه نمیدهد که مستقیماً یک کلید اصلی موجود را ویرایش کنیم. شما باید آن را حذف کرده و سپس یک کلید اصلی جدید تنظیم کنید. این کار معمولاً همراه با سایر تغییرات طرحبندی (schema) انجام میشود مانند تغییر نوع داده یک ستون.
در صورت نیاز، میتوانید قبل از بازتعریف کلید اصلی یا Primary Key در SQL Server، نوع داده را با استفاده از دستور ALTER TABLE … ALTER COLUMN در SQL تغییر دهید. این مرحله اطمینان حاصل میکند که ستون با محدودیت های کلید اصلی از نظر ساختاری سازگار است.
چطور یک Primary Key در SQL Server را حذف کنیم؟
برای حذف یک کلید اصلی از جدول، از دستور ALTER TABLE استفاده کنید:
ALTER TABLE table_name
DROP CONSTRAINT constraint_name; فرض کنید که نیاز داریم کلید اصلی تک ستونه موجود در یک جدول را به یک کلید اصلی ترکیبی تغییر دهیم. اولین قدم حذف کلید اصلی تک ستونه موجود است:
ALTER TABLE HumanResources.Training
DROP CONSTRAINT PK_Training;توجه داشته باشید که حذف یک کلید اصلی یا Primary Key در SQL Server، دادههای ذخیره شده در جدول را حذف نمیکند یا به هیچ وجه تأثیری بر آن نمیگذارد؛ تنها شناسایی رکوردهای ذخیره شده در جدول را حذف میکند.

حال میتوانیم یک کلید اصلی جدید را به همان روشی که در بالا نشان داده شد، با استفاده از ADD CONSTRAINT در دستور ALTER TABLE دوباره ایجاد کنیم.
تفاوت کلید اصلی در مقابل کلید منحصر به فرد
یک کلید منحصر به فرد یک محدودیت اضافی است که میتوان درون یک جدول پایگاه داده برای تمایز رکوردها استفاده کرد. به طور کلی، این محدودیت اطمینان حاصل میکند که محدودیت های منحصر به فرد بر روی یک ستون یا گروهی از ستونها در جدول اعمال میشود بدون اینکه کلید اصلی تعیین شود.
محرک اصلی استفاده از کلید منحصر به فرد زمانی است که یک کلید اصلی قبلاً در همان جدول ایجاد شده باشد. در حالی که یک جدول فقط میتواند یک کلید اصلی داشته باشد، میتواند چندین کلید منحصر به فرد داشته باشد.
تفاوت های بیشتر بین کلید اصلی و کلید منحصر به فرد
پذیرش مقدار NULL
کلیدهای منحصر به فرد از کلیدهای اصلی متفاوت هستند به این دلیل که میتوانند مقادیر NULL را بپذیرند.
تعداد کلیدها
در حالی که یک جدول فقط میتواند یک کلید اصلی داشته باشد، میتواند چندین کلید منحصر به فرد داشته باشد.
سهولت اصلاح
کلیدهای منحصر به فرد این مزیت را دارند که میتوانند به طور مستقیم اصلاح شوند بدون اینکه نیاز به حذف و بازسازی آنها باشد.
ایندکس ها
یک کلید منحصر به فرد یک ایندکس غیرخوشه ای ایجاد میکند، در حالی که یک کلید اصلی یک ایندکس خوشه ای ایجاد میکند.
ترکیب کلید اصلی و کلید منحصر به فرد
یک کلید اصلی میتواند یک کلید منحصر به فرد باشد اما برعکس امکان پذیر نیست.
نتیجه گیری
کلید اصلی یا Primary Key در SQL Server نقش حیاتی در پایگاه های داده SQL Server ایفا میکنند و به عنوان شناسه های منحصر به فرد برای هر رکورد در یک جدول خاص عمل میکنند. به این ترتیب، آنها از یکپارچگی و سازگاری دادهها در سرتاسر پایگاه داده پشتیبانی میکنند. درک کلیدهای اصلی به عنوان یک مهارت اساسی برای هر متخصص پایگاه داده ضروری است.
در انتها اگر از مطالعه این مقاله لذت بردین خوشحال میشیم که نظرات و پیشنهاداتتون رو با ما به اشتراک بگذارین.







