دستور SELECT در SQL Server

دستور SELECT در SQL Server

نوشته شده توسط: تیم فنی نیک آموز
۱۷ دی ۱۴۰۲
زمان مطالعه: 10 دقیقه
۴.۴
(۷)

دستور Select در SQL Server کاربردهای متنوعی دارد و شما می‌توانید آن را در انواع کوئری‌های زبان T-SQL به کار ببرید. این دستور به‌عنوان یکی از اجزای کلیدی در اسکریپت‌نویسی و به هدف استخراج داده‌ها مورد استفاده قرار می‌گیرد. در این مقاله، دستور SELECT و کاربردهای آن به‌همراه مثال‌های قابل درک شرح داده می‌شوند؛ به طوری که پس از مطالعه آن، با ضرورت و اهمیت Select آشنا خواهید شد.

دوره کوئری نویسی در SQL Server نیک آموز

زبان SQL چیست و چه تفاوتی با T-SQL دارد؟

زبان اسکریپت نویسی SQL یک زبان کوئری‌نویسی ساختاریافته است که به منظور مدیریت و دستکاری در پایگاه داده رابطه‌ ای (RDBMS) طراحی شده است. این زبان، با ارائه یک راه استانداردشده در اموری همچون تعامل با پایگاه داده، اجرای کوئری‌ها، به‌روزرسانی رکوردها، درج داده‌های جدید و مدیریت ساختار خود دیتابیس مورد استفاده قرار می‌گیرد. در حال حاضر، SQL به‌صورت گسترده در انواع حوزه‌های صنعت و آکادمیک به کار می‌رود و اغلب سیستم‌های مدیریت پایگاه داده (DBMS) از آن پشتیبانی می‌کنند.

زبان T-SQL نسخه تعمیم‌یافته SQL محسوب می‌شود که توسط شرکت مایکروسافت پیاده‌سازی شده است. T-SQL به طور خاص با Microsoft SQL Server کار می‌کند و در آن، قابلیت‌های توسعه‌یافته‌ای مانند استور پروسیجر (Stored Procedures)، توابع تعریف‌شده توسط کاربر (User-Defined)، Trigger ها و… افزوده شده است.

دستور SELECT در SQL Server چیست؟

SQL Server به‌عنوان یک سیستم مدیریت پایگاه داده قدرتمند، امکانات و قابلیت‌‌های گوناگونی در اختیار توسعه‌دهنده و مدیر پایگاه داده (DBA) قرار می‌دهد. دستور Select در SQL Server یکی از اصلی‌ترین دستورات SQL Server به شمار می‌رود که به واسطه آن، امکان استخراج داده‌ها وجود دارد؛ به طوری که گاهاً به این دستور، تحت عنوان سنگ بنای کوئری‌نویسی و استخراج داده‌ها از پایگاه‌های داده SQL Server اشاره می‌شود. در بخش بعدی، به موارد استفاده دستور Select پرداخته خواهد شد تا نقش آن در کوئری‌نویسی شفاف‌تر شود.

 

دستور SELECT در SQL Server چیست؟

 

کاربرد Select در SQL Server

در ادامه، متداول‌ترین موارد استفاده Select در SQL Server شرح داده می‌شوند.

۱- استخراج داده

اصلی‌ترین کاربرد دستور Select در SQL Server ، استخراج داده‌ها از یک یا چند جدول پایگاه داده است. این عمل، واکشی یک یا چند ستون خاص از جدول را شامل می‌شود. به‌عنوان مثال، فرض کنید قصد دارید نام و نام خانوادگی کارکنان سازمان را از جدول مربوط به آن‌ها (Employee) استخراج کنید. در چنین شرایطی، باید دستور Select را به صورت زیر اجرا کنید:

 

SELECT FirstName, LastName FROM Employees;

 

استخراج داده

 

۲- فیلترینگ داده ها با Where

شما می‌توانید با استفاده از WHERE در SQL Server ، سطرها را براساس شرایط خاصی فیلتر کنید. به این ترتیب، این امکان فراهم می‌شود که زیرمجموعه‌ای از داده‌های جدول استخراج شوند. برای درک بهتر، به مثال زیر توجه کنید.

فرض کنید می‌خواهیم تنها قیمت و نام محصولاتی را از جدول محصول استخراج کنیم که CategoryID آن‌ها برابر با ۲ باشد. در چنین شرایطی، لازم است دستور Select به همراه شرط زیر به کار رود:

 

SELECT ProductName, UnitPrice, CategoryID FROM Products WHERE CategoryID = 2;

 

فیلترینگ داده ها با Where

 

۳- مرتب سازی نتایج با Order By

در برخی مواقع، شرایط حکم می‌کند که نتایج حاصل از اجرای یک کوئری را مرتب‌سازی (Sort) کنید. برای این کار، کافی‌ست دستور Select به‌همراه Order By استفاده شود. مرتب‌سازی نتایج در مواقعی مناسب است که بخواهید داده‌ها در یک ترتیب خاص، صعودی (Ascending) یا نزولی (Descending)، نمایش داده شوند. برای مثال، در ادامه قصد داریم نام محصولات و قیمت آن‌ها را به‌صورت نزولی نمایش دهیم:

 

SELECT ProductName, UnitPrice, CategoryID FROM Products ORDER BY UnitPrice DESC;

 

مرتب سازی نتایج با Order By

 

۴- حذف سطرهای تکراری با Distinct

به واسطه کلمه کلیدی Distinct و دستور Select در SQL Server می‌توان سطرهای تکراری را از نتیجه حذف کرد و یک لیست یکتا از مقادیر به‌دست آورد. با اجرای دستور زیر، CategoryID های منحصربه‌فرد از جدول محصولات (Products) استخراج می‌شوند.

 

SELECT DISTINCT CategoryID FROM Products;

 

حذف سطرهای تکراری با Distinct

 

برای درک بهتر این Use-Case دستور Select، پیشنهاد می‌شود مقاله دستور Select Distinct در SQL نیز مطالعه شود.

۵- استفاده از دستور Select به همراه توابع تجمیعی

با کمک Group By و دستور Select ، می‌توان سطرها را براساس یک یا چند ستون خاص، گروه‌بندی کرد. معمولاً در این موردِ استفاده دستور Select، توابع تجمیعی (Aggregation Functions) مانند COUNT ،SUM ،AVG و… به همراه Group By به کار می‌روند. برای درک بهتر، به دستور زیر توجه کنید.

 

SELECT CategoryID, AVG(UnitPrice) AS AvgUnitPrice FROM Products GROUP BY CategoryID;

 

استفاده از دستور Select به همراه توابع تجمیعی

 

با اجرای مثال فوق، نتیجه این کوئری در قالب دو ستون CategoryID و AvgUnitPrice نمایش داده می‌شود؛ به طوری که هر سطر، نمایان‌گر یک Category خاص باشد و در ستون AvgUnitPrice مرتبط به آن، میانگین قیمت محصولات آن Category نمایش داده شود.

۶- پیاده سازی Join روی جداول

دستور Select به شما این اجازه را می‌دهد که چندین جدول پایگاه داده را Join کنید. درواقع، زمانی که شما بخواهید داده‌هایی از دو یا چند جدول پایگاه داده رابطه‌ای را با یکدیگر ترکیب کنید، لازم است دستور Select را به‌همراه کلاز Join استفاده کنید. برای درک بهتر عملیات Join و کاربرد دستور Select ، به مثال زیر توجه کنید:

 

SELECT 
  Orders.OrderID, 
  Customers.CompanyName, 
  Orders.OrderDate
FROM Orders
JOIN Customers ON 
  Orders.CustomerID = Customers.CustomerID;

 

پیاده سازی Join روی جداول

 

۷- زیر کوئری (SubQuery) برای شرط های پیچیده

با به‌کارگیری Subquery ها درون دستور Select ، امکان رسیدگی به شرط‌های پیچیده و استخراج داده‌ها برمبنای نتایج حاصل از یک کوئری دیگر وجود دارد. فرض کنید بخواهیم نام شرکت مشتریانی را استخراج کنیم که در تاریخ ‘۱۹۹۶-۱۰-۳۰’ ثبت سفارش انجام داده‌اند. برای این کار، لازم است دستور Select به‌صورت زیر مورد استفاده قرار بگیرد.

 

SELECT 
  CompanyName
FROM Customers
WHERE CustomerID IN (SELECT CustomerID FROM Orders WHERE OrderDate = '1996-10-30');

 

زیر کوئری (SubQuery) برای شرط های پیچیده

 

۸- عملگرهای SET

شما می‌توانید با استفاده از عملگرهای SET، شامل UNION ،INTERSECT و EXCEPT، در یک دستور Select، نتایج حاصل از اجرای چند کوئری را ترکیب یا مقایسه کنید. برای مثال، نحوه استفاده از عملگر UNION به‌همراه دستور Select به شکل زیر است:

 

SELECT ProductID AS RecID, ProductName AS RecTitle,'Products' AS RecType FROM Products
UNION
SELECT EmployeeID AS RecID, LastName  AS RecTitle ,'Employees' AS RecType FROM Employees

 

عملگرهای SET

 

با اجرای کوئری فوق، نتایج حاصل از دو کوئری مختلف در قالب یک نتیجه، ترکیب و نمایش داده می‌شوند.

۹- استفاده از Window Function ها برای کوئری نویسی تحلیلی

به واسطه استفاده از Window Function ها در دستور Select ، می‌توان محاسبات را روی بازه خاصی از ستون‌های مرتبط با ستون فعلی انجام داد. در مثال زیر، با کمک ()AVG و کلاز OVER، میانگین قیمت هر Category از محصول محاسبه می‌شود.

 

SELECT 
  ProductID, UnitPrice, 
  AVG(UnitPrice) OVER (PARTITION BY CategoryID) AS AvgUnitPriceInCategory
FROM Products;

 

استفاده از Window Function ها برای کوئری نویسی تحلیلی

 

۱۰- منطق شرطی و استفاده از عبارت Case When

شما می‌توانید با بهره‌مندی از عبارت CASE WHEN در دستور Select ، منطق شرطی را معرفی کرده و خروجی را براساس شرایط خاصی شخص‌سازی کنید. در مثال زیر، از CASE به منظور طبقه‌بندی محصولات براساس قیمت آن‌ها استفاده خواهد شد:

 

SELECT 
  ProductName, 
    CASE 
        WHEN UnitPrice > 100 THEN 'Expensive'
        ELSE 'Affordable'
    END AS PriceCategory
FROM Products;

 

منطق شرطی و استفاده از عبارت Case When

 

علاوه‌بر این، مقاله استفاده از عبارت Case در SQL Server می‌تواند برای شما به‌عنوان مطلب مکمل مفید باشد.

۱۱- اعمال محدودیت روی سطرها با TOP

شما می‌توانید با کمک کلید واژه TOP در دستور Select ، هر تعداد خاصی از ستون‌ها را از ابتدای مجموعه جواب استخراج کنید. به‌عنوان مثال، با اجرای کوئری زیر، «۱۰ محصول بالایی» از جدول Products، به همراه نام و قیمت آن‌ها استخراج شده و براساس هزینه، به‌صورت نزولی (DESC) مرتب‌سازی می‌شوند و درنهایت، در خروجی نشان داده خواهند شد.

 

SELECT TOP 10 
  ProductName, UnitPrice
FROM Products
ORDER BY UnitPrice DESC;

 

اعمال محدودیت روی سطرها با TOP

 

۱۲- Pivot و Unpivot داده ها

Pivot و Unpivot در SQL Server دو عملگری به شمار می‌روند که برای تبدیل داده‌ها به فرمت‌های ستونی و سطری استفاده می‌شوند. در کوئری زیر، از Pivot در دستور Select استفاده شده است و به کمک آن، تعداد رخداد هر CategoryID برای هر محصول شمرده می‌شود.

 

SELECT 
  *
FROM (SELECT ProductName, CategoryID FROM Products) AS SourceTable
PIVOT
(
    COUNT(CategoryID)
    FOR CategoryID IN ([1], [2], [3] , [4])
) AS PivotTable;

 

Pivot و Unpivot داده ها

 

پیشنهاد می‌شود مقاله PIVOT و UNPIVOT در SQL Server – قسمت اول را نیز مطالعه کنید تا درک بهتری از آن به‌دست آورید.

۱۳- استفاده از دستور Select در Insert Into

شما می‌توانید دستور Select را به‌صورتی ترکیبی با دستور Insert Into به کار ببرید. با این کار، براساس کوئری خاصی، داده‌ها به جدول مورد نظر درج می‌شوند. معمولاً به این عبارت، تحت عنوان INSERT INTO SELECT نیز اشاره می‌شود. برای درک بهتر، به مثال‌های زیر توجه کنید.

 

INSERT INTO NewEmployees
SELECT * FROM Employees;

 

با اجرای کوئری فوق، تمام ستون‌های جدول Employees به جدول NewEmployees درج می‌شوند. این موضوع، در مواقعی مناسب است که بخواهید داده‌ها را از یک جدول به جدول دیگر کپی کنید.

در مثال زیر، تنها ستون‌های مشخصی به جدول SalesEmployes درج می‌شوند که شرط جلوی کلمه WHERE برای آن‌ها صدق کند.

 

INSERT INTO SalesEmployees (EmployeeID, FirstName, LastName)
SELECT 
EmployeeID, FirstName, LastName
FROM Employees
WHERE Department = 'Sales';

 

۱۴- استفاده از دستور Select به همراه کلاز Having

در SQL Server می‌توان Having را به‌همراه دستور Select استفاده کرد تا بدین طریق، نتایج حاصل از کوئری را براساس مقادیر تجمیعی فیلتر کرد. توجه کنید که با به‌کارگیری Where، پیش از گروه‌بندی و تجمیع سطرها، فرآیند فیلترکردن سطرها انجام می‌شود؛ در حالی که با استفاده از Having، فرآیند فیلترینگِ نتایج پس از گروه‌بندی و تجمیع آن‌ها اعمال خواهد شد. به منظور درک بهتر، به کوئری زیر توجه کنید:

 

SELECT 
  CustomerID, SUM(Freight) as TotalFreight
FROM orders
GROUP BY CustomerID
HAVING SUM(Freight)>300;

 

استفاده از دستور Select به همراه کلاز Having

 

در مثال فوق، لیست مقادیر CustomerID ها به‌همراه «مجموعه مقدار هزینه حمل» بازگردانده می‌شوند؛ البته در صورتی که مجموعه هزینه حمل آن‌ها بزرگ‌تر از ۳۰۰ باشد.

نکته حائز اهمیت این است که Having با توابع تجمیعی به کار می‌رود و پس از اعمال Group By اعمال خواهد شد.

۱۵- Index Optimizer Hint در SQL Server

شما می‌توانید با استفاده از Optimizer Hint خاصی که INDEX نام دارد، یک ایندکس مشخص برای بهینه‌ساز کوئری پیشنهاد کنید. INDEX Hint به شما این امکان را می‌دهد که انتخاب پیش‌فرض بهینه‌ساز را برای یک کوئری مشخص، نادیده بگیرید. در مثال زیر، با به‌کارگیری WITH(INDEX(CustomerID)) به عنوان Hint، بهینه‌سازی متوجه خواهد شد که شما یک ایندکس خاص برای کوئری پیشنهاد کرده‌اید.

 

SELECT 
  *
FROM Orders WITH(INDEX(CustomerID))
WHERE CustomerID = 123;

 

Index Optimizer Hint در SQL Server

 

در این بخش، مهم‌ترین کاربردهای دستور Select در SQL Server مورد بررسی قرار گرفتند. با توجه به نقش کلیدی Select، بدیهی است که امکان استفاده از آن در انواع اسکریپت های SQL Server وجود دارد.

کلام آخر: دستور Select در SQL Server

دستور Select در SQL Server به‌عنوان یکی از عبارات پایه و متداول کوئری‌نویسی شناخته شده است. به واسطه این دستور، می‌توانید اموری همچون استخراج داده‌ها، فیلترینگ داده‌ها، پیاده‌سازی جوین روی جداول، حذف مقادیر تکراری، استفاده از Subquery ها و سایر موارد را انجام داد. در این مطلب، پراهمیت‌ترین Use Case های دستور Select در SQL Server به‌همراه مثال‌های کاربردی شرح داده شدند و در مقالات آتی، نحوه استفاده از سایر کوئری‌های T-SQL آموزش داده خواهند شد.

چه رتبه ای می‌دهید؟

میانگین ۴.۴ / ۵. از مجموع ۷

اولین نفر باش

title sign
برچسب ها
title sign
دانلود مقاله
دستور SELECT در SQL Server
فرمت PDF
12 صفحه
حجم 0/6 مگابایت
دانلود مقاله
title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
239 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
پروفایل نویسنده
title sign
دیدگاه کاربران