خانه SQL Server دستور SELECT در SQL Server SQL Server دستورات SQL نوشته شده توسط: تیم فنی نیک آموز تاریخ انتشار: ۱۷ دی ۱۴۰۲ آخرین بروزرسانی: ۲۰ دی ۱۴۰۲ زمان مطالعه: 10 دقیقه ۴.۴ (۷) دستور Select در SQL Server کاربردهای متنوعی دارد و شما میتوانید آن را در انواع کوئریهای زبان T-SQL به کار ببرید. این دستور بهعنوان یکی از اجزای کلیدی در اسکریپتنویسی و به هدف استخراج دادهها مورد استفاده قرار میگیرد. در این مقاله، دستور SELECT و کاربردهای آن بههمراه مثالهای قابل درک شرح داده میشوند؛ به طوری که پس از مطالعه آن، با ضرورت و اهمیت Select آشنا خواهید شد. زبان 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 ، استخراج دادهها از یک یا چند جدول پایگاه داده است. این عمل، واکشی یک یا چند ستون خاص از جدول را شامل میشود. بهعنوان مثال، فرض کنید قصد دارید نام و نام خانوادگی کارکنان سازمان را از جدول مربوط به آنها (Employee) استخراج کنید. در چنین شرایطی، باید دستور Select را به صورت زیر اجرا کنید: SELECT FirstName, LastName FROM Employees; ۲- فیلترینگ داده ها با Where شما میتوانید با استفاده از WHERE در SQL Server ، سطرها را براساس شرایط خاصی فیلتر کنید. به این ترتیب، این امکان فراهم میشود که زیرمجموعهای از دادههای جدول استخراج شوند. برای درک بهتر، به مثال زیر توجه کنید. فرض کنید میخواهیم تنها قیمت و نام محصولاتی را از جدول محصول استخراج کنیم که CategoryID آنها برابر با ۲ باشد. در چنین شرایطی، لازم است دستور Select به همراه شرط زیر به کار رود: SELECT ProductName, UnitPrice, CategoryID FROM Products WHERE CategoryID = 2; ۳- مرتب سازی نتایج با Order By در برخی مواقع، شرایط حکم میکند که نتایج حاصل از اجرای یک کوئری را مرتبسازی (Sort) کنید. برای این کار، کافیست دستور Select بههمراه Order By استفاده شود. مرتبسازی نتایج در مواقعی مناسب است که بخواهید دادهها در یک ترتیب خاص، صعودی (Ascending) یا نزولی (Descending)، نمایش داده شوند. برای مثال، در ادامه قصد داریم نام محصولات و قیمت آنها را بهصورت نزولی نمایش دهیم: SELECT ProductName, UnitPrice, CategoryID FROM Products ORDER BY UnitPrice DESC; ۴- حذف سطرهای تکراری با Distinct به واسطه کلمه کلیدی Distinct و دستور Select در SQL Server میتوان سطرهای تکراری را از نتیجه حذف کرد و یک لیست یکتا از مقادیر بهدست آورد. با اجرای دستور زیر، CategoryID های منحصربهفرد از جدول محصولات (Products) استخراج میشوند. SELECT DISTINCT CategoryID FROM Products; برای درک بهتر این 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; با اجرای مثال فوق، نتیجه این کوئری در قالب دو ستون 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; ۷- زیر کوئری (SubQuery) برای شرط های پیچیده با بهکارگیری Subquery ها درون دستور Select ، امکان رسیدگی به شرطهای پیچیده و استخراج دادهها برمبنای نتایج حاصل از یک کوئری دیگر وجود دارد. فرض کنید بخواهیم نام شرکت مشتریانی را استخراج کنیم که در تاریخ ‘۱۹۹۶-۱۰-۳۰’ ثبت سفارش انجام دادهاند. برای این کار، لازم است دستور Select بهصورت زیر مورد استفاده قرار بگیرد. SELECT CompanyName FROM Customers WHERE CustomerID IN (SELECT CustomerID FROM Orders WHERE OrderDate = '1996-10-30'); ۸- عملگرهای 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 با اجرای کوئری فوق، نتایج حاصل از دو کوئری مختلف در قالب یک نتیجه، ترکیب و نمایش داده میشوند. ۹- استفاده از Window Function ها برای کوئری نویسی تحلیلی به واسطه استفاده از Window Function ها در دستور Select ، میتوان محاسبات را روی بازه خاصی از ستونهای مرتبط با ستون فعلی انجام داد. در مثال زیر، با کمک ()AVG و کلاز OVER، میانگین قیمت هر Category از محصول محاسبه میشود. SELECT ProductID, UnitPrice, AVG(UnitPrice) OVER (PARTITION BY CategoryID) AS AvgUnitPriceInCategory FROM Products; ۱۰- منطق شرطی و استفاده از عبارت Case When شما میتوانید با بهرهمندی از عبارت CASE WHEN در دستور Select ، منطق شرطی را معرفی کرده و خروجی را براساس شرایط خاصی شخصسازی کنید. در مثال زیر، از CASE به منظور طبقهبندی محصولات براساس قیمت آنها استفاده خواهد شد: SELECT ProductName, CASE WHEN UnitPrice > 100 THEN 'Expensive' ELSE 'Affordable' END AS PriceCategory FROM Products; علاوهبر این، مقاله استفاده از عبارت Case در SQL Server میتواند برای شما بهعنوان مطلب مکمل مفید باشد. ۱۱- اعمال محدودیت روی سطرها با TOP شما میتوانید با کمک کلید واژه TOP در دستور Select ، هر تعداد خاصی از ستونها را از ابتدای مجموعه جواب استخراج کنید. بهعنوان مثال، با اجرای کوئری زیر، «۱۰ محصول بالایی» از جدول Products، به همراه نام و قیمت آنها استخراج شده و براساس هزینه، بهصورت نزولی (DESC) مرتبسازی میشوند و درنهایت، در خروجی نشان داده خواهند شد. SELECT TOP 10 ProductName, UnitPrice FROM Products ORDER BY UnitPrice DESC; ۱۲- 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 در 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; در مثال فوق، لیست مقادیر 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; در این بخش، مهمترین کاربردهای دستور Select در SQL Server مورد بررسی قرار گرفتند. با توجه به نقش کلیدی Select، بدیهی است که امکان استفاده از آن در انواع اسکریپت های SQL Server وجود دارد. کلام آخر: دستور Select در SQL Server دستور Select در SQL Server بهعنوان یکی از عبارات پایه و متداول کوئرینویسی شناخته شده است. به واسطه این دستور، میتوانید اموری همچون استخراج دادهها، فیلترینگ دادهها، پیادهسازی جوین روی جداول، حذف مقادیر تکراری، استفاده از Subquery ها و سایر موارد را انجام داد. در این مطلب، پراهمیتترین Use Case های دستور Select در SQL Server بههمراه مثالهای کاربردی شرح داده شدند و در مقالات آتی، نحوه استفاده از سایر کوئریهای T-SQL آموزش داده خواهند شد. چه رتبه ای میدهید؟ میانگین ۴.۴ / ۵. از مجموع ۷ اولین نفر باش دانلود مقاله دستور SELECT در SQL Server فرمت PDF 12 صفحه حجم 0/6 مگابایت دانلود مقاله معرفی نویسنده مقالات 402 مقاله توسط این نویسنده محصولات 0 دوره توسط این نویسنده تیم فنی نیک آموز معرفی محصول ایمان باقری دوره آموزشی کوئری نویسی در SQL Server 2.190.000 تومان مقالات مرتبط ۰۲ آبان SQL Server ابزار Database Engine Tuning Advisor؛ مزایا، کاربردها و روش استفاده تیم فنی نیک آموز ۱۵ مهر SQL Server معرفی Performance Monitor ابزار مانیتورینگ SQL Server تیم فنی نیک آموز ۱۱ مهر SQL Server راهنمای جامع مانیتورینگ بکاپ ها در SQL Server تیم فنی نیک آموز ۰۸ مهر SQL Server Resource Governor چیست؟ آشنایی با نحوه پیکربندی و اهمیت های آن تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ