ایجاد پایگاهداده
در ادامه ی کار میخواهیم برای شروع، یک دیتابیس ایجاد و بر روی آن کارهای مختلفی را انجام میدهیم، ایجاد دیتابیس را میتوانیم به دو صورت انجام دهیم، یکی بهصورت گرافیکی و از طریق نرمافزار SSMS و یکی از طریق کد T-SQL که در ادامه هر دو روش را بررسی خواهیم کرد.
برای شروع بهمانند شکل ۱-۳ وارد SSMS شوید و بر روی Databases کلیک راست کنید و بر روی New Database کلیک کنید.
شکل ۱-۳ ایجاد دیتابیس
در شکل ۲-۳ باید نام دیتابیس مورد نظر خود را در قسمت Database Name وارد کنید و در قسمت Owner باید یک کاربر را بهعنوان صاحب این دیتابیس انتخاب کنید که اگر انتخاب نکنید، همین کاربری که با آن در حال ایجاد دیتابیس هستید بهعنوان صاحب آن در نظر گرفته خواهد شد؛ بعد از واردکردن نام در قسمت Database name، دو گزینه با نام دیتابیس شما ایجاد میشود که اولی (DB1) نام دیتابیس و دومی (DB1_Log) دیتابیسی برای ثبت Log است، این دو مکمل هم هستند و حتماً برای اجرا به همدیگر نیاز دارند.
شکل ۲-۳ ایجاد دیتابیس
در قسمت Option که در شکل ۳-۳ مشخص شده است، گزینههایی وجود دارد، گزینهی Collation به روشی برای مقایسهی اطلاعات با هم اشاره دارد؛ قسمت Recovery model که مربوط به عملیات پشتیبانگیری و بازیابی اطلاعات است که در موقع مناسب توضیح خواهیم داد. در قسمت Compatibility level هم میتوانید مشخص کنید که این دیتابیس با کدام نسخه از SQL سازگاری داشته باشد.
شکل ۳-۳ ایجاد دیتابیس
بعد از ایجاد دیتابیس میتوانید بهمانند شکل ۴-۳ در قسمت Databases، این دیتابیس جدید را مشاهده کنید.
شکل ۴-۳
اگر وارد مسیر مورد نظر در شکل ۵-۳ شوید، فایل دیتابیس تولید شده را مشاهده میکنید که همان دو فایلی است که اشاره کردیم.
شکل ۵-۳ لیست دیتابیس
نکته:
سعی کنید در اول کار زمانیکه میخواهید دیتابیس خود را ایجاد کنید، آدرس آن را در یک مکان مطمئن و با حجم ذخیرهسازی بالا قرار دهید تا در آینده با اضافه شدن داده، اطلاعات شما حفظ شود.
توجه داشته باشید که برای بدست آوردن محل ذخیره سازی دیتابیس میتوانید به مانند شکل ۶-۳ بر روی دیتابیس مورد نظر کلیک راست کنید و وارد پنجره Properties شوید و در شکل زیر از قسمت Files آدرس هر دو فایل را مشاهده کنید.
شکل ۶-۳ مسیر دیتابیس
۳-۱-۲ ایجاد جدول در دیتابیس
برای ایجاد جدول در دیتابیس مورد نظر باید بهمانند شکل ۷-۳ بر روی پوشهی Tables کلیک راست کنید و گزینهی Table را از قسمت New انتخاب کنید.
شکل ۷-۳ ایجاد جدول
در شکل ۸-۳ باید در قسمت Column Name، نام ستون خود را وارد کنید که چهار مورد وارد شده است و در قسمت Data Type باید نوع ستون مورد نظر را از نظر عددی، حرفی و … انتخاب کنید، برای ذخیره کردن این جدول باید بر روی عنوان جدول کلیک راست کنید و گزینهیSave را انتخاب کنید.
شکل ۸-۳ ایجاد جدول
بعد از ایجاد جدول باید جدول مورد نظر در قسمت Table نمایش داده شود، اگر اینچنین نشد باید بهمانند شکل ۹-۳ بر روی Tables کلیک راست کنید و گزینهی Refresh را انتخاب کنید تا جدول مورد نظر مشخص شود.
شکل ۹-۳ ایجاد جدول
بعد از ایجاد جدول میخواهیم اطلاعاتی در آن وارد کنیم؛ برای این کار در شکل ۱۰-۳ بر روی dbo.Table_1 کلیک راست کنید و گزینهی Edit Top 200 Rows را انتخاب کنید.
شکل ۱۰-۳ ورود اطلاعات در جدول
در شکل ۱۱-۳ اطلاعاتی را وارد کنید و صفحهی مورد نظر را ببندید.
شکل ۱۱-۳ ورود اطلاعات در جدول
برای اینکه اطلاعات موجود در جدول را مشاهده کنید، میتوانید بهمانند شکل ۱۲-۳ بر روی جدول مورد نظر کلیک راست کنید و گزینهی Select Top 1000 Rows را انتخاب کنید.
شکل ۱۲-۳ نمایش اطلاعات جدول
همانطور که در شکل ۱۳-۳ مشاهده میکنید، اطلاعات جدول توسط یک اسکریپت در خروجی به نمایش گذاشته شده است که در ادامه، در مورد کد مورد نظر توضیحاتی خواهیم داد.
شکل ۱۳-۳ نمایش اطلاعات جدول
بعد از ایجاد اولیهی جدول و واردکردن مقادیری در آن، میخواهیم در مورد نوع دادهی ورودی صحبت کنیم که بسیار مهم است.
۳-۱-۳ انواع Data Type در جداول
زمانیکه میخواهیم یک Filed جدید در جدول، مانند: نام، نام خانوادگی، شمارهی دانشجویی و… ایجاد کنیم باید از انواع مختلف دادهای استفاده کنیم، مثلاً برای نوشته ای مانند نام باید از نوع دادهی Char/nchar استفاده کنید و به همین ترتیب از انواع مختلف دیگر میتوان استفاده کرد. در زیر این نوع دادهها را بررسی میکنیم:
انواع دادههای رشتهای
جدول ۱-۳ انواع دادههای رشتهای
نوع داده | اندازه داده | توضیحات |
CHAR(size) | حداکثر اندازه ۸۰۰۰ کاراکتر. | طول داده ثابت است. |
VARCHAR(size) or VARCHAR(max) | حداکثر اندازه ۸۰۰۰ کاراکتر با افزایش حجم. | طول داده متغیر است و توانایی افزایش حجم تا ۲ گیگابایت را داراست. |
TEXT | حداکثر اندازه ۲ گیگابایت. | دادههای غیر یونیک با طول متغیر. |
NCHAR(size) | حداکثر اندازه ۴۰۰۰ کاراکتر. | دادههای غیر یونیک با طول ثابت. |
NVARCHAR(size) or NVARCHAR(max) | حداکثر اندازه ۴۰۰۰ کاراکتر با افزایش حجم. | طول داده متغیر است و توانایی افزایش حجم تا ۲ گیگابایت را داراست. |
NTEXT | حداکثر اندازه ۱,۰۷۳,۷۴۱,۸۲۳ bytes است. | دادههای غیر یونیک با طول متغیر. |
BINARY(size) | حداکثر اندازه ۸۰۰۰ کاراکتر. | طول داده ثابت است. |
VARBINARY(size) or VARBINARY(max) | حداکثر اندازه ۸۰۰۰ کاراکتر با افزایش حجم. | طول داده متغیر است و توانایی افزایش حجم تا ۲ گیگابایت را داراست. |
IMAGE | حداکثر اندازه ۲ گیگابایت. | دادههای غیر یونیک با طول متغیر. |
انواع دادههای عددی
جدول ۲-۳ دادههای عددی
نوع داده عددی | حداکثر اندازه | توضیحات | |
BIT | عدد صحیح است که میتواند ۰ یا ۱ یا NULL باشد. | ||
TINYINT | از ۰ تا ۲۵۵ | ||
SMALLINT | از -۳۲۷۶۸ تا ۳۲۷۶۷ | ||
INT | از -۲,۱۴۷,۴۸۳,۶۴۸ تا ۲,۱۴۷,۴۸۳,۶۴۷ | ||
BIGINT | از -۹,۲۲۳,۳۷۲,۰۳۶,۸۵۴,۷۷۵,۸۰۸ تا ۹,۲۲۳,۳۷۲,۰۳۶,۸۵۴,۷۷۵,۸۰۷ | ||
DECIMAL(m,d) | M اگر مشخص نشده باشد بهصورت پیشفرض ۱۸ در نظر گرفته میشود. | M تعداد ارقام و d تعداد ارقام اعشار بعد از ممیز است. | |
d اگر مشخص نشده باشد، بهصورت پیشفرض ۰ در نظر گرفته میشود. | |||
DEC(m,d) | M اگر مشخص نشده باشد بهصورت پیشفرض ۱۸ در نظر گرفته میشود. | M تعداد ارقام و d تعداد ارقام اعشار بعد از ممیز. | |
d اگر مشخص نشده باشد، بهصورت پیشفرض ۰ در نظر گرفته میشود. | |||
NUMERIC(m,d) | M اگر مشخص نشده باشد بهصورت پیشفرض ۱۸ در نظر گرفته میشود. | M تعداد ارقام و d تعداد ارقام اعشار بعد از ممیز. | |
d اگر مشخص نشده باشد، بهصورت پیشفرض ۰ در نظر گرفته میشود. | |||
FLOAT(n) | اعداد شناور | که در آن n تعداد تعداد بیت برای ذخیره بهصورت نماد علمی است. | |
N بهصورت پیشفرض ۵۳ در نظر گرفته خواهد شد. | |||
SMALLMONEY | از – ۲۱۴,۷۴۸.۳۶۴۸ تا ۲۱۴,۷۴۸.۳۶۴۷ | ||
MONEY | از -۹۲۲,۳۳۷,۲۰۳,۶۸۵,۴۷۷.۵۸۰۸ تا ۹۲۲,۳۳۷,۲۰۳,۶۸۵,۴۷۷.۵۸۰۷ |
انواع دادههای زمان و تاریخ
جدول ۳-۳ دادههای زمان و تاریخ
نوع داده | حداکثر اندازه کاراکتر | توضیحات |
DATE | دامنهی اعداد از ‘۰۰۰۱-۰۱-۰۱’ تا ‘۹۹۹۹-۱۲-۳۱’. | فرمت نمایش ‘YYYY-MM-DD'” |
DATETIME | دامنهی اعداد از ‘۱۷۵۳-۰۱-۰۱ ۰۰:۰۰:۰۰’ تا ‘۹۹۹۹-۱۲-۳۱ ۲۳:۵۹:۵۹’. | فرمت نمایش ‘YYYY-MM-DD hh:mm:ss[.mmm]’ |
دامنهی زمان از ’۰۰:۰۰:۰۰′ تا ’۲۳:۵۹:۵۹:۹۹۷′ | ||
DATETIME2(fractional seconds precision) | دامنهی تاریخ از ‘۰۰۰۱-۰۱-۰۱’ تا ‘۹۹۹۹-۱۲-۳۱’. | فرمت نمایش ‘YYYY-MM-DD hh:mm:ss[.fractional seconds]’ |
دامنهی زمان از ’۰۰:۰۰:۰۰′ تا ’۲۳:۵۹:۵۹:۹۹۹۹۹۹۹′. | ||
SMALLDATETIME | دامنهی تاریخ از ‘۱۹۰۰-۰۱-۰۱’ تا ‘۲۰۷۹-۰۶-۰۶’. | فرمت نمایش ‘YYYY-MM-DD hh:mm:ss’ |
دامنهی زمان از ’۰۰:۰۰:۰۰′ تا ’۲۳:۵۹:۵۹′. | ||
TIME | دامنهی زمان از’۰۰:۰۰:۰۰.۰۰۰۰۰۰۰′ تا ’۲۳:۵۹:۵۹.۹۹۹۹۹۹۹′ | فرمت نمایش ‘YYYY-MM-DD hh:mm:ss[.nnnnnnn]’ |
DATETIMEOFFSET(fractional seconds precision) | دامنهی تاریخ از ‘۰۰۰۱-۰۱-۰۱’ تا ‘۹۹۹۹-۱۲-۳۱’. | فرمت نمایش ‘YYYY-MM-DD hh:mm:ss[.nnnnnnn]’ [{+|-}hh:mm] |
دامنهی زمان از ’۰۰:۰۰:۰۰′ تا ’۲۳:۵۹:۵۹:۹۹۹۹۹۹۹′. | ||
دامنهی منطقه از -۱۴:۰۰ تا +۱۴:۰۰. |
در جدولهایی که بررسی کردیم، تمام دادههای رشتهای، عددی، زمان و تاریخ تعریف شده است و توضیحات مربوط به آن داده شده است.
Data Typeهای دیگری نیز وجود دارد که در نسخههای جدید SQL میتوانید از آنها استفاده کنید:
جدول ۴-۳ دادههای دیگر
نوع داده | توضیحات |
sql_variant | حداکثر ۸۰۰۰ بایت داده از انواع مختلف داده، به جز متن،ntext و زمانسنج ذخیره میکند. |
uniqueidentifier | شناسه منحصربهفرد جهانی (GUID) را ذخیره میکند. |
xml | دادههای قالببندی شده XML را ذخیره میکند، حداکثر ۲ گیگابایت. |
cursor | این نوع داده برای ذخیرهی متغیرها و یا پارامترهای OUTPUT مربوط به store proceduere کاربرد دارد. |
table | مجموعهای از نتایج را برای پردازش بعدی ذخیره میکند. |
حذف دیتابیس در SQL Server
بعد از اینکه توانستیم یک دیتابیس را ایجاد کنیم نوبت به حذف آن میرسد، برای حذف دیتابیس کافی است بهمانند شکل ۱۴-۳ بر روی دیتابیس مورد نظر کلیک راست کنید و گزینهی Delete را انتخاب کنید.
شکل ۳-۱۴ حذف دیتابیس
در شکل ۱۵-۳ نام دیتابیس DB1 در لیست مشخص شده است و اگر بر روی Delete کلیک کنید، دیتابیس حذف خواهد شد، اما دو گزینه در زیر این صفحه وجود دارد.
شکل ۳-۱۵ حذف دیتابیس
گزینهی Delete backup and restore history information for databases: این گزینه بهصورت پیشفرض فعال است و تاریخ و اطلاعات این دیتابیس را از دیتابیس MSDB حذف میکند.
گزینهی Close existing connections، بهصورت پیشفرض فعال نیست و اگر آن را فعال کنید، قبل از حذف دیتابیس، اول بررسی میکند که این دیتابیس در جایی دیگر باز شده و یا در حال استفاده است، ابتدا آن ارتباط را میبندد و بعد اقدام به حذف میکند، سعی کنید این گزینه را فعال نکنید تا حداقل در زمان حذف مشخص شود که در جایی دیگر در حال استفاده است.