/ در آموزش اس کیوال, اشتراک رایگان, پایگاه داده ها / توسط
آخرین زمان ویرایش:

آموزش جامع اس کیو ال سرور قسمت ۵

جهت مطالعه آموزش با ادامه مطلب مراجعه فرمائید.

دستور LEFT JOIN در sql

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

شکل کلی دستور left join در sql بصورت زیر است :

کد:


SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name

نکته : در بعضه می‌تواند ۶ رقم صحیح و ۴ رقم اعشار را در خود ذخیره کند..

انواع داده تاریخ  در اس کیوال  :Date types

این نوع فیلد‌ها برای نگهداری تاریخ میلادی و ساعت استفاده می‌شود و برای تاریخ شمسی کاربرد ندارد.

نوع داده شرح
datetime این نوع فیلد، ۸ بایتی است و از سال ۱۷۰۰ تا ۹۹۹۹ را با دقت هزارم ثانیه ذخیره می‌کند..
datetime2 .
smalldatetime این نوع فیلد، ۴ بایتی است و از سال ۱۹۰۰ تا ۲۰۷۹ را با دقت هزارم ثانیه ذخیره می‌کند..
date این نوع فیلد‌ها برای نگهداری تاریخ میلادی استفاده می‌شود.
time این نوع فیلد‌ها برای نگهداری ساعت استفاده می‌شود.
datetimeoffset
timestamp

انواع دیگر داده ها  در sql: Other data types

نوع داده شرح
sql_variant این نوع فیلد برای نگهداری انواع داده استفاده می‌شود و نوع آن با توجه به اولین مقداری که در آن قرار می‌گیرد تعیین خواهد شد. چون نوع و حجم فیلد مشخص نیست، لذا تنها یک اشاره‌گر ۱۶ بایتی در آن قرار گرفته و داده اصلی در فایل جداگانه نگهداری می‌شود. استفاده از این نوع فیلد، توصیه نمی‌گردد..
uniqueidentifier .این فیلد ۱۶ بایتی، به ما کدی Unique یا تک می‌دهد که به اصطلاح GUID می‌گویند. یکی از کاربردهای آن در Replication است.
xml این فیلد بیشتر برای انتقال اطلاعات و دستورات تحت web استفاده می‌شود و شامل انواع MetaData های مختلف است.
cursor این فیلد مربوط به کنترل Cursor است .
table .

 

دستور SELECT در sql

دستور SELECT در اسکیوال برای انتخاب و استخراج اطلاعات مورد نظر از یک یا چند جدول و سپس مشاهده نتایج در یک جدول موقت استفاده می شود  :

کد:


SELECT column_name(s) FROM table_name

SELECT در اینجا به مفهوم فعل است و مشخص میکند که میخواهیم اطلاعاتی را بخوانیم .

  • SELECT فهرست ستونها مشخص میکند که قصد خواندن کدام ستونها را از بانک داریم در صورتی که در این فهرست * قرار دهیم کلیه ستونهای جدول نمایش داده میشود .
  • با استفاده از کلمه FROM مشخص میکنیم که از کدام جدول یا جداول این ستونها باید انتخاب شوند .

دستور SELECT * 

دستور SELECT *  همه اطلاعات موجود در جدول را انتخاب میکند.برای انتخاب کلیه ستون های جدول  در قسمت نام ستون باید علامت * را گذاشت استفاده کرد .

کد:


SELECT * FROM table_name

نکته مهم :  برخی از برنامه نویسان بجای نوشتن تمام ستونهایی که در تهیه گزارش به آنها احتیاج دارند از * استفاده میکنند که این کار باعث بالا رفتن بار شبکه شده و کارایی سیستم را پایین می آورد لذا بهتر است بجای استفاده از * کمی بخود زحمت دهید و لیست تمامی ستونها را بطور کامل قید کنید .
دستور SELECT DISTINCT در sql

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

کد:


SELECT DISTINCT column_name(s) FROM table_name

مثال : تصور کنید یک جدول مشتری با ١٠٠٠ رکورد با ٩٠ درصد مشتری از کالیفرنیا، Query زیر کد CA را ٩٠٠٠ بار خواهد باز گرداند که اصلاً یک نتیجه مفیدی نمی باشد.

کد:


SELECT State From Customer

کلید واژه Distinct در این موقعیت شما را کمک می کند. Distinct که درست بعد از SELECT قرار می گیرد، به SQL Server دستور داده که سطرهای تکراری در نتایج را حذف نماید. بنابراین Query زیر هر کد ایالتی را فقط یک بار باز می گرداند به طور وضوح لیستی که شما جستجو می کنید.

کد:


SELECT DISTINCT State From Customer

نکته : همتای کلید واژه Distinct ، All می باشد که SQL Server را برای بازگرداندن همه سطرها آگاه می سازد خواه آن واحد باشد یا خیر. All پیش فرض دستور select است ، پس نیازی به نوشتن آن نیست.

دستور شرطی WHERE در sql

دستور Where برای اضافه کردن شرط یا شرط هایی جهت محدود کردن نتایج جستجو و یا استخراج نتایج دقیقتر برای داشتن خروجی که در ذهن ما وجود دارد استفاده می شود . این ذستور باید پس از دستور Select و تعیین ستون ها از جدول مورد نظر به کار رود .با استفاده از عملگرهای AND ، OR و پرانتز می توان چندین شرط را با هم ترکیب کرد .خروجی برنامه با شرط هایی که روی دستور داده شده است مطابقت داده خواهد شد.

کد:


Select Name , Family From Person Where IdNumber= ” 1111″

در مثال بالا نام و فامیلی اشخاصی که فیلد IdNumber آنها برابر ۱۱۱۱ باشد توسط دستور where در اسکیوال برگردانده می شوند.
عملگر های And و Or در SQL

عملگرهای And و Or برای ترکیب شرط ها در دستور Where در sql استفاده می شود .

گاهی اوقات خروجی که ما میخواهیم در اس کیوال بایستی چند شرط مختلف داشته باشد . به طور مثال افرادی را میخواهیم که سن بالای ۲۳ سال و مدرک تحصیلی بالای لیسانس داشته باشند . در این حالت بایستی هر کدام از شرط ها را جداگانه تعریف کرده و سپس آنها را با هم ترکیب کنیم .

برنامه هر کدام از شرط ها را بررسی میکند و خروجی را نمایش میدهد.

عملگر And برای اجرای دستور نیاز دارد تا تمام شرط های تعیین شده برای آن درست باشد .

 

کد:

SELECT * FROM Persons WHERE FirstName=’ Mohammad ‘ AND LastName=’ Daryabiyan ‘

عمگر Or فقط نیاز دارد که حداقل یکی از شرط ها درست باشد .

کد:


SELECT * FROM Persons WHERE FirstName=’Mohammad’ OR FirstName=’Daryabiyan’

ترکیب عملگرهای And و Or

کد:


Select * From Persons Where ( ( Grade = 16 AND Major = ‘Hard Ware’ ) OR ( Garde = 12 AND Major = ‘SoftWare’ ) ) ” ;

دستور Order By در sql

اطلاعاتی که در دستور select در اسکیوال به عنوان خروجی نمایش داده میشود ی بی نظم و یا بهتر بگوییم بدون نظم مد نظر ما است. مقادیر خروجی در ستون های جدول بر اساس مقدار هیج ستونی مرتب نمیشوند . با دستور دستور Order By میتوان اطلاعات جدول را بر اساس مقادیر یک یا چند ستون برحسب شاخص هایی مثل ترتیب حروف الفبا ، بزرگتر یا کوچکتر بودن اعداد و …مرتب کرد.

ساختار دستور Order By

کد:


SELECT column_name(s) FROM table_name ORDER BY column_name(s) [ASC|DESC]

علامات در اطراف where بدین معناست که میتوانید where را بکار نبرید. اما اگر بکار بردید حتما باید قبل از order باشد . ASC به معنای صعودی بودن (a to z)و DESC به معنای نزولی بودن است (z to a).پیش فرضش ACS است.

نکته : همچنین این نیز امکان پذیرست که مرتب سازی را بر مبنای بیش از یک ستون انجام دهید .

برای این منظور بخش مرتب سازی کد بالا بصورت زیر در میاید :

کد:


ORDER BY “column_name1” [ASC, DESC], “column_name2” [ASC, DESC]

مثال :

کد:


Select Name , Family From Person Where idnumber=”11″ Order By Family

خروجی دستور بالا ، اشخاص با شرط ذکر شده در دستور where را بر اساس نام فامیلی مرتب صعودی میکند.
دستور Group By در sql

از دستور Group By در اسکیوال برای دسته بندی یک ستون بر حسب مقادیر مشابه فیلدهای یک ستون دیگر استفاده می شود .در هنگام استفاده از برخی از توابع درون ساخته SQL که عمل محاسبه ( مثل مجموع و میانگین ) را بر روی داده ها انجام می دهند ، این مشکل وجود دارد که این توابع قادر به جدا کردن و متمایز کردن اطلاعات موجود در دو ستون نسبت به هم نیستند و نتایج محاسبات را به صورت کلی برای همه آنها در نظر می گیرند . در این مواقع از دستور Group By استفاده میکنیم .

ساختار این دستور به صورت زیر است :

 

کد:

SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name

دستور Group By در sql وقتی استفاده میشود که ما در حال انتخاب چند ستون هستیم و حداقل یک عملگر محاسباتی در دستور select داریم . در این زمان ما باید تمام ستونهای دیگر را گروه کنیم.

مثال : در مثال زیر مجموع نمرات هر دانش آموز را بصورت گروه بندی شده بر اساس فیلد نام دانش آموز به خروجی داده می شود :

 

کد:

Select Name ,Sum ( Grade ) As مجموع نمرات From Class Group By Name ;

نکته : دستور group by در اسکیوال از جمله ی پرکاربردترین دستورات است که یادگیری کامل این دستور ، میتواند تفاوت اسکریپت نویسی حرفه ای در sql باشد.
دستور شرطی Having در sql

دستور Having در اسکیوال برای افزودن شرط به توابع درون ساخته SQL استفاده می شود ، زیرا از دستور Where نمی توان برای کار با مقادیر خروجی توابع درون ساخته SQL استفاده کرد . به عبارت دیگر دستور Having در sql برای اعمال شرط به ستون ها اعمال می شود و همان کاری را می کند که Where در رکوردها انجام می دهد . دستور Having معمولا با دستور Group By می آید .

ساختار دستور شرطی Having در sql به صورت زیر است :

 

کد:

SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value

مثال : در مثال زیر همچون مثال بخش دستور group by عمل شده ، با این تفاوت که بعد از گروه بندی بر اساس نام دانش آموزان و دادن خروجی جمع نمرات آنها ، خروجی شامل دانش آموزانی است که مجموع نمرات آنها بالاتر از ۲۵ باشد :

 

کد:

جمع نمره Select Name , Sum ( Grade ) As مجموع نمرات From Students Group By Name Having Sum ( Grade ) > 25 Order By Family

نکته مثال : در مثال بالا به جای having نمیتوان از where استفاده کرد و برای اعمال شرط بر روی فیلدهای محاسباتی آمده در دستور group by باید از جمله شرطی having استفاده کرد.

نوشته های مشابه

آموزش جامع اس کیو ال سرور قسمت ۴

جهت مطالعه آموزش با ادامه مطلب مراجعه فرمائید. (بیشتر…)

آموزش جامع اس کیو ال سرور قسمت ۶

جهت مطالعه آموزش با ادامه مطلب مراجعه فرمائید. (بیشتر…)

 کانال تلگرام داده باران شارژ آنلاین

نظری بدهید

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