جدول قالبی برای ذخیره سازی اطلاعات میباشد و در واقع ساختار ذخیره سازی یک موجودیت (Entity) در پایگاه داده است. هر جدول از مجموعهای از فیلدها تشکیل شده است که برای نگهداری دادهها در رکوردها میباشد. در این آموزش با نحوه ساختن جدول در Sql Server آشنا خواهید شد. در آموزش قبل با نحوه ساخت دیتابیس در Sql آشنا شدید.

انواع داده در Sql
همانطور که گفته شد هر جدول از مجموعهای از فیلدها تشکیل خواهد شد و هر فیلد با توجه به ماهیت آن از یک نوع دادهای خاص تعریف میشود. قبل از ساختن جدول در Sql server باید با انواع دادهها در دیتابیس به شرح زیر آشنا شوید:
داده رشتهای در Sql
در کل رشتهها در قالب مشخصههایی ارائه میشوند که دو مشخصه با اهمیت به شرح زیر دارند:
unicode بودن یا نبودن
این مورد برای ذخیرهسازی مقادیر غیرلاتین مانند فارسی دارای اهمیت است اگر نوع داده رشته Unicode نباشد امکان ذخیرهسازی مقادیر غیر لاتین وجود ندارد. همچنین در حالت غیر Unicode هرکاراکتر یک بایت و در حالت Unicode هر کاراکتر دو بایت فضا اشغال میکند. نماد Unicode بودن “N” است.
طول ثابت یا متغیر برای رشتهها
اگر یک نوع داده رشتهای با طول ثابت باشد و در آن فیلد اطلاعات به اندازه گفته شده قرار نگیرد همان میزان فضا اشغال خواهد شد اما نوع داده رشته با طول متغیر اطلاعات به اندازه کاراکترها، فضا اشغال میکنند.
در واقع رشته با طول ثابت از نظر مصرف فضا بهینه نیست اما بواسطه ثابت بودن طول رشتهها در همه عملیاتها از جمله بازیابی اطلاعات از نظر سرعت بهینه است.
انواع داده رشتهای جهت ساختن جدول در Sql Server بصورت زیر است:
Char: رشته غیر Unicode با طول ثابت
Varchar: رشته غیر Unicode با طول متغیر
Nchar: رشته Unicode با طول ثابت
NVarchar: رشته Unicode با طول متغیر
char(10) Nchar(10) varchar(50) nvarchar(50)
عددی که در پرانتز مقابل انواع داده رشتهای نوشته میشود در حالتهای با طول متغیر حداکثر اندازه مجاز میباشد و در انواع داده با طول ثابت اندازه دقیق را مشخص میکند.
حداکثر تعداد کاراکترهای قابل قبول برای حالتهای غیر unicode، 8000 و برای حالتهای Unicode، 4000 است که بجای این اعداد میتوان کلمه Max را نوشت. بطورمثال Nvarchar(max)
دو نوع دادهای Text و NText برای نگهداری رشتهها حداکثر تا 40 بایت در نظر گرفته شده است. اما این دو نوع امکانات سایر فیلدها را ندارند بطورمثال Update، Like و عملگر مساوی (=) روی این فیلدها کار نمیکند و به عنوان کلید اصلی جدول نیز نمیتوانند باشند.
دستور int در Sql
انواع اعداد صحیح جهت ساختن جدول در sql server بصورت زیر است:
- Tiny Int: عدد صحیح یک بایتی است یعنی عددی بین صفر تا 255
- Small Int: عدد صحیح دو بایتی است یعنی عددی بین -32768 تا 32767
- Int: عدد صحیح 4 بایتی است یعنی عددی بین -2 31 تا 2 31 -1
- BigInt: عدد صحیح 8 بایتی است یعنی عددی بین -2 63 تا 2 63 -1
اعشار در Sql Server
- real: یک عدد اعشار 4 بایتی تا 24 رقم اعشار است
- Float: یک عدد اعشار بسیار بزرگ است
- decimal: این نوع داده جهت نگهداری اعداد اعشاری با تعداد اعشار مشخص استفاده میگردد. این نوع داده دارای دو پارامتر ورودی است اولی Precision است که به معنای تعداد کل رقمهای عدد میباشد و دومی Scale تعداد ارقام اعشار را مشخص میکند. بطورمثال اگر فیلدی بصورت decimal(5, 3)تعریف شود، حداکثر مقدار آن برابر با 99.999 میباشد.
این نوع فیلد بسیار کند بوده و استفاده از آنها توصیه نمیگردد.
نوع boolean در Sql
در T-Sql نوع bool نداریم و بجای bool از نوع bit استفاده میشود که یک بایتی است و فقط عدد 0 و 1 را میپذیرد و بصورت True (1) و False (0) نمایش میدهد.
نوع داده برای قیمت
Money: برای ذخیره قیمت کاربرد دارد. یک عدد ۸ بایتی است که میتواند ۱۵ رقم صحیح و۴ رقم اعشار را در خود ذخیره کند.
Small Money: یک عدد ۴ بایتی است که میتواند ۶ رقم صحیح و ۴ رقم اعشار را در خود ذخیره کند.
نوع داده تاریخ و زمان
Date: فقط تاریخ از 1/1/1 تا آخر سال 9999
Time: زمان از ساعت تا وقت 100 نانو ثانیه
DateTime: تاریخ و زمان از سال تا میلی ثانیه میباشد که سال کمتر از 1753 قبول نمیکند.
DateTime2: تاریخ و زمان از سال تا میلی ثانیه از 1/1/1 تا آخر سال 9999 میباشد.
SmallDateTime: تاریخ و زمان از سال تا میلی ثانیه میباشد که شامل سالهای 1753 تا 2079 است.
داده باینری در Sql
Image: نگهداری تصاویر حداکثر 4 گیگا بایت برای یک تصویر
Binary: برای نگهداری انواع فایلها و مقادیر Binary با اندازه مشخص که اندازه آن داخل پرانتز قرار داده میشود. بطور مثال binary(5)
Varbinary: نگهداری انواع فایلها و اطلاعات باینری با طول متغیر که حداکثر اندازه مجاز آن داخل پرانتز قرار داده میشود. بطور مثال varbinary(10)
timestamp در اس کیو ال
یک مقدار باینری که تغییرات رکورد را مشخص میکند و کاربر حق مقداردهی به آن را ندارد و بصورت خودکار با اعمال هر تغییر روی رکورد، مقدار آن تغییر میکند. هر رکوردی که بزرگترین مقدار در Timestamp را دارد آخرین رکورد است.
فرض کنید یک رکورد را جستجو و بازیابی کرده و مقدار فیلد timestamp آنرا در متغیری ذخیره میکنیم. سایر فیلدها را برای پردازش به یک فرآیند محاسباتی ارسال میکنیم پس از پایان محاسبات و قبل از اعمال نتایج مجدد فیلد timestamp آن رکورد را میبینیم و با مقدار قبلی مقایسه میکنیم اگر مقدار آن با مقدار قبلی یکسان باشد یعنی در فاصله بازیابی و انجام محاسبات این رکورد تغییر نکرده و اگر یکسان نبود یعنی این رکورد تغییر کرده است.
نوع داده uniqueidentifier در Sql
برای نگهداری مقادیر Guid (شناسه یکتا جهانی) میباشد. این کد 36 کاراکتر است و هر بار که تولید میشود یکتا است. با تابع NewId() این کد یکتا تولید میشود.
نوع داده xml در Sql Server
برای نگهداری اسناد xml مانند اسناد office حداکثر تا 4 گیگا بایت

دستور identity در Sql
برای اینکه در sql مقداردهی خودکار انجام شود باید هنگام ساختن جدول در sql server یک فیلد از نوع عدد صحیح را بصورت identity تعریف کرد. جهت تعریف فیلد بصورت Indentity مقابل فیلد عدد صحیح عبارت ” Indentity” را قرار دهید. در آموزش مقدار دهی خودکار در sql درباره فیلد Identity توضیحات تکمیلی ارائه شده است.
نام فیلد مورد نظر Int Identity ProductID Int Identity
کوئری ایجاد جدول در Sql
ساختن جدول در sql server با استفاده از دستورات زیر امکانپذیر است:
create table نام جدول موردنظر ( فیلد1 نوع داده, فیلد2 نوع داده, ... ) create table Person ( Code int identity, FirstName nvarchar(30), LastName nvarchar(max) )
بصورت پیش فرض هر فیلد امکان پذیرش مقدار Null را دارد در واقع Allow Null یا Nullable است. برای جلوگیری از پذیرش مقدار Null باید مقابل فیلد موردنظر عبارت “Not Null” را قرار دهید.
create table Person ( Code int identity, PersonGuid uniqueidentifier not null, FirstName nvarchar(30), LastName nvarchar(50) not null )
دقت داشته باشید در هنگام تعریف فیلدها، مقادیری که محاسباتی هستند را در جدول به عنوان فیلد قرار ندهید و اطلاعات را ذخیره نکنید به عنوان مثال سن کارمند که باید بر اساس تاریخ تولد و سال جاری محاسبه شودو یا مبلغ کل یک کالا که بر اساس تعداد، تخفیف و مقدار هر عدد محاسبه میشود ارزش ذخیره سازی ندارد.
ایجاد جدول در دیتابیس
در sql میتوان بدون نوشتن دستورات (کوئری)، یک جدول ایجاد کرد. برای ساختن جدول در Sql Server باید مراحل زیر را انجام دهید.
برنامه Sql Server Management Studio را باز کرده و به Sql Server متصل شوید. در آموزش Sql Server نحوه اتصال به پایگاه داده بصورت کامل توضیح داده شده است.
دیتابیس مورد نظر را باز کرده و بر روی پوشه (فولدر) Tables راست کلیک کرده و گزینه new و بعدش table کنید.

در صفحه باز شده نام فیلدها، نوع داده و Allow Null بودن را مشخص کنید.

در صورتیکه میخواهید فیلدی از نوع Identity تعریف کنید در پایین صفحه قسمت Column Properties در بخش Identity Specification مقدار Is Identity را برابر با Yes قرار دهید و سپس Identity Increment (میزان افزایش) و Identity seed (مقدار شروع) را مشخص کنید. (این دو مقدار بصورت پیش فرض برابر با یک میباشد)

در انتها دکمه save را بزنید و در پنجره باز شده یک نام برای جدول مشخص کنید.

سلام
ممنون بابت توضیحات
سلام پیمان عزیز. ممنون از توجه شما