آموزش Sql Server مقدماتی تا پیشرفته

آموزش Sql Server مقدماتی تا پیشرفته

Sql Server یک سیستم مدیریت پایگاه داده‌های رابطه ای (RDBMS) است که لهجه یا زبان برنامه نویسی آن T-Sql است و توسط شرکت مایکروسافت ارائه شده است. این روزها زبان برنامه نویسی T-Sql از محبوبیت بیشتری برخوردار شده است و جزء سه بانک اطلاعاتی برتر دنیاست و این روزها گوی سبقت را از Oracle گرفته است و در بیشتر شرکت‌ها و برنامه‌های نرم افزاری برای مدیریت پایگاه داده از Sql Server استفاده شده است بنابراین هر برنامه نویسی لازم است این زبان برنامه نویسی را یاد بگیرد. در آموزش Sql Server مقدماتی تا پیشرفته با چند دستور مهم و پرکاربرد آشنا خواهید شد.

آموزش T-Sql

همانطور که گفته شد T-Sql لهجه یا زبان برنامه نویسی Sql Server می‌باشد که بواسطه اهمیت بسیار زیاد تراکنش‌ها (Transaction)ها در پایگاه داده‌ها، مایکروسافت اسم لهجه خود را T-Sql یا همان Transact Sql نامیده است. تراکنش یعنی مجموعه‌ای از دستورات که یا همگی اجرا می‌شوند یا هیچ یک اجرا نمی‌شوند.

جهت برنامه نویسی به زبان T-Sql باید نرم افزار Sql Server Management Studio نصب شود جهت نصب این نرم افزار می‌توانید آموزش نصب Sql Server را مشاهده کنید.

آموزش Sql Server

مشخصات فیلم آموزشی
تولید کننده: وب سایت استوایی
مدرس: روناک حیات غیبی
حجم: 16.00 مگابایت
مدت زمان: 05:47 دقیقه
زبان:فارسی
تاریخ انتشار: 14 فروردین 1398

امنیت در Sql Server

امنیت شامل دو مرحله است:

  • Authentication : در این مرحله تنها دوگروه مجاز و غیر مجاز وجود دارد
  • Authorization: تفکیک افراد مجاز از افراد غیر مجاز است

جزئیات دسترسی و تفاوت‌های افراد مجاز در Authentication مشخص نیست و تفاوت سطوح دسترسی افراد مجاز در Authorization مشخص می‌شود.

آموزش رایگان Sql Server | استوایی
آموزش رایگان Sql Server | استوایی

نحوه اتصال به Sql Server

جهت ورود به نرم افزار دو حالت وجود دارد :

  • Windows Authentication
  • Sql Server Authentication

در صورتیکه بخواهید بصورت Windows Authentication وارد برنامه شوید نیاز به وارد کردن نام کاربری و کلمه عبور وجود ندارد بلکه هویت آنرا از ویندوز می‌پرسد. و فقط باید در قسمت ServerName، نام سرور یا کامپیوتر موردنظر و یا IP آنرا وارد نمایید. در واقع در این حالت برای کاربرهایی که در سیستم عامل تعریف شده‌اند در Sql Server دسترسی تعیین می‌کنیم. در حالت استفاده Local و زمانیکه از سرویس Sql Server تحت یک دامین استفاده می‌کنید روش مناسبی است اما در استفاده‌های بصورت ریموت مناسب نیست.

در حالت Sql Server Authentication هنگام اتصال به سرویس باید نام کاربری و کلمه عبور وارد شود. در این حالت یک کاربر با حداکثر دسترسی بنام sa (System Administrator) از قبل تعریف شده که رمز این کاربر در حین نصب پرسیده و مشخص می‌شود و البته پس از نصب قابل تغییر است.

هنگام اتصال به سرویس گزینه Server Name کامپیوتری را مشخص می‌کند که سرویس Sql بر روی آن نصب است. روی هر کامپیوتر به تعداد نامحدودی می‌توان سرویس Sql نصب کرد. یکی از نصب‌ها تحت عنوان Defualt Instance می‌باشد و هیچ اسم خاصی ندارد. بر روی هر کامپیوتر فقط یک Defualt Instance مجاز می‌باشد. هنگام نصب Sql Server ازشما یک نام پرسیده می‌شود که به Instance نسبت داده می‌شود. داشتن Instanceهای همنام امکانپذیر نیست.

توجه داشته باشید در صورتیکه بخواهید به Sql بر روی سیستم خودتان وصل شوید می‌توانید در قسمت ServerName از “.” ، localhost و یا (local) استفاده نمایید. همچنین اگر در هنگام نصب default Instance انتخاب نشده و نام دلخواهی در قسمت Name Instance قرار داده‌اید باید در انتهای قسمت Server Name ، اسم Instance به اینصورت مشخص شود.

نام سرور یا کامپیوتر | IP |(local) | localhost | . /  Instance    اسم 

توضیحات بیشتر درباره مفاهیم دیتابیس

همانطور که گفته شد مجموعه ای از جداول تشکیل دهنده یک پایگاه داده هستند و هر جدول دارای دو بخش Schema و نام جدول می‌باشد که در Sql، شما (Schema) پیش فرض dbo می‌باشد یعنی درصورتیکه هنگام تعریف جدول Schema مشخص نگردد بصورت پیش فرض برابر با dbo قرار داده می‌شود. Schema همانند ظرفی کلیه اشیا بانک اطلاعاتی را در خودش نگه می دارد و دارای دو کاربرد مهم می باشد:

  • دسته بندی جداول : با دسته بندی جداول به کمک Schema، تشخیص اینکه هر جدول مربوط به کدام بخش از سیستم است آسان‌تر می‌گردد.
  • ایجاد سطح دسترسی بر روی جداول : بطور مثال می‌توان مشخص کرد هر کاربر به جداول کدام Schema دسترسی داشته باشد و یا اینکه امکان حذف و یا ویرایش کدام دسته از جداول را داشته باشد.

انواع دستورات Sql

T-Sql به عنوان یک زبان ساخت یافته از دسته دستورات به شرح زیر تشکیل شده است:

  • دستورات DDL: دستوراتی جهت ایجاد، ویرایش و حذف ساختارها و قالب‌های ذخیره و بازیابی اطلاعات
  • دستورات DML: دستورات لازم برای درج، حذف، ویرایش و بازیابی محتوای ساختارهای ذخیره و بازیابی اطلاعات
  • دستورات DCL: دستوراتی برای تعیین سطح دسترسی به منابع اطلاعاتی

جهت آشنایی بیشتر با انواع دستورات Sql آموزش دستورات Sql را مشاهده کنید. در آموزش مقدماتی تا پیشرفته Sql Server با چند دستور مهم از دستورات DML آشنا خواهید شد.

آموزش query زدن در sql

دستور Select پرکاربردترین دستور Sql جهت بازیابی اطلاعات جدول است.

Select * 
From نام جدول

اگر همه فیلدها بجز یکی از آنها را بخواهید باید نام تک تک فیلدها نوشته شود.

Select نام فیلد 1, نام فیلد 2 , ...
From نام جدول

توجه داشته باشید اگر نام جدول، نام فیلد یا پایگاه داده یا هر شی در Sql دارای فاصله باشد باید آنرا داخل براکت “[ ]” قرار دهید وگرنه هنگام اجرای دستورات با خطا مواجه می‌شوید.

Select *
From [my table]

جهت یادگیری بهتر آموزش دستور select در Sql را مشاهده کنید.

دستورات شرطی در Sql

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

Select * یا لیست فیلدها
From اسم جدول
Where شرط مورد نظر

در آموزش دستور Where در Sql اعمال شرط بر روی پرس‌و‌جو توضیح داده شده است و انواع مختلف شرط بررسی شده است.

جستجوی قسمتی از متن در Sql

گاهی اوقات لازم است اعمال شرط بر روی یک فیلد رشته‌ای انجام شود در صورتیکه از عملگر تساوی “=” استفاده شود دقیقاً مواردی که برابر با مقدار مشخص است در خروجی ظاهر می‌شود و عملگر مساوی به هیچ عنوان الگوپذیر نیست پس برای بررسی شباهت هیچ کاربردی ندارد و برای این منظور باید از دستور Like استفاده کرد که در آموزش عملگر Like در Sql بطور کامل این دستور همراه با مثال‌های کاربردی و تفاوت آن با عملگر تساوی “=” توضیح داده شده است.

کالاهایی که نام آنها دقیقاً برابر با Bike است.

select * 
from Production.product
where Name='Bike' 

کالاهایی که نام آنها شامل Bike می‌باشد.

select *
from produnction.product 
where Name like '%Bike%'

مرتب سازی داده در Sql

اگر با دستور Select اطلاعات یک جدول را نمایش دهیم رکوردها بر اساس مقادیر کلید اصلی مرتب خواهند شد و گاهی لازم است مرتب‌سازی براساس یک یا چند فیلد دیگری انجام شود که برای اینکار باید از دستور Order By در انتهای دستور Select استفاده کرد. جهت یادگیری بهتر این دستور آموزش دستور Order By در Sql را مشاهده کنید.

select *
from production.product
where productId>100
order by Name

توابع Aggregate در Sql

توابعی می‌باشند که حاصل اجرای آنها روی یک مقدار هیچ ارزشی ندارد بطور مثال میانگین یک عدد، جمع یک عدد، Minimum یک عدد و ..

لیست توابع به شرح زیر است:

  • تابع Count: جهت شمارش تعداد رکوردها که خروجی این تابع 32 بیتی است
  • تابع Count-Big: این تابع نیز جهت شمارش تعداد رکوردهاست با این تفاوت که خروجی این تابع 64 بیتی است.
  • تابع Sum: این تابع جهت مجموع اعداد یک فیلد است.
  • تابع Max: این تابع بیشترین مقدار یک فیلد را نمایش می‌دهد.
  • تابع Min: این تابع کمترین مقدار یک فید را نمایش می‌دهد.
  • تابع Avg: این تابع میانگین مقادیر یک فیلد را نمایش می‌دهد.
  • تابع Var: این تابع واریانس مقادیر یک فیلد را نمایش می‌دهد.

در صورتیکه بخواهیم مجموع اعداد بر اساس یکی از فیلدها باشد باید در انتهای دستورات از گروه‌بندی استفاده شود بطور مثال مجموع تعداد فروش هر کالا، در این حالت باید بر اساس کد کالا گروه‌بندی انجام شود:

Select productId, sum(orderqty)
From sales.salesorderdetail
Group by productId

تابع تاریخ در آموزش Sql Server مقدماتی تا پیشرفته

در sql شش تابع برای کار با تاریخ به شرح زیر وجود دارد:

  • Year: با دریافت تاریخ، بخش سال از تاریخ را بصورت Int استخراج می‌کند.
select year('1398/01/01')    خروجی 1398 است
  • Month: با دریافت تاریخ، قسمت ماه از تاریخ را بصورت Int استخراج می‌کند.
select month('1398/01/01')   خروجی 1 است
  • Day: با دریافت تاریخ، قسمت روز از تاریخ را بصورت Int استخراج می‌کند.
select day('1398/01/10')   خروجی 10 است
  • DatePart: با دریافت فرمت و تاریخ قسمت خاصی از تاریخ را استخراج می‌کند. این تابع دو ورودی دریافت میکند یکی نوع خروجی است که بر اساس سال (YY)، ماه (MM)، روز (DD) و فصل (QQ) و دیگری تاریخ مورد نظر است.
select datepart(QQ,'1398/04/10') خروجی عدد 2 است یعنی فصل دوم از سال است
select datepart(yy,'1398/04/10') حروجی سال 1398 است
  • Datediff: تفاضل دو تاریخ را استخراج می‌کند. این تابع سه پارامتر ورودی دریافت می‌کند. اول اینکه تفاضل دو تاریخ بر اساس سال (year)، ماه (month) یا روز (day) باشد پارامتر دوم تاریخ شروع (ابتدا) و تاریخ دوم تاریخ پایان (انتها) می‌باشد. دقت داشته باشید درصورتیکه تاریخ پایان از تاریخ شروع کوچکتر باشد خروجی عددی منفی خواهد بود.
select datediff(DAY,'1398/01/01','1398/04/01')  خروجی 90 روز است
  • GetDate: تاریخ و زمان جاری سرور را استخراج می‌کند.
select getdate()  خروجی یک تاریخ و زمان میلادی می‌باشد بطور مثال 2019-12-07 08:23:40.140

عملگرهای مجموعه ای در آموزش Sql Server مقدماتی تا پیشرفته

T-Sql دارای 4 عملگر مجموعه‌ای به شرح زیر می‌باشد:

  • Union (اجتماع با حذف تکرار): رکوردهایی که در هر یک از دو مجموعه هستند در جواب ظاهر خواهند شد. اگر رکوردی در هر دو مجموعه وجود داشته باشد فقط یکبار در خروجی نمایش داده می‌شود.
  • Union All (اجتماع بدون حذف تکرار): همانند Union است با این تفاوت که اگر رکوردی عضو هر دو مجموعه باشد در خروجی دوبار نمایش داده می‌شود.
  • Inter Sect (اشتراک): فقط رکوردهایی که عضو هر دو مجموعه هستند در خروجی نمایش داده می‌شوند.
  • Except (تفاضل): رکوردهایی که در مجموعه اول هست اما در مجموعه دوم وجود ندارد بطور مثال اگر دو مجموعه A و B وجود داشته باشد A-B برابر با رکوردهایی است که در مجموعه A هستند و در مجموعه B نیستند.
Select نام فیلدها
From نام جدول
عملگر مجموعه‌ای
Select نام فیلدها
From نام جدول
عملگر مجموعه‌ای
....

توجه داشته باشید باید تعداد و نوع فیلدهای موجود در هریک از دستورات Select یکسان باشد.

دستور Join در Sql

Join ترکیب اطلاعاتی است که بواسطه نرمال‌سازی پایگاه داده یا طراحی Entity Based در جدول تفکیک شده ذخیره شده‌اند. بطور مثال فرض کنید یک جدول کالا و یک جدول فروش وجود دارد و می‌خواهید نام کالا را در کنار مجموع تعداد فروش نمایش داده شود در اینصورت چون اطلاعات از دو جدول متفاوت است باید از Join استفاده کرد. در واقع Join برای نمایش اطلاعات ترکیبی به گونه‌ای که هرگز به آن شکل ذخیره نشده‌اند، کاربرد دارد.

جادوی استوایی Sql Server |استوایی
جادوی استوایی Sql Server |استوایی

join چند جدول در sql

انواع مختلف Join در پایگاه داده به شرح زیر است:

  • Inner Join: در این نوع Join رکوردهای پدر بدون فرزند و فرزندان بدون پدر ظاهر نخواهند شد بطورمثال کالاهای فروش نرفته در خروجی نمایش داده نمی‌شود.
Select product.Name,sum(sales.orderqty)
From production.product product
Join یا  Inner Join sales.salesorderDetail sales on product.Id=sales.productId
Group by product.Name

Outer Join: این نوع Join به سه زیرگروه Left Outer Join، Right Outer Join، Full Outer Join تقسیم می‌شود:

  • Left Outer Join: در این نوع Join، از جدول پدر همه رکوردها حتی پدران بدون فرزند در خروجی نمایش داده می‌شود و از جدول فرزند فقط فرزندان دارای پدر در جواب ظاهر می‌شود. با توجه به اینکه حاصل این Join نمایش فیلدهای پدر و فرزند در هر رکورد است برای رکوردهای پدران بدون فرزند در فیلدهای فرزند  Null قرار می‌گیرد. یعنی مقایدر فروش کالاهایی که فروش نرفته اند برابر با Null قرار داده می‌شود.
Select product.Name,sum(sales.orderqty)
From production.product product
Left Join sales.salesorderDetail sales on product.Id=sales.productId
Group by product.Name
  • Right Outer Join: از جدول فرزند همه رکوردها حتی فرزندان بدون پدر و از جدول پدر فقط پدران دارای فرزند در خروجی نمایش داده می‌شوند.
  • Full Outer Join: در این نوع Join، همه رکوردها از هر دوجدول پدر و فرزند نمایش داده می‌شوند یعنی پدران بدون فرزند و فرزندان بدون پدر ظاهر خواهند شد.
  • Self Join: این نوع Join یک کلمه کلیدی نیست و در واقع یک تکنیک است که با سایر انواع Join قابل پیاده سازی است. Self Join الحاق یک جدول با خودش است به عنوان مثال جدول کارمندان که هر کارمندی می‌تواند رییس یا مدیر کارمند دیگر باشد و در واقع حالت درختی وجود دارد و بصورت Self Join این جدول با خودش در ارتباط است. یعنی ستون‌های این جدول بدین صورت است که کد کارمند، نام و کد مدیر که ستون کد کارمند با کد مدیر رابطه پدر و فرزندی دارند.
  • Cross Join: این نوع از Join با سایر انواع Join متفاوت است و بر اساس رابطه پدر و فرزندی نیست و در اصل ایجاد حاصل ضرب بین دو جدول غیر مرتبط است.

دستور Delete در Sql

برای حذف هدفمند رکوردها از دستور delete استفاده می‌شود. یعنی با توجه به شرط مشخص می‌شود که چه رکورد یا رکوردهایی باید حذف شوند.

Delete نام جدول
Where شرط مورد نظر

برای حذف همه رکوردها می‌توان علاوه بر دستور Delete بدون اعمال شرط، از دستور Truncate هم استفاده کرد.

Delete نام جدول 
Truncate Table نام جدول

تعداد رکوردها هیچ تاثیری در زمان اجرای دستور Truncate ندارد.

فرق Truncate و Delete

با توجه به اینکه دستور Truncate ساختار جدول را کپی می‌کند و سپس جدول را تغییر نام می‌دهد و از دید برنامه نویس مخفی و یک جدول جدید ایجاد می‌کند و در اختیار برنامه نویس قرار می‌دهد و سپس در Background اقدام به حذف جدول قبل می‌کند. اگر جدول دارای ستونی به عنوان Identity (فیلدی است که بصورت خودکار مقدارش ایجاد می‌شود و بصورت دستی مقدار این ستون مشخص نخواهد شد) باشد و بر روی این جدول عمل Truncate انجام شود این ستون Identity از ابتدا مقداردهی خواهد شد بطور مثال اگر جدول دارای 1000 رکورد باشد و سپس Truncate بر روی این جدول انجام شود هنگام درج رکورد جدید، مقدار ستون Identity برابر با یک خواهد بود اما پس از انجام Delete، هنگام درج رکورد جدید مقدار این ستون برابر با 1001 خواهد شد.

دستور insert در Sql

از این دستور جهت درج رکوردهای جدول استفاده می‌شود.

Insert نام جدول  (فیلد 1, فیلد 2, … )
Values (مقدار فیلد 1, مقدار فیلد 2 , …)

دستور Insert دارای یک حالت خاص است که اصطلاحاً به آن Bulk Insert گفته می‌شود. درج همزمان چند رکورد در جدول با یک دستور است که دارای دو نوع Select into و Insert select است.

انتقال اطلاعات یک جدول به جدول دیگر

جهت انتقال اطلاعات یک جدول به جدول دیگر می توان از دو دستور زیر استفاده کرد:

  • Select into: در این حالت نباید جدول مقصد وجود داشته باشد. این دستور جدول مقصد را ایجاد و سپس رکوردها را به آن منتقل می‌کند و اکر جدول مقصد از ابتدا وجود داشته باشد خطا مشاهده می‌شود.
Select * / لیست فیلدها
Into نام جدول مقصد
From نام جدول مبدا
  • Insert Select: این دستور، جدول مقصد را نمی‌سازد و باید قبل از اجرای این دستور، جدول مقصد وجود داشته باشد و همچنین تطبیق نوع فیلدها بین جدول مقصد و مبدا باید وجود داشته باشد وگرنه خطا مشاهده می شود یعنی بطورمثال اگر نوع فیلد1  جدول مقصد برابر با Int است و مقدار فیلد 1 جدول مبدا برابر با رشته (varchar, nvarchar,…) باشد خطا رخ خواهد داد.
Insert نام جدول مقصد(فیلد 1, فیلد2, …)
Select فیلد1, فیلد2 , …
From نام جدول مبدا

تهیه نسخه پشتیبان Sql

تهیه نسخه پشتیبان و بک آپ گیری از دیتابیس یکی از مهمترین کارهایی است که باید بصورت مرتب توسط مدیران پایگاه داده انجام شود در Sql پنج نوع بک آپ گیری وجود دارد که در آموزش بک آپ گیری در Sql Server توضیح داده شده است. در آموزش بک آپ اتومات Sql Server نحوه بک آپ گیری بصورت اتومات در بازه‌های زمانی مشخص آموزش داده شده است.

دستور Restore در Sql

گاهی اوقات جهت دسترسی به اطلاعات قبلی نیاز به ریستور کردن بک آپ‌های یک دیتابیس وجود دارد که در آموزش نحوه برگرداندن بکاپ در Sql با این دستور آشنا خواهید شد.

درباره آموزش Sql Server مقدماتی تا پیشرفته

در آموزش Sql Server مقدماتی تا پیشرفته سعی شده است بصورت راحت و آسان با دستورات مهم و پرکاربرد آشنا شوید.

سرفصل های آموزش Sql Server مقدماتی تا پیشرفته

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *