مشاوره و آموزش تحصیلی ریسمونک
0

دستور SELECT در SQL چگونه است ؟

زبان «پرس‌ و جوی ساختاریافته» (Structured Query Language) یا به اختصار، زبان SQL، به عنوان یکی از مهم‌ترین و محبوب‌ترین زبان‌ها به حساب می‌آید که از آن برای انجام عملیات مختلف بر روی داده‌های ذخیره شده در پایگاه‌های داده استفاده می‌شود. این زبان، دارای دستورات مختلفی برای کار با داده‌ها است که دستور SELECT در SQL‌ به عنوان یکی از پرکاربردترین آن‌ها شناخته می‌شود. این دستور برای بازیابی اطلاعات مختلف از جداول موجود در پایگاه داده کاربرد دارد. در مطلب حاضر، پس از ارائه توضیح مختصری پیرامون پایگاه داده و جزء اصلی آن، یعنی جدول، و شرح مختصری از رایج‌ترین دستورات زبان SQL، به روش‌های مختلف استخراج اطلاعات از جدول‌ها با استفاده از دستور SELECT در SQL‌ پرداخته می‌شود.

 

 

 

همچنین در ریسمونک بخوانید:

دستور Goto در پایتون

پایگاه داده چیست ؟

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

  • Oracle
  • MySQL
  • PostgreSQL
  • MS SQL Server
  • SQLite

یکی از انواع پایگاه‌های داده، «پایگاه داده رابطه‌ای» (Relational Database) است. در این نوع پایگاه داده، داده‌هایی که به هم مرتبط هستند، در جداول مختلف ذخیره می‌شوند و بر اساس داده‌های مشترک جداول، رابطه‌ای میان جداول پایگاه داده وجود دارد.

جدول در پایگاه داده چیست ؟

جداول به عنوان اشیای پایگاه داده تلقی می‌شوند که داده‌ها را به‌صورت ساختاریافته در خود ذخیره می‌کنند. هر جدول شامل تعدادی سطر و ستون است. به هر سطر جدول، «رکورد» (Record) گفته می‌شود که اطلاعات منحصربفرد یک «موجودیت» (Entity) را دربر می‌گیرد. هر یک از ستون‌های جداول نیز ویژگی‌های تعریف شده را برای هر سطر نشان می‌دهند. به عنوان مثال، جدول اطلاعات دانش‌آموزان، نمونه‌ای از جدول در پایگاه داده است.

جدول اطلاعات دانش‌آموزان در SQL
مثالی از جدول اطلاعات دانش‌آموزان در SQL

در جدول فوق، هر سطر مربوط به اطلاعات یک موجودیت است (در این مثال منظور از موجودیت‌ها، دانش‌آموزان هستند) و ستون‌های جدول، ویژگی‌های موجودیت را نشان می‌دهند. در پایگاه‌ داده، مفهوم دیگری به نام «کلید» (Key) نیز وجود دارد که در هنگام ساخت جدول باید انواع کلیدها مشخص شوند. در پایگاه‌های داده رابطه‌ای، معمولاً یک ستون از جدول را به مقادیر منحصربه‌فردی اختصاص می‌دهند که با آن بتوان به هر یک از سطرها دسترسی داشت و به آن ستون، «کلید اصلی» (Primary Key) گفته می‌شود. به عبارتی، مقادیر این ستون، غیرتکراری هستند و به منظور ایجاد ارتباط بین جدول‌های مختلف در پایگاه داده، از مقادیر این ستون‌ها استفاده می‌شود. در جدول بالا، ستون stud_id می‌تواند به عنوان کلید اصلی جدول Students محسوب شود.

فرض کنید علاوه‌بر جدول Students، جدول دیگری با نام Departments وجود دارد که اطلاعات دانشکده‌ها و دانش‌آموزان هر دانشکده را ذخیره می‌کند. در این جدول، ستونی با نام stud_id نیز تعریف شده است که مقادیر آن با توجه به مقادیر ستون stud_id جدول Students مقداردهی می‌شود. در این حالت، ستون stud_id در جدول Departments به عنوان «کلید خارجی» (Foreign key) به حساب می‌آید و ارتباط این دو جدول با استفاده از کلید اصلی (در جدول Students) و کلید خارجی (در جدول Departments) برقرار می‌شود.

جدول اطلاعات دانشکده‌ها در SQL
مثالی از جدول اطلاعات دانشکده‌ها در SQL

به منظور دسترسی به داده‌های جداول و اعمال عملیات مختلف بر روی آن‌ها، از «زبان پرس و جوی | ساختاریافته» (Structured Query Language | SQL) استفاده می‌شود. در بخش بعدی، به طور مختصر به معرفی این زبان خواهیم پرداخت.

زبان SQL‌ چیست و مهم‌ترین دستورات آن چه هستند؟

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

مهم ترین دستورات SQL کدامند؟

زبان SQL دارای ۴ دستور مهم و کاربردی برای اعمال تغییرات و بازیابی اطلاعات از جداول موجود در پایگاه داده است که در ادامه به آن‌ها اشاره می‌شود:

  • دستور SELECT در SQL: از این دستور می‌توان برای بازیابی اطلاعات از جداول موجود در پایگاه داده استفاده کرد.
  • دستور INSERT در SQL: از این دستور به منظور درج سطر جدید در جدول استفاده می‌شود.
  • دستور UPDATE در SQL: این دستور را می‌توان برای ویرایش اطلاعات موجود در جدول استفاده کرد.
  • دستور DELETE در SQL: این دستور را برای حذف سطری از جدول می‌توان به کار برد.

پیش از این مطلبی در مجله ریسمونک برای گزاره‌های Insert ،Update و Delete در SQL منتشر شده است که برای یادگیری این دستورات می‌توان آن را مطالعه کرد. از میان دستورات فوق، دستور SELECT در SQL به عنوان پرکاربردترین دستور این زبان شناخته می‌شود که می‌توان با استفاده از آن، اطلاعات یک یا بیش از یک جدول را با نوستن دستورات ساده تا پیچیده بازیابی کرد. در ادامه مطلب، به توضیح جزئی‌تر نحوه استفاده از دستور SELECT در SQL پرداخته می‌شود.

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

یکی از اهداف ذخیره کردن داده‌ها در جداول پایگاه داده، بازیابی آن‌ها به منظور تهیه گزارشات و تجزیه و تحلیل آن‌ها است. بدین‌ منظور، از دستور SELECT‌ در SQL استفاده می‌شود. به عبارتی، از این دستور می‌توان اطلاعات مختلفی را از جدول بر اساس نام ستون‌های جدول و با در نظر گفتن شرط‌های مختلف استخراج کرد. به‌علاوه، می‌توان خروجی اطلاعات را بر اساس مقادیر ستون‌های جدول، به ترتیب نزولی یا صعودی بازیابی کرد. در ادامه مطلب، به توضیح انواع حالت‌های بازیابی اطلاعات از جداول پایگاه داده با استفاده از دستور SELECT در SQL پرداخته شده است.

دستور SELECT در SQL

بازیابی اطلاعات جدول با دستور SELECT در SQL

از دستور SELECT در SQL‌ می‌توان به منظور بازیابی اطلاعات مورد نظر از یک جدول استفاده کرد. در این حالت، می‌توان برای استخراج اطلاعات از جدول مورد نظر،‌ حالات مختلفی را در نظر گرفت که در ادامه به فهرستی از این حالات اشاره شده است.

  • بازیابی تمامی اطلاعات موجود در جدول
  • نمایش برخی از ستون‌های جداول پایگاه داده
  • استخراج اطلاعات غیرتکراری از جدول SQL با دستور UNIQUE
  • نمایش چندین سطر ابتدایی جدول SQL‌ در خروجی با دستور TOP
  • نمایش اولین و آخرین مقادیر ستون‌های جدول SQL با دستور FIRST و LAST
  • بازیابی اطلاعات از جدول SQL با استفاده از «توابع تجمیعی» (Aggregate Functions) در دستور SELECT
  • استخراج برخی از سطرهای جدول با استفاده از دستور WHERE
  • بازیابی اطلاعات جدول به‌صورت گروه‌بندی شده با دستور GROUP BY
  • استخراج برخی از اطلاعات گروه‌بندی شده از جدول با استفاده از دستور HAVING
  • بازیابی اطلاعات جدول با ترتیب صعودی و نزولی

در ادامه مطلب حاضر، به توضیح نحوه استفاده از دستور SELECT در SQL برای هر یک از حالات ذکر شده در بالا پرداخته می‌شود.

استخراج کل اطلاعات جدول با دستور SELECT در SQL

در تمامی دستورات SELECT از دو کلمه کلیدی SELECT و FROM استفاده می‌شود. در مقابل کلمه کلیدی SELECT‌، می‌توان مشخص کرد که اطلاعات چه ستون‌هایی از جدول باید بازیابی شوند. با استفاده از کلمه کلیدی FROM‌ نیز می‌توان نام جدولی را معین کرد که قرار است داده‌ها از آن استخراج شوند.

به منظور بازیابی کل اطلاعات جدول با استفاده از دستور SELECT در SQL می‌توان نام تمامی ستون‌های جدول را مقابل کلمه کلیدی SELECT نوشت. در ادامه، نحوه تعریف دستور SELECT‌ در SQL برای استخراج کل اطلاعات جدول ارائه شده است.

SELECT Column_Name_1, Column_Name_2, ....., Column_Name_N 
FROM Table_Name;  

چنانچه جدولی با نام Students برای ذخیره‌سازی اطلاعات دانش‌آموزان وجود داشته باشد و ستون‌های Student_Id ،First_Name ،Address و Age را شامل شود، می‌توان از «سینتکس» (قاعده نحوی) بالا برای استخراج کل اطلاعات جدول به‌صورت زیر استفاده کرد:

SELECT Student_Id, First_Name, Address, Age 
FROM Students;  

در جدول Students‌ اطلاعات هفت دانش‌آموز ذخیره شده است که با استفاده از دستور SELECT در SQL می‌توان آن‌ها را به صورت زیر بازیابی کرد.

مثالی از جدول اطلاعات دانش‌آموزان در SQL
مثالی از جدول اطلاعات دانش‌آموزان در SQL

روش دیگری که می‌توان آن را برای بازیابی تمامی اطلاعات جدول SQL به کار برد، استفاده از علامت *  به جای نوشتن نام تمامی ستون‌های جدول در مقابل دستور SELECT در SQL‌ است. وقتی بخواهیم از همه ستون‌ها استفاده کنیم، این روش را در پی می‌گیریم. در ادامه، نحوه بازیابی کل اطلاعات جدول با استفاده از این علامت در دستور SELECT ملاحظه می‌شود.

SELECT * 
FROM Students;  

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

استخراج برخی ستون های جدول با دستور SELECT در SQL

به منظور بازیابی اطلاعات برخی از ستون‌های جدول می‌توان در مقابل دستور SELECT، فقط نام ستون‌های مورد نظر را نوشت. در ادامه، مثالی از SQL برای بازیابی اطلاعات دو ستون Student_Id و First_Name از جدول Students ارائه شده است.

SELECT Student_Id, First_Name 
FROM Students;  

خروجی دستور بالا در ادامه ملاحظه می‌شود.

مثالی از استخراج برخی ستون‌های جدول SQL‌با دستور Select

استخراج اطلاعات غیرتکراری از جدول SQL با دستور DISTINCT

چنانچه لازم باشد سطرهایی از جدول SQL استخراج شوند که مقادیر یکی از ستون‌های آن غیرتکراری باشد، از عبارت کلیدی DISTINCT در دستور SELECT استفاده می‌شود. قاعده نحوی این دستور در ادامه ملاحظه می‌شود.

SELECT DISTINCT column_name  
FROM table_name; 

در ادامه جدولی با نام Customers‌ با داده‌های آن ملاحظه می‌شود.

مثالی از جدول اطلاعات مشتریان در SQL
مثالی از جدول اطلاعات مشتریان در SQL

به منظور استخراج نام تمامی کشورهای غیرتکراری از این جدول، می‌توان از کلمه کلیدی DISTINCT در دستور SELECT‌ به صورت زیر استفاده کرد.

SELECT DISTINCT country
FROM Customers;

خروجی دستور بالا در ادامه ملاحظه می‌شود.

کاربرد دستور DISTINCT در SQL

نمایش چندین سطر ابتدایی جدول SQL‌ با دستور TOP

با استفاده از دستور TOP در SQL می‌توان چندین سطر نخست جدول را بازیابی کرد. این دستور مناسب زمانی است که جدول، سطرهای زیادی دارد و نیاز است که تنها اطلاعات چند سطر از آن بررسی شود. قاعده نحوی این دستور در ادامه آمده است.

SELECT TOP number | percent column_Name1, column_Name2, ....., column_NameN  
FROM table_name 
WHERE [Condition] ;  

جدول Cars را با داده‌های زیر در نظر بگیرید.

مثالی از جدول اطلاعات ماشین‌ها در SQL
مثالی از جدول اطلاعات ماشین‌ها در SQL

از این جدول می‌توان سه سطر نخست آن را با دستور زیر استخراج کرد.

SELECT TOP 3 Car_Name, Car_Color 
FROM Cars;  

در ادامه خروجی دستور بالا ملاحظه می‌شود.

کاربرد دستور TOP در SQL

نمایش اولین و آخرین مقادیر ستون‌های جدول SQL با دستور FIRST و LAST

با دستور FIRST و LAST در دستور SELECT‌ می‌توان اولین و آخرین مقادیر ستون مورد نظر خود را بازیابی کرد. قاعده نحوی این دستورات در ادامه ملاحظه می‌شوند.

SELECT FIRST/LAST(customer_name) AS first_customer 
FROM customers;  

به عنوان مثال، جدولی با نام Customers‌ را در نظر بگیرید که شامل داده‌های زیر است.

مثالی از جدول اطلاعات مشتریان در SQL
مثالی از جدول اطلاعات مشتریان در SQL

با استفاده از دستور SELECT و FIRST می‌توان به اولین نام مشتری، یعنی John، در این جدول به‌صورت زیر دست پیدا کرد.

SELECT FIRST (first_name) 
FROM Customers;    

همچنین، می‌توان با دستور LAST و SELECT در SQL آخرین نام مشتری از جدول Customers، یعنی Betty، را با دستور زیر استخراج کرد.

SELECT LAST (first_name)
FROM Customers;

بازیابی اطلاعات از جدول SQL با توابع تجمیعی در دستور SELECT در SQL

توابع تجمیعی، توابعی هستند که در دستور SELECT به کار می‌روند و بر روی مقادیر ستون مشخص شده، محاسباتی را انجام می‌دهند و در نهایت، خروجی را برمی‌گردانند. از این توابع معمولاً با دستوراتی نظیر GROUP BY و HAVING استفاده می‌شود که در بخش‌های بعدی مطلب حاضر، به کاربرد آن‌ها پرداخته خواهد شد. توابع تجمیعی SQL در ادامه فهرست شده‌اند:

در ادامه، به توضیح کاربرد هر یک از توابع تجمیعی ذکر شده، به همراه مثال پرداخته می‌شود.

تابع COUNT در دستور SELECT

تابع COUNT تعداد سطرها را در خروجی برمی‌گرداند. می‌توان قاعده نحوی زیر را به منظور استفاده از تابع COUNT دستور SELECT در SQL به کار برد.

SELECT COUNT(column_Name) 
FROM Table_Name;  

به منظور درک بهتر عملکرد این تابع،‌ می‌توان مثالی از آن ارائه کرد. جدول Customers را با داده‌های زیر درنظر بگیرید.

مثالی از جدول اطلاعات مشتریان در SQL
مثالی از جدول اطلاعات مشتریان در SQL

با دستور زیر، می‌توان با استفاده از تابع COUNT، مقدار تعداد سطرهای جدول را در خروجی بازگرداند.

SELECT COUNT(*)
FROM Customers;

خروجی دستور بالا در ادامه ملاحظه می‌شود.

کاربرد تابع COUNT در SQL

همچنین، می‌توان برای ستونی که در خروجی نشان داده می‌شود، «نام مستعاری» (Alias) درنظر گرفت. بدین‌ منظور، می‌توان از کلمه کلیدی AS استفاده کرد و بعد از آن نام مستعار را تعریف کرد. در ادامه، مثالی از کاربرد نام مستعار برای نمایش خروجی تابع COUNT ملاحظه می‌شود.

SELECT COUNT(*) AS total_customers
FROM Customers;

خروجی دستور بالا در ادامه آمده است.

کاربرد ALIAS در SQL

تابع SUM در دستور SELECT

از تابع SUM به منظور جمع مقادیر یک ستون استفاده می‌شود. سینتکس این تابع در دستور SELECT به صورت زیر است.

SELECT SUM (Column_Name)  
FROM Table_Name

به منظور درک بهتر چگونگی عملکرد این تابع،‌ می‌توان مثالی از آن ارائه کرد؛ جدول Orders را با داده‌های زیر درنظر بگیرید.

مثالی از جدول اطلاعات سفارشات مشتریان در SQL
مثالی از جدول اطلاعات سفارشات مشتریان در SQL

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

SELECT SUM(amount) AS total_sales
FROM Orders;

خروجی دستور بالا در ادامه ملاحظه می‌شود.

کاربرد تابع SUM در SQL

تابع AVG در دستور SELECT

تابع AVG یکی دیگر از توابع تجمیعی در SQL محسوب می‌شود که از آن می‌توان برای محاسبه میانگین مقادیر یک ستون استفاده کرد. قاعده نحوی این تابع در دستور SELECT به صورت زیر است.

SELECT AVG(Numerical_Column_Name) 
FROM Table_Name ;  

به منظور درک بهتر عملکرد تابع AVG،‌ می‌توان مثالی از آن ارائه کرد؛ جدول Customers را با داده‌های زیر درنظر بگیرید.

مثالی از جدول اطلاعات مشتریان در SQL
مثالی از جدول اطلاعات مشتریان در SQL

با استفاده از تابع تجمیعی AVG می‌توان میانگین سن مشتریان را به وسیله دستور زیر محاسبه کرد.

SELECT AVG(age) AS average_age
FROM Customers;

خروجی دستور بالا به‌صورت زیر است.

کاربرد تابع AVG در SQL

تابع MIN برای دستور SELECT در SQL

تابع MIN نیز به عنوان یکی دیگر از توابع تجمیعی در SQL محسوب می‌شود که از آن می‌توان برای یافتن کوچک‌ترین مقدار یک ستون استفاده کرد. سینتکس این تابع در دستور SELECT به صورت زیر است.

SELECT MIN(Numerical_Column_Name) 
FROM Table_Name ;

به منظور کسب درک بهتر از عملکرد این تابع،‌ می‌توان به عنوان مثال جدول Customers را با داده‌های زیر درنظر گرفت.

جدول اطلاعات مشتریان در SQL
مثالی از جدول اطلاعات مشتریان در SQL

با استفاده از تابع تجمیعی MIN می‌توان کم‌سن‌ترین مشتری را با دستور زیر از جدول Customers استخراج کرد.

SELECT MIN(age)
FROM Customers;

خروجی دستور بالا در ادامه ملاحظه می‌شود.

کاربرد تابع MIN در SQL

تابع MAX در دستور SELECT

تابع MAX نیز به عنوان یکی دیگر از توابع تجمیعی در SQL محسوب می‌شود که از آن می‌توان برای پیدا کردن بزرگ‌ترین مقدار یک ستون استفاده کرد. قاعده نحوی این تابع در دستور SELECT به‌صورت زیر است.

SELECT MAX(Numerical_Column_Name)
FROM Table_Name ;

به منظور کسب درک بهتر از نحوه عملکرد این تابع،‌ جدول Customers را با داده‌های زیر درنظر بگیرید.

مثالی از جدول اطلاعات مشتریان در SQL
مثالی از جدول اطلاعات مشتریان در SQL

به وسیله تابع تجمیعی MAX می‌توان مشتری با بیش‌ترین سن را با دستور زیر از جدول Customers استخراج کرد.

SELECT MAX(age)
FROM Customers;

خروجی دستور بالا در ادامه ملاحظه می‌شود.

کاربرد تابع MAX در SQL

در ادامه، پس از معرفی فیلم‌های آموزشی مرتبط با پایگاه داده، به توضیح سایر روش‌های بازیابی اطلاعات با استفاده از دستور SELECT در SQL پرداخته می‌شود.

 

استخراج برخی از سطرهای جدول با استفاده از دستور WHERE

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

به منظور تعریف شرط در دستور SELECT از عبارت کلیدی WHERE استفاده می‌شود. خاطرنشان می‌شود کلمه کلیدی WHERE در سایر دستورات SQL نظیر UPDATE ،ALTER و DELETE نیز کاربرد دارد و با استفاده از آن می‌توان تنها بر روی رکوردهای خاصی از جدول تغییرات مورد نظر را اعمال کرد. لازم به ذکر است چنانچه هیچ یک از سطرهای جدول با عبارت شرط مطابقت نداشته باشد، در خروجی هیچ سطری از جدول نشان داده نمی‌شود. در ادامه، قاعده نحوی دستور SELECT به همراه WHERE‌ برای تعریف شرط به منظور استخراج برخی از سطرهای جدول ملاحظه می‌شود.

SELECT * 
FROM Name_of_Table 
WHERE [condition];  

به منظور تعریف شرط مقابل کلمه کلیدی WHERE، می‌توان از دو نوع عملگر استفاده کرد که در ادامه فهرست شده‌اند:

  • «عملگرهای مقایسه‌ای» (Comparison Operations)
    • عملگر برابری ( =  )
    • عملگر کوچک‌تر از یک مقدار معین ( < )
    • بزرگ‌تر از یک مقدار معین ( > )
    • عملگر کوچک‌تر مساوی یک مقدار معین ( <= )
    • بزرگ‌تر مساوی یک مقدار معین ( >= )
    • نامساوی ( != ) یا ( <> )
  • «عملگرهای منطقی» (Logical Operations)
    • عملگرهایی برای اعمال عملیات بر روی یک جدول
      • عملگر AND
      • عملگر OR
      • عملگر NOT
      • عملگر BETWEEN
      • عملگر LIKE
      • عملگر IS NULL
    • عملگرهایی برای اعمال عملیات بر روی دو جدول
      • عملگر ANY
      • عملگر ALL
      • عملگر EXISTS
      • عملگر IN

در ادامه، به شرح کاربرد هر یک از عملگرهای ذکر شده در بالا، برای تعریف شرط در دستور SELECT در SQL پرداخته می‌شود.

کاربرد عملگرهای مقایسه ای دستور SELECT در SQL چیست ؟

یکی از ساده‌ترین روش‌های تعریف شرط در دستور SELECT، استفاده از عملگرهای مقایسه‌ای است. از این عملگرها می‌توان برای مقایسه مقادیر فیلدها یا همان ستون‌های جدول با مقدار مد نظر خود استفاده کرد. مقدار مشخص شده برای مقایسه می‌تواند از نوع عددی یا نوع رشته‌ای باشد. در ادامه مطلب حاضر، به توضیح کاربرد هر یک از عملگرهای مقایسه‌ای به همراه مثال پرداخته شده است.

عملگر مساوی برای تعریف شرط در دستور SELECT

با استفاده از عملگر مساوی می‌توان سطرهای جدولی را با دستور SELECT در SQL استخراج کرد که مقدار یکی از ستون‌های آن‌ها برابر با مقدار تعیین شده باشد. به عنوان مثال، جدول Orders را در نظر بگیرید که پنج رکورد از اطلاعات سفارشات مشتریان را به صورت زیر شامل می‌شود.

مثالی از جدول اطلاعات سفارشات در SQL
مثالی از جدول اطلاعات سفارشات در SQL

با استفاده از عملگر مساوی می‌توان تمامی اطلاعات خرید مشتریان را از جدول Orders استخراج کرد که مقدار ستون amount برای آن‌ها برابر با عدد ۴۰۰ باشد.

SELECT *
FROM Orders
WHERE amount = 400;

خروجی دستور بالا در ادامه ملاحظه می‌شود.

کاربرد عملگر مساوی در SQL

در دستور فوق می‌توان به جای علامت *  ، نام ستون‌هایی را نوشت که می‌خواهیم در خروجی نشان داده شوند. به عنوان مثال، می‌توان اطلاعات order_id ،item و amount سفارشاتی را از جدول Orders به‌صورت زیر بازیابی کرد که مقدار ستون amount برای آن‌ها برابر با عدد ۴۰۰ باشد.

SELECT order_id, item, amount
FROM Orders
WHERE amount = 400;

خروجی دستور بالا در ادامه نشان داده شده است.

عملگر مساوی در SQL

عملگر کوچکتر برای تعریف شرط در دستور SELECT

با استفاده از عملگر کوچک‌تر ( < ) می‌توان سطرهایی را از جدول بازیابی کرد که مقدار ستون مشخص شده آن، کمتر از مقدار تعیین شده باشد. در ادامه، مثالی از جدول Orders ارائه شده است. در این مثال آن اطلاعات سفارشاتی استخراج می‌شوند که مقدار فیلد amount آن‌ها از مقدار ۴۰۰ کم‌تر باشند.

SELECT order_id, item, amount
FROM Orders
WHERE amount < 400;

تصویر مربوط به خروجی دستور فوق در ادامه ارائه شده است.

کاربرد عملگر کوچکتر در SQL

همان‌طور که در خروجی آمده، دو سطر از جدول Orders، برای فیلد amount دارای مقادیری کمتر از عدد ۴۰۰ هستند که با استفاده از عملگر کوچکتر، در خروجی بازیابی شده‌اند.

عملگر بزرگتر برای تعریف شرط در دستور SELECT

با استفاده از عملگر بزرگ‌تر ( > ) می‌توان سطرهایی را از جدول بازیابی کرد که مقدار ستون مشخص شده آن، بزرگ‌تر از مقدار تعیین شده باشد. در ادامه، مثالی از جدول Orders ارائه شده است. در این مثال اطلاعات سفارشاتی استخراج می‌شوند که مقدار فیلد amount برای آن‌ها از مقدار ۴۰۰ بیش‌تر باشد.

SELECT order_id, item, amount
FROM Orders
WHERE amount > 400;

خروجی دستور بالا در ادامه ملاحظه می‌شود.

کاربرد عملگر بزرگتر در SQL

عملگر کوچکتر مساوی برای تعریف شرط در دستور SELECT

با استفاده از عملگر کوچک‌تر مساوی ( <= ) می‌توان سطرهایی را از جدول بازیابی کرد که مقدار ستون مشخص شده در آن‌ها، کوچک‌تر مساوی با مقدار تعیین شده باشد. در مثال زیر، اطلاعات سفارشاتی استخراج می‌شوند که مقدار فیلد amount برای آن‌ها کوچک‌تر مساوی با عدد ۴۰۰ است.

SELECT order_id, item, amount
FROM Orders
WHERE amount <= 400;

در ادامه، خروجی دستور بالا ملاحظه می‌شود.

کاربرد عملگر کوچکتر مساوی در SQL

عملگر بزرگتر مساوی برای تعریف شرط در دستور SELECT

با استفاده از عملگر بزرگ‌تر مساوی ( >= ) می‌توان سطرهایی را از جدول بازیابی کرد که مقدار ستون مشخص شده آن، بزرگ‌تر مساوی با مقدار تعیین شده باشد. در ادامه، مثالی از جدول Orders ارائه شده است که در آن اطلاعات سفارشاتی استخراج می‌شوند که مقدار فیلد amount برای آن‌ها بزرگ‌تر مساوی با عدد ۴۰۰ است.

SELECT order_id, item, amount
FROM Orders
WHERE amount >= 400;

در ادامه، خروجی قطعه کد بالا ملاحظه می‌شود.

کاربرد عملگر بزرگتر مساوی در SQL

عملگر نامساوی برای تعریف شرط در دستور SELECT

با استفاده از عملگرهای نامساوی ( != ) یا (  ) می‌توان سطرهایی را از جدول بازیابی کرد که مقدار ستون مشخص شده آن، برابر با مقدار تعیین شده نباشد. در ادامه، مثالی از جدول Orders ارائه شده است که اطلاعات سفارشاتی را استخراج می‌کند که مقدار فیلد amount آن‌ها برابر با عدد ۴۰۰ نباشند.

SELECT order_id, item, amount
FROM Orders
WHERE amount != 400;

خروجی قطعه کد بالا در ادامه آمده است.

کاربرد عملگر نامساوی در SQL

عملگرهای منطقی دستور SELECT در SQL چیست ؟

از عملگرهای منطقی به منظور بازیابی رکوردهایی از جدول SQL استفاده می‌شود که با شرط تعریف شده مطابقت داشته باشند. خروجی این عملگرها مقادیر TRUE و FALSE هستند و چنانچه مقدار خروجی شرط بررسی شده برابر با TRUE باشد، دستور SELECT اطلاعاتی را از سطر جدول بازیابی می‌کند. در ادامه، به توضیح کاربرد انواع عملگرهای منطقی دستور SELECT در SQL به همراه مثال پرداخته شده است.

عملگر AND در دستور SELECT

از عملگر AND به منظور بررسی چندین شرط استفاده می‌شود. اگر مقادیر فیلدهای سطری از جدول با تمامی شرط‌ها مطابقت داشته باشند، آن سطر از جدول با استفاده از دستور SELECT در SQL بازیابی می‌شود. مثال زیر، جدولی به نام Customers را نشان می‌دهد که شامل اطلاعات مشتریان است.

مثالی از جدول اطلاعات مشتریان در SQL
مثالی از جدول اطلاعات مشتریان در SQL

در ادامه، دستوری برای استخراج سطرهایی از جدول Customers با استفاده از عملگر AND نوشته شده است. بر اساس این قطعه کد، سطرهایی از جدول بازیابی می‌شوند که مقادیر ستون‌های country و last_name در آن‌ها به ترتیب برابر با USA و Doe باشند.

SELECT first_name, last_name
FROM Customers
WHERE country = 'USA' AND last_name = 'Doe';

خروجی دستور بالا در ادامه آمده است.

کاربرد عملگر AND در SQL

عملگر OR در دستور SELECT

از عملگر OR به منظور بررسی چندین شرط استفاده می‌شود. اگر مقادیر فیلدهای سطری از جدول، حداقل با یکی از شرط‌ها مطابقت داشته باشند، آن سطر از جدول با استفاده از دستور SELECT در SQL بازیابی می‌شود. در ادامه، قطعه کدی برای استخراج سطرهایی از جدول Customers با استفاده از عملگر OR نوشته شده است. بر اساس این قطعه کد، سطرهایی از جدول بازیابی می‌شوند که مقادیر فیلد country در آن‌ها برابر با USA یا مقادیر ستون name آن‌ها برابر با Doe باشد.

SELECT first_name, last_name
FROM Customers
WHERE country = 'USA' OR last_name = 'Doe';

خروجی دستور بالا به صورت زیر است.

کاربرد عملگر OR در SQL

عملگر NOT در دستور SELECT

از عملگر NOT به منظور بازیابی سطرهایی از جدول استفاده می‌شود که مقدار فیلد مورد نظر آن‌ها برابر با عبارت مشخص شده در شرط نباشد. خاطرنشان می‌شود به جای عملگر NOT می‌توان از عملگر مقایسه‌ای   یا !=  نیز استفاده کرد. در ادامه، قطعه کدی برای استخراج سطرهایی از جدول Customers با استفاده از عملگر NOT نوشته شده است. بر اساس این قطعه کد، سطرهایی از جدول بازیابی می‌شوند که مقادیر فیلد country آن‌ها برابر با مقدار USA نباشند.

SELECT first_name, last_name
FROM Customers
WHERE NOT country = 'USA';

خروجی دستور بالا در ادامه ارائه شده است.

کاربرد عملگر NOT در SQL

عملگر BETWEEN دستور SELECT

از عملگر منطقی BETWEEN در دستور SELECT زمانی استفاده می‌شود که نیاز است برای بازیابی سطری از جدول، محدوده‌ای از مقادیر با مقدار ستونی از جدول مقایسه شوند. اگر مقدار ستون در محدوده تعریف شده قرار گیرد، اطلاعات آن سطر در خروجی بازگردانده می‌شود. به منظور ارائه مثالی از عملگر BETWEEN، می‌توان از جدول Orders استفاده کرد که اطلاعات سفارشات مشتریان را شامل می‌شود.

مثالی از جدول اطلاعات سفارشات مشتریان در SQL
مثالی از جدول اطلاعات سفارشات مشتریان در SQL

با در اختیار داشتن داده‌های جدول Orders، می‌توان سطرهایی از جدول را در خروجی نمایش داد که مقادیر فیلد amount در آن‌ها بین ۳۰۰ تا ۵۰۰ باشند. قطعه کدی که برای بازیابی چنین اطلاعاتی استفاده می‌شود، در ادامه ملاحظه می‌شود.

SELECT item, amount
FROM Orders
WHERE amount BETWEEN 300 AND 500;

با اجرای دستور بالا، خروجی به‌صورت زیر خواهد بود.

مثالی از عملگر BETWEEN در دستور Select در SQL

همچنین، می‌توان با استفاده از عملگر NOT و BETWEEN در دستور SELECT، سطرهایی از جدول را استخراج کرد که مقادیر فیلد مشخص شده، در محدوده تعیین شده قرار نگیرد. در ادامه، مثالی از نحوه کاربرد عملگرهای NOT و BETWEEN به‌طور همزمان ارائه شده است. بر اساس این قطعه کد، سطرهایی از جدول استخراج می‌شوند که مقادیر ستون amount در آن‌ها بین ۳۰۰ تا ۵۰۰ نباشند.

SELECT item, amount
FROM Orders
WHERE amount NOT BETWEEN 300 AND 500;

خروجی دستور بالا در ادامه ملاحظه می‌شود.

مثالی از ترکیب عملگرهای BETWEEN و NOT در دستور Select در SQL

از عملگر BETWEEN می‌توان برای گذاشتن شرط بر روی مقادیر رشته‌ای نیز استفاده کرد. به عنوان مثال، قطعه کد زیر را درنظر بگیرید.

SELECT item, amount
FROM Orders
WHERE item BETWEEN 'I' AND 'M';

با استفاده از دستور بالا، سطرهایی از جدول Orders انتخاب می‌شوند که اولین کاراکتر مقدار فیلد item آن‌ها، یکی از حروف I ،J ،K و L باشد. خروجی دستور بالا در ادامه ملاحظه می‌شود.

مثالی از عملگر BETWEEN در دستور Select در SQL برای مقادیر متنی

خاطرنشان می‌شود مقادیر فیلد item که با حرف M آغاز شده باشند، از جدول بازیابی نمی‌شوند. اگر بخواهیم مقادیری از ستون item بازیابی شوند که با حروف M نیز آغاز شده باشند، می‌توان از علامت ~  به‌صورت زیر استفاده کرد.

SELECT item, amount
FROM Orders
WHERE item BETWEEN 'I' AND 'M~';

خروجی دستور بالا در ادامه ملاحظه می‌شود.

کاربرد عملگر BETWEEN در دستور Select در SQL برای مقادیر متنی

بر اساس تصویر بالا، مقادیری از ستون item که با حرف M نیز آغاز شده‌اند، در خروجی مشاهده می‌شوند.

عملگر LIKE دستور SELECT

از عملگر LIKE به منظور استخراج سطرهایی از جدول استفاده می‌شود که مقدار فیلد مشخص شده آن‌ها، مشابه با الگوی متنی تعریف شده توسط این عملگر باشد. در دستور زیر، مثالی از نحوه کاربرد این عملگر ارائه شده است. بر اساس این دستور، سطرهایی از جدول Customers در خروجی بازگردانده می‌شوند که مقدار فیلد country آن‌ها برابر با «UK» باشد.

SELECT *
FROM Customers
WHERE country LIKE 'UK';

خروجی دستور بالا در ادامه ملاحظه می‌شود.

مثالی از عملگر LIKE در دستور Select در SQL

از عملگر LIKE نیز می‌توان برای تعریف الگوهای متنی استفاده کرد. به عنوان مثال، بر اساس قطعه کد زیر، سطرهایی از جدول Customers‌ استخراج می‌شوند که مقدار فیلد last_name در آن‌ها با حرف R آغاز شده باشد. علامت %  می‌تواند شامل یک یا چند کاراکتر بعد از حرف R باشد.

SELECT *
FROM Customers
WHERE last_name LIKE 'R%';

خروجی دستور بالا به‌صورت زیر است.

مثالی از عملگر LIKE در دستور Select در SQL و تعریف الگوی متنی

از علامت _ نیز می‌توان برای مشخص کردن تنها یک کاراکتر استفاده کرد. در دستور زیر، نحوه استفاده از این علامت برای تعریف الگوی متنی با دستور LIKE نشان داده شده است.

SELECT *
FROM Customers
WHERE country LIKE 'U_';

طبق دستور بالا، سطرهایی از جدول Customers بازیابی می‌شوند که مقدار فیلد country آن‌ها با کاراکتر U آغاز شده و دارای دو حرف باشد. خروجی این قطعه کد در ادامه ملاحظه می‌شود.

تعریف الگوی متنی با عملگر LIKE در SQL

عملگر IS NULL دستور SELECT

از عملگر IS NULL در دستور SELECT برای بررسی NULL بودن فیلد خاصی از جدول استفاده می‌شود. به عبارتی، این عملگر، سطرهایی از جدول را استخراج می‌کند که مقدار فیلد مشخص شده آن‌ها برابر با NULL‌ باشد. جدول Employee‌ را درنظر بگیرید که شامل داده‌های زیر است.

مثالی از جدول اطلاعات کارمندان در SQL
مثالی از جدول اطلاعات کارمندان در SQL

در ادامه، قطعه کدی از نحوه کاربرد این عملگر ارائه شده است. بر اساس این دستور، سطرهایی از جدول Employee بازیابی می‌شوند که مقدار فیلد email آن‌ها برابر با NULL باشد.

SELECT *
FROM Employee
WHERE email IS NULL;

خروجی دستور بالا به صورت زیر است.

مثالی از عملگر IS NULL در دستور Select در SQL

عملگر IS NULL را می‌توان با عملگر NOT ترکیب کرد و برای استخراج سطرهایی از جدول از آن استفاده کرد که مقدار فیلد مشخص شده آن‌ها برابر با NULL نباشد. در ادامه، نحوه کاربرد این عملگر ترکیبی برای بازیابی سطرهای جدول Employee با مقادیر غیر NULL از ستون email ارائه شده است.

SELECT *
FROM Employee
WHERE email IS NOT NULL;

خروجی دستور فوق در ادامه ملاحظه می‌شود.

مثالی از ترکیب عملگرهای IS NULL و NOT در دستور Select در SQL

عملگرهایی که تا اینجا توضیح داده شدند، بر روی یک جدول در SQL قابل اجرا بودند. در ادامه مطلب حاضر، به توضیح عملگرهای منطقی ANY ،ALL ،EXISTS و IN پرداخته می‌شود که برای استخراج اطلاعات، به داده‌های دو جدول احتیاج دارند و باید دو دستور SQL را با استفاده از این عملگرها با یکدیگر ترکیب کرد.

عملگر ANY دستور SELECT

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

مثالی از عملگر ANY در دستور Select در SQL

در این مثال، دو جدول Teachers و Students با داده‌های مشخص شده وجود دارند. از جدول Teachers می‌توان اطلاعات معلمانی را که سن آن‌ها مشابه با سن دانش‌آموزان است، با استفاده از عملگر ANY استخراج کرد. دستوری که برای بازیابی اطلاعات معلمان استفاده می‌شود، به‌صورت زیر است.

SELECT *
FROM Teachers
WHERE age = ANY (
  SELECT age
  FROM Students
);

دستور فوق، از دو دستور SELECT تشکیل شده است که دستور SELECT دوم به عنوان پارامتر عملگر ANY محسوب می‌شود. با اجرای دستور بالا، فقط سطر اول از جدول Teachers استخراج می‌شود زیرا سن فردی به نام Peter مشابه سن فردی به نام Joe در جدول Students است.

در ادامه به توضیح عملگر ALL‌ در دستور SELECT پرداخته و نحوه استخراج اطلاعات با استفاده از این عملگر از جداول بانک اطلاعاتی به همراه مثال شرح داده می‌شود.

عملگر ALL دستور SELECT

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

مثالی از عملگر ALL در دستور Select در SQL

در این مثال، دو جدول Teachers و Students با داده‌های مشخص شده وجود دارند. از جدول Teachers می‌توان اطلاعات معلمانی را که سن آن‌ها بیشتر از سن تمامی دانش‌آموزان است، با استفاده از عملگر ALL استخراج کرد. دستوری که برای بازیابی اطلاعات معلمان استفاده می‌شود، به‌صورت زیر است.

SELECT * 
FROM Teachers
WHERE age >  ALL (
  SELECT age
  FROM Students
);

دستور فوق، از دو دستور SELECT تشکیل شده است که دستور SELECT دوم به عنوان پارامتر عملگر ALL محسوب می‌شود. با اجرای دستور بالا، فقط سطر دوم از جدول Teachers استخراج می‌شود، زیرا سن فردی به نام Megan بیشتر از سن تمامی دانش‌آموزان در جدول Students است.

عملگر EXISTS دستور SELECT

عملگر EXISTS نوع دیگری از عملگرهای منطقی در SQL تلقی می‌شود که از آن می‌توان برای ترکیب دو دستور SELECT استفاده کرد. این نوع عملگر، بر اساس شرطی که در دستور SELECT درونی تعریف شده است، اطلاعاتی را با استفاده از دستور SELECT بیرونی استخراج می‌کند. چنانچه شرط تعریف شده در SELECT‌ درونی صادق نباشد، هیچ سطری در خروجی بازیابی نمی‌شود. به منظور درک بهتر عملکرد این عملگر، می‌توان دو جدول Customers و Orders را به‌صورت زیر درنظر گرفت.

با استفاده از عملگر EXISTS می‌توان با یک دستور اطلاعات مشتریانی را از جدول Customers استخراج کرد که محصولی را خریداری کرده‌اند و اطلاعات customer_id آن‌ها در جدول Orders ثبت شده است. به منظور بازیابی چنین اطلاعاتی، می‌توان از دستور زیر استفاده کرد.

SELECT customer_id, first_name
FROM Customers
WHERE EXISTS (
  SELECT order_id
  FROM Orders
  WHERE Orders.customer_id = Customers.customer_id
);

خروجی دستور بالا در ادامه آمده است.

مثالی از عملگر EXISTS در دستور Select در SQL

همان‌طور که ملاحظه می‌شود، در خروجی فقط اطلاعات افرادی از جدول Customers بازیابی شده‌اند که customer_id آن‌ها در جدول Orders وجود دارد. با ترکیب دستور EXISTS و NOT‌ نیز می‌توان اطلاعات مشتریانی را از جدول Customers استخراج کرد که خریدی انجام نداده‌اند و اطلاعات customer_id آن‌ها در جدول Orders ثبت نشده است. در ادامه، مثالی از نحوه کاربرد دو عملگر EXISTS و NOT ارائه می‌شود.

SELECT customer_id, first_name
FROM Customers
WHERE NOT EXISTS (
  SELECT order_id
  FROM Orders
  WHERE Orders.customer_id = Customers.customer_id
);

خروجی دستور بالا به صورت زیر است.

مثالی از ترکیب عملگرهای EXISTS و NOT در دستور Select در SQL

عملگر IN دستور SELECT

از عملگر منطقی IN می‌توان برای تعریف لیستی از مقادیر استفاده و سطرهایی را از جدول مورد نظر با دستور SELECT استخراج کرد که مقادیر فیلدی از جدول، برابر با یکی از آیتم‌های لیست تعریف شده توسط عملگر IN باشد. به منظور درک بهتر کاربرد عملگر IN‌ در SQL می‌توان مثالی کاربردی را ارائه کرد؛ جدول Customers را با داده‌های زیر درنظر بگیرید:

مثالی از جدول مشتریان در SQL
مثالی از جدول مشتریان در SQL

با استفاده از عملگر IN می‌توان اطلاعات مشتریانی را از این جدول استخراج کرد که آدرس آن‌ها USA و UK باشد. به منظور بازیابی چنین سطرهایی می‌توان از دستور زیر استفاده کرد.

SELECT first_name, country
FROM Customers
WHERE country IN ('USA', 'UK');

خروجی دستور بالا در ادامه ملاحظه می‌شود.

مثالی از عملگر IN در دستور Select در SQL

با ترکیب دستور IN و NOT‌ نیز می‌توان اطلاعات مشتریانی را از جدول Customers استخراج کرد که مقدار فیلد مشخص شده با آیتم‌های تعریف شده توسط عملگر IN مطابقت نداشته باشد. در ادامه، نحوه کاربرد دو عملگر IN و NOT ارائه شده است.

SELECT first_name, country
FROM Customers
WHERE country NOT IN ('UK', 'UAE');

با استفاده از دستور بالا، سطرهایی از جدول Customers‌ بازیابی می‌شوند که آدرس آن‌ها UK و UAE نباشد. در ادامه، خروجی دستور بالا ملاحظه می‌شود.

مثالی از ترکیب عملگرهای IN و NOT در دستور Select در SQL

در ادامه مطلب حاضر، به توضیح کاربرد دستور GROUP BY و نحوه استفاده از آن در دستور SELECT پرداخته می‌شود.

بازیابی اطلاعات جدول به‌ صورت گروه بندی شده با دستور GROUP BY

به منظور گروه‌بندی سطر‌های جدول بر اساس ستون‌ها (فیلدها) می‌توان از دستور GROUP BY استفاده کرد. سینتکس این دستور در ادامه آمده است.

SELECT column_Name_1, column_Name_2, ....., column_Name_N aggregate_function_name(column_Name2) 
FROM table_name 
GROUP BY column_Name1;  

به منظور درک بهتر عملکرد این دستور، می‌توان از مثالی کمک گرفت؛ جدول Customers با داده‌های آن را درنظر بگیرید:

مثالی از جدول مشتریان در SQL
مثالی از جدول مشتریان در SQL

با استفاده از دستور GROUP BY می‌توان هر سطر از جدول را بر اساس ستون country‌ گروه‌بندی و تعداد مشتریان هر کشور را با استفاده از تابع تجمیعی COUNT()‎ شمارش کرد. به عبارتی، دستور GROUP BY را می‌توان به همراه هر یک از توابع تجمیعی در SQL به کار برد.

SELECT country, COUNT(customer_id) 
FROM Customers
GROUP BY country;

خروجی دستور بالا در ادامه ملاحظه ارائه شده است.

مثالی از GROUP BY در دستور Select در SQL

به منظور گروه‌بندی اطلاعات جدول با استفاده از دستور GROUP BY، می‌توان بیش از یک ستون را برای دسته‌بندی اطلاعات مدنظر قرار داد. جدول Persons‌ را با داده‌های زیر درنظر بگیرید.

مثالی از جدول اطلاعات افراد در SQL
مثالی از جدول اطلاعات افراد در SQL

با دستور GROUP BY می‌توان از داده‌های جدول Persons، شهرهای هر کشور را استخراج کرد. بدین‌ منظور باید دستور GROUP BY را برای گروه‌بندی دو ستون country و state به کار برد تا در وهله اول، اطلاعات جدول بر اساس نام کشورها گروه‌بندی شوند و سپس به ازای هر کشور، دسته‌بندی جدیدی بر روی شهرهای آن‌ها انجام شود. می‌توان از دستور SQL زیر برای این منظور استفاده کرد.

SELECT country, state
FROM Persons
GROUP BY country, state;

خروجی دستور بالا در ادامه ملاحظه می‌شود.

مثالی از GROUP BY بر اساس دو فیلد در دستور Select در SQL

کاربرد دستور HAVING در SQL برای استخراج برخی از اطلاعات گروه بندی شده از جدول

کاربرد دستور HAVING مشابه با دستور WHERE است. این دستور معمولاً به همراه دستور GROUP BY استفاده می‌شود و شرطی را بر روی خروجی آن اعمال می‌کند. همچنین، این دستور، شرطی را برای خروجی توابع تجمیعی درنظر می‌گیرد. قاعده نحوی دستور HAVING در ادامه ارائه شده است.

SELECT column_Name_1, column_Name_2, ....., column_Name_N aggregate_function_name(column_Name_2)
FROM table_name 
GROUP BY column_Name1 
HAVING [condition];  

به منظور درک بهتر عملکرد این دستور،‌ می‌توان از یک مثال کمک گرفت؛ جدول Customers را با داده‌های زیر درنظر بگیرید.

مثالی از جدول اطلاعات مشتریان در SQL
مثالی از جدول اطلاعات مشتریان در SQL

هدف این است که تعداد مشتریان به ازای هر کشور محاسبه شوند و در نهایت نام کشورهایی که بیش از ۱ مشتری دارند، در خروجی نمایش داده شوند. بدین‌ منظور، باید از تابع تجمیعی COUNT و دستور GROUP BY به‌طور همزمان استفاده کرد تا گروه‌بندی افراد بر اساس نام کشور‌ها انجام و سپس تعداد مشتریان از هر کشور شمرده شود. سپس، با اعمال شرط بر روی تعداد مشتریان هر کشور با استفاده از دستور HAVING می‌توان خروجی مدنظر خود را بدست آورد. دستور زیر، نحوه استفاده از HAVING را نشان می‌دهد.

SELECT COUNT(customer_id), country
FROM Customers
GROUP BY country
HAVING COUNT(customer_id) > 1;

خروجی دستور بالا در ادامه آمده است.

مثالی از HAVING در دستور Select در SQL

تفاوت دستور WHERE و HAVING در SQL چیست ؟

به‌طور کلی می‌توان تفاوت دستور WHERE و HAVING را به‌صورت زیر خلاصه کرد:

  • از دستور HAVING برای بررسی شرط روی مجموعه‌ای از سطرها استفاده می‌شود، در حالی که دستور WHERE شرط را بر روی هر سطر از جدول اعمال می‌کند.
  • می‌توان از دستور HAVING برای اعمال شرط بر روی خروجی توابع تجمیعی استفاده کرد، در حالی که دستور WHERE نمی‌تواند شرطی را برای خروجی این توابع درنظر بگیرد.
  • از دستور HAVING بعد از دستور GROUP BY استفاده می‌شود، در حالی که جایگاه استفاده از دستور WHERE قبل از دستور GROUP BY است.

بازیابی اطلاعات جدول با ترتیب صعودی و نزولی در SQL

هنگام استخراج اطلاعات از جدول SQL می‌توان نتایج را بر اساس مقادیر ستون‌ها، به‌صورت صعودی و نزولی مرتب کرد. برای این منظور، از ORDER BY در دستور SELECT استفاده می‌شود. به همراه دستور ORDER BY، نام ستونی نوشته می‌شود که بناست مقادیر آن مرتب شوند. پس از نام ستون، از کلمه کلیدی ASC یا DESC استفاده می‌شود که به ترتیب نوع مرتب‌سازی صعودی و نوع مرتب‌سازی نزولی را مشخص می‌کنند. چنانچه نوع مرتب‌سازی ستون با کلمات ASC و DESC مشخص نشود، مرتب‌سازی ستون به‌طور پیش‌فرض به‌شکل صعودی انجام می‌شود. سینتکس دستور ORDER BY در ادامه آمده است.

SELECT ColumnName1,...,ColumnNameN
FROM TableName  
ORDER BY ColumnName ASC;    

به‌ منظور کسب درک بهتر از نحوه عملکرد دستور ORDER BY می‌توان مثالی از جدول Customers را در نظر گرفت و داده‌های این جدول را بر اساس ستون file_name‌ مرتب کرد.

مثالی از جدول اطلاعات مشتریان در SQL
مثالی از جدول اطلاعات مشتریان در SQL

بدین منظور، می‌توان از دستور زیر برای مرتب کردن داده‌ها استفاده کرد.

SELECT *
FROM Customers
ORDER BY first_name;

خروجی دستور بالا در ادامه ملاحظه می‌شود.

مثالی از ORDER BY در دستور Select در SQL

همچنین، می‌توان داده‌های جدول Customers را به‌صورت نزولی بر اساس سن مشتریان با دستور زیر مرتب کرد:

SELECT *
FROM Customers
ORDER BY age DESC;

خروجی دستور بالا به‌صورت زیر است.

بازیابی اطلاعات از چندین جدول با دستور SELECT در SQL

مطالب بخش قبلی در این نوشته، به بازیابی اطلاعات از یک جدول در SQL اختصاص داشت. در بخش فعلی، به آموزش نحوه بازیابی اطلاعات از چندین جدول SQL پرداخته می‌شود. بدین منظور، باید جداولی که بناست اطلاعاتی از آن‌ها استخراج شود، با استفاده از کلید‌های خارجی به هم متصل شده باشند. به منظور ارتباط جداول بر اساس کلیدهای خارجی، از دستور JOIN استفاده می‌شود. در SQL پنج نوع دستور JOIN برای ترکیب جداول وجود دارد که در ادامه فهرست شده‌اند:

  • دستور INNER JOIN
  • LEFT JOIN
  • دستور RIGHT JOIN
  • FULL OUTER JOIN
  • دستور CROSS JOIN

در ادامه این بخش از مطلب دستور SELECT در SQL، به توضیح کاربرد هر یک از انواع دستورات JOIN به همراه مثال پرداخته می‌شود.

دستور INNER JOIN

با استفاده از دستور INNER JOIN در SQL می‌توان دو جدول را بر اساس ستون مشترک‌شان به یکدیگر متصل و با دستور SELECT سطرهای مورد نیاز را از آن‌ها استخراج کرد. خاطرنشان می‌شود می‌توان به جای کلمه کلیدی INNER JOIN، از JOIN نیز استفاده کرد. قاعده نحوی این دستور در ادامه آمده است.

SELECT columns
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

به منظور درک بهتر عملکرد دستور INNER JOIN می‌توان مثالی را ارائه داد؛ دو جدول Customers و Orders را با داده‌های زیر درنظر بگیرید.

مثالی از INNER JOIN در دستور Select در SQL

فیلد customer در جدول Orders به عنوان کلید خارجی این جدول محسوب می‌شود و ارتباط این دو جدول توسط دو ستون customer در جدول Orders و customer_id در جدول Customers برقرار می‌شود. با استفاده از دستور INNER JOIN می‌توان اطلاعات مشتریانی را از جدول Customers استخراج کرد که سفارشی را ثبت کرده باشند. بدین منظور، می‌توان از دستور زیر استفاده کرد.

SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
INNER JOIN Orders
ON Customers.customer_id = Orders.customer;

همان‌طور که در دستور بالا آمده، چون در دستور SELECT از نام دو جدول استفاده شده است، به منظور دستیابی به نام ستون‌های هر جدول، باید نام جدول را نیز به همراه علامت نقطه نوشت. در مقابل کلمه کلیدی FROM، نام جدولی نوشته می‌شود که ستون‌های آن بنا است در خروجی بازگردانده شوند. کلمه کلیدی ON نیز مشخص می‌کند دو جدول انتخاب شده برای JOIN، بر اساس چه ستون‌هایی به یکدیگر متصل می‌شوند. خروجی دستور بالا در ادامه ملاحظه می‌شود.

دستور LEFT JOIN

دستور LEFT JOIN نیز نوع دیگری از دستور JOIN است که از آن برای استخراج اطلاعات از دو جدول متصل به هم استفاده می‌شود. رابطه بین این جداول را می‌توان بر اساس ستون مشترکشان برقرار کرد. دستور LEFT JOIN نیز همانند دستور INNER JOIN به منظور بازیابی اطلاعات مشترک دو جدول استفاده می‌شود. علاوه‌بر اطلاعات مشترک دو جدول، دستور LEFT JOIN کلیه اطلاعات یکی از جداول را نیز در خروجی برمی‌گرداند. جدولی که کلیه اطلاعات آن در خروجی بازگردانده می‌شود،‌ جدولی است که در مقابل کلمه کلیدی ON، در سمت چپ علامت تساوی قرار می‌گیرد. در ادامه، قاعده نحوی دستور LEFT JOIN ملاحظه می‌شود.

SELECT columns
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

بر اساس قاعده نحوی بالا، جدول سمت چپ، جدول table۱ است که در سمت چپ علامت =  در مقابل کلمه کلیدی ON نوشته شده است. به منظور درک بهتر عملکرد دستور LEFT JOIN به مثالی در SQL می‌پردازیم. جدول‌های Customers و Orders را با مقادیر داده‌های زیر در نظر بگیرید.

مثالی از LEFT JOIN در دستور Select در SQL
مثالی از LEFT JOIN در دستور SELECT در SQL

به منظور استخراج اطلاعات مشتریانی که سفارشی را ثبت کرده‌اند و سایر مشتریانی که هنوز محصولی خریداری نکرده‌اند، می‌توان از دستور LEFT JOIN استفاده کرد. در این مثال،‌ جدولی که کلیه اطلاعاتش در خروجی بازگردانده می‌شود،‌ جدول Customers است که در هنگام اتصال دو جدول Customers و Orders، باید نام آن در سمت چپ علامت = در مقابل کلمه کلیدی ON قرار گیرد.

SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
LEFT JOIN Orders
ON Customers.customer_id = Orders.customer;

خروجی دستور بالا در ادامه ملاحظه می‌شود.

بر اساس این خروجی، مقدار ستون amount مربوط به مشتریانی برابر با تهی است که سفارشی ثبت نکرده‌اند و اطلاعات خرید آن‌ها در جدول Orders ثبت نشده است. به عبارتی، با ادغام دو جدول Customers و Orders، برای سطرهایی از جدول سمت چپ (جدول Customers) که اطلاعاتشان در جدول Orders نیست، در ستون amount آن‌ها (که این ستون، فیلدی از جدول Orders است)، هیچ مقداری وجود ندارد.

دستور RIGHT JOIN در SELECT اس کیو ال

دستور RIGHT JOIN نیز نوع دیگری از دستور JOIN است که از آن برای استخراج اطلاعات از دو جدول متصل به هم استفاده می‌شود. اتصال بین این جداول را می‌توان بر اساس ستون مشترکشان برقرار کرد. دستور RIGHT JOIN نیز همانند دستور INNER JOIN به منظور بازیابی اطلاعات مشترک دو جدول استفاده می‌شود. علاوه بر اطلاعات مشترک دو جدول، دستور RIGHT JOIN کلیه اطلاعات یکی از جداول را نیز در خروجی برمی‌گرداند. جدولی که کلیه اطلاعات آن در خروجی بازگردانده می‌شود،‌ جدولی است که در مقابل کلمه کلیدی ON، در سمت راست علامت مساوی قرار می‌گیرد. در ادامه، قاعده نحوی دستور RIGHT JOIN آمده است.

SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

بر اساس قاعده نحوی بالا، جدول سمت راست، جدول table۲ است که در سمت راست علامت =  در مقابل کلمه کلیدی ON نوشته می‌شود. به منظور درک بهتر عملکرد دستور RIGHT JOIN به ارائه مثالی در SQL پرداخته‌ایم. جدول‌های Customers و Orders را با مقادیر داده‌های زیر در نظر بگیرید.

مثالی از RIGHT JOIN در دستور Select در SQL
مثالی از RIGHT JOIN در دستور SELECT در SQL

به منظور استخراج اطلاعات کلیه سفارشات از جدول Orders و اطلاعات مشتریانی که محصولی خریداری کرده‌اند، می‌توان از دستور RIGHT JOIN استفاده کرد. در این مثال،‌ جدولی که کلیه اطلاعاتش در خروجی بازگردانده می‌شود،‌ جدول Orders است که در هنگام اتصال دو جدول Customers و Orders، باید نام آن در سمت راست علامت = در مقابل کلمه کلیدی ON قرار بگیرد.

SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
RIGHT JOIN Orders
ON Customers.customer_id = Orders.customer;

خروجی دستور بالا در ادامه آمده است. بر اساس این خروجی، کلیه سطرهای مربوط به فیلد amount از جدول Orders بازیابی شده‌اند. به‌علاوه، اطلاعات مشتریانی که خریدی انجام داده‌اند و اطلاعات آن‌ها در جدول Orders ثبت شده است، در خروجی نیز بازگردانده می‌شود. مقادیر خروجی فیلدهای customer_id و first_name مربوط به سفارشاتی که در جدول Orders ثبت شده‌اند اما اطلاعات آن‌ها در جدول Customers وجود ندارد، با دستور RIGHT JOIN با تهی مقداردهی می‌شوند.

دستور FULL OUTER JOIN

دستور FULL OUTER JOIN نیز نوع دیگری از دستور JOIN است که از آن برای استخراج اطلاعات از دو جدول متصل به هم استفاده می‌شود. اتصال بین این جداول را نیز می‌توان بر اساس ستون مشترکشان برقرار کرد. با استفاده از این دستور می‌توان کلیه داده‌های هر دو جدول را در خروجی بازگرداند. چنانچه سطرهای هر از جداول، دارای فیلد مشترکی با جدول دیگر نباشد، در خروجی، مقدار تهی برای آن فیلدها درنظر گرفته می‌شود. قاعده نحوی دستور FULL OUTER JOIN به‌صورت زیر است.

SELECT columns
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name;

به منظور درک بهتر عملکرد دستور FULL OUTER JOIN در ادامه به ارائه مثالی در SQL پرداخته می‌شود. جدول‌های Customers و Orders را با داده‌های زیر در نظر بگیرید.

مثالی از FULL OUTER JOIN در دستور Select در SQL

به منظور استخراج کلیه داده‌ها از هر دو جدول، می‌توان از دستور FULL OUTER JOIN به صورت زیر استفاده کرد.

SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
FULL OUTER JOIN Orders
ON Customers.customer_id = Orders.customer;

خروجی دستور بالا در ادامه ملاحظه می‌شود. بر اساس این خروجی، کلیه سطرهای مربوط به هر دو جدول Orders و Customers بازیابی شده‌اند. با استفاده از دستور FULL OUTER JOIN در سطرهایی از هر دو جدول که بر اساس کلید خارجی، اشتراکاتی ندارند، مقدار ستون‌های جدول متناظر آن‌ها برابر با تهی درنظر گرفته می‌شود.

دستور CROSS JOIN برای SELECT در SQL

از دستور CROSS JOIN می‌توان به منظور ترکیب داده‌های دو جدول به نحوی استفاده کرد که هر سطر از جدول اول، در ترکیب با هر سطر از جدول دوم قرار گیرد و در خروجی، تمامی حالات ترکیب سطرهای هر دو جدول بازیابی شوند.

بدین‌ترتیب، چنانچه جدول اول دارای دو سطر و جدول دوم دارای سه سطر باشند، خروجی دستور CROSS JOIN جدولی خواهد بود که دارای شش سطر ترکیبی از جدول اول و دوم است. قاعده نحوی این دستور در ادامه ملاحظه می‌شود.

SELECT TableName1.columnName1, TableName2.columnName2 
FROM TableName1 
CROSS JOIN TableName2 
ON TableName1.ColumnName = TableName2.ColumnName;    

به منظور درک بهتر عملکرد دستور CROSS JOIN در ادامه مثالی در SQL ارائه شده است؛ جدول‌های Employee و Department را با مقادیر داده‌های زیر در نظر بگیرید.

به منظور استخراج اطلاعات از این دو جدول با استفاده از دستور CROSS JOIN می‌توان از دستور زیر استفاده کرد.

SELECT *
FROM Employee 
CROSS JOIN Department;  

خروجی دستور بالا در ادامه ملاحظه می‌شود.

خروجی دستور CROSS JOIN (به منظور بزرگ‌نمایی تصویر، بر روی آن کلیک کنید)

همان‌طور که در خروجی دستور CROSS JOIN آمده است، هر سطر از جدول Employee در ترکیب با هر سطر از جدول Department قرار می‌گیرد.

جمع‌بندی

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

ارسال دیدگاه

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