سایر توابع و Command های مهم در T-SQL
دستور Union :
دو دسته دیتا که ساختار کاملا یکسانی را دارند به متصل میکنند.
منظور از ساختار کاملا یکسان این است که تعداد ستون ها ، نام ستون ها و دیتاتایپ ستون ها در هر دو دسته کاملا یکسان هستند.
* داخل Power BI دستور Union نداریم و به جای آن از گزینه Append استفاده میکنیم.
نحوه نگارش کوئری Union به شرح زیر است :
اگر دستور Union را استفاده کنیم ، رکورد ها را به صورت Distinct در خروجی خواهیم دید و اگر ردیف های تکراری داشته باشیم ، در Union ظاهر نخواهند شد ، برای جلوگیری از این موضوع ، میتوانیم از Union All استفاده کنیم که ردیف های Duplicate را حذف نمیکند.
Group By :
یکی از کاربردی ترین کامند ها که در DAX و Power Bi نیز آن را داریم ، GROUP BY میباشد.
فرض کنید میخواهیم ببینیم هر مشتری مجموعا چه میزان از ما خرید کرده است ، یعنی نیاز به یک گروه بندی در انجام محاسبات داریم ، اینجا از Group By کمک میگیریم.
توجه کنید که ترتیب نوشتن در کامند های سیکوئل مهم میباشد و باید از ترتیب Where ، Group By و سپس Order By باید پیروی کنیم.
نحوه نوشتن کوئری GROUP BY به شکل زیر است :
میبینید که به کمک این دستور توانستیم محاسبه کنیم که هر مشتری به چه میزان از ما خرید کرده است.
دستور Having :
این دستور به ما کمک میکند بر روی Aggregation یا روی گروه بندی ای که داریم انجام میدیم ، یک شرط لحاظ کنیم. با توجه به توضیحات این کامند بعد از GROUP BY استفاده میشود.
SELECT COUNT(Productkey) AS Qnt , Color
FROM DimProduct
GROUP BY Color
HAVING COUNT(Productkey) < 10
لازم به ذکر است که WHERE روی مقادیر جمع بندی نشده کماکان کار میکند ، ولی اگر روی ستونی که بر روی آن توابع Aggregate یا تجمعی نظیر SUM ، AVG ، MIN یا MAX داریم بخواهیم شرط گذاری کنیم باید از HAVING استفاده کنیم.
دستور SELECT INTO :
به کمک این دستور میتوانیم دیتا را از یک جدول داخل یک جدول جدید که وجود ندارد بریزیم ، یعنی به صورت همزمان هم ساخت جدول و هم انتقال دیتا به آن جدول جدید را انجام میدهد.
برای مثال در کوئری بالا جدول RedProduct را ساخته و دیتای مد نظر را به آن منتقل کرده است.
اگر بخواهیم دیتا را داخل یک جدولی که وجود دارد بریزیم باید از دستور INSERT INTO استفاده کنیم.
دستور SELECT INTO همانند این است که بخواهیم یک backup از جدول مورد نظرمان بگیریم.
* اگر بخواهیم فقط Structure و ساختار یک جدول را بکاپ بگیریم بدون لحاظ کردن دیتاهای داخلش ، میتوانیم از SELECT INTO به همراه یک شرط غلط استفاده کنیم.
SELECT * INTO NewTable
FROM OldTable
WHERE 1=0
دستور CASE :
اگر بخواهیم داخل SELECT ، شرط گذاری کنیم ، میتوان از CASE استفاده کرد.
فرض کنید میخواهیم بر مبنای مقادیر فیلد Gender ، که دارای M و F است ، اگر مقدار F بود خانم و اگر M بود آقا در ستون جدیدی به نام Jensiat لحاظ شود.
نحوه نوشتن کوئری مربوط به CASE به این شکل است :
دستور ISNULL() :
در مواجهه با مقادیر Null ممکن است با مشکلاتی رو به رو شویم و نیاز به Replace کردن Null ها با مقدار دیگری داشته باشیم. در اینجا میتوانیم از تابع ISNULL() استفاده کنیم ، در ورودی اول این تابع نام ستون و در ورودی دوم ، مقداری که میخواهیم مقادیر Null را با آن جایگزین کنیم میگذاریم.
وجود Schema در دیتابیس مزایایی دارد که از جمله آنها میتوان دسترسی آسان تر به جدول های مورد نظر اشاره کرد. برای مثال اگر کاربر نیاز به جدولی از واحد فروش داشته باشد ، میتواند تنها در میان جدول هایی جستجو کند که دارای شِمای Sale هستند.
همچنین وجود Schema یا اسکیما از لحاظ امنیتی مفید است و ادمین دیتابیس میتواند یوزر ها را محدود کند که فقط به جدول ها و اطلاعات یک سری از شِما ها دسترسی داشته باشند.