دستور SELECT در SQL – راهنمای استفاده به زبان ساده + مثال
زبان «پرس و جوی ساختاریافته» (Structured Query Language) یا به اختصار، زبان SQL، به عنوان یکی از مهمترین و محبوبترین زبانها به حساب میآید که از آن برای انجام عملیات مختلف بر روی دادههای ذخیره شده در پایگاههای داده استفاده میشود. این زبان، دارای دستورات مختلفی برای کار با دادهها است که دستور SELECT در SQL به عنوان یکی از پرکاربردترین آنها شناخته میشود. این دستور برای بازیابی اطلاعات مختلف از جداول موجود در پایگاه داده کاربرد دارد. در مطلب حاضر، پس از ارائه توضیح مختصری پیرامون پایگاه داده و جزء اصلی آن، یعنی جدول، و شرح مختصری از رایجترین دستورات زبان SQL، به روشهای مختلف استخراج اطلاعات از جدولها با استفاده از دستور SELECT در SQL پرداخته میشود.
پایگاه داده چیست ؟
پایگاه داده یا بانک اطلاعاتی بستری را برای ذخیره مجموعهای از دادهها به صورت ساختاریافته و در قالب جداول فراهم میکند و این قابلیت را به کاربران میدهد تا بتوانند دادههای مورد نیاز خود را بازیابی کنند. همچنین، میتوان دادههای ذخیره شده در پایگاههای داده را ویرایش، بهروزرسانی و مدیریت کرد. برخی از پرکاربردترین و رایجترین پایگاههای داده در ادامه فهرست شدهاند:
- Oracle
- MySQL
- PostgreSQL
- MS SQL Server
- SQLite
یکی از انواع پایگاههای داده، «پایگاه داده رابطهای» (Relational Database) است. در این نوع پایگاه داده، دادههایی که به هم مرتبط هستند، در جداول مختلف ذخیره میشوند و بر اساس دادههای مشترک جداول، رابطهای میان جداول پایگاه داده وجود دارد.
در ادامه، به شرح مختصری پیرامون جداول پایگاه داده پرداخته میشود.
جدول در پایگاه داده چیست ؟
جداول به عنوان اشیای پایگاه داده تلقی میشوند که دادهها را بهصورت ساختاریافته در خود ذخیره میکنند. هر جدول شامل تعدادی سطر و ستون است. به هر سطر جدول، «رکورد» (Record) گفته میشود که اطلاعات منحصربفرد یک «موجودیت» (Entity) را دربر میگیرد. هر یک از ستونهای جداول نیز ویژگیهای تعریف شده را برای هر سطر نشان میدهند. به عنوان مثال، جدول اطلاعات دانشآموزان، نمونهای از جدول در پایگاه داده است.
در جدول فوق، هر سطر مربوط به اطلاعات یک موجودیت است (در این مثال منظور از موجودیتها، دانشآموزان هستند) و ستونهای جدول، ویژگیهای موجودیت را نشان میدهند. در پایگاه داده، مفهوم دیگری به نام «کلید» (Key) نیز وجود دارد که در هنگام ساخت جدول باید انواع کلیدها مشخص شوند. در پایگاههای داده رابطهای، معمولاً یک ستون از جدول را به مقادیر منحصربهفردی اختصاص میدهند که با آن بتوان به هر یک از سطرها دسترسی داشت و به آن ستون، «کلید اصلی» (Primary Key) گفته میشود. به عبارتی، مقادیر این ستون، غیرتکراری هستند و به منظور ایجاد ارتباط بین جدولهای مختلف در پایگاه داده، از مقادیر این ستونها استفاده میشود. در جدول بالا، ستون stud_id میتواند به عنوان کلید اصلی جدول Students محسوب شود.
فرض کنید علاوهبر جدول Students، جدول دیگری با نام Departments وجود دارد که اطلاعات دانشکدهها و دانشآموزان هر دانشکده را ذخیره میکند. در این جدول، ستونی با نام stud_id نیز تعریف شده است که مقادیر آن با توجه به مقادیر ستون stud_id جدول Students مقداردهی میشود. در این حالت، ستون stud_id در جدول Departments به عنوان «کلید خارجی» (Foreign key) به حساب میآید و ارتباط این دو جدول با استفاده از کلید اصلی (در جدول Students) و کلید خارجی (در جدول Departments) برقرار میشود.
به منظور دسترسی به دادههای جداول و اعمال عملیات مختلف بر روی آنها، از «زبان پرس و جوی | ساختاریافته» (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 میتوان به منظور بازیابی اطلاعات مورد نظر از یک جدول استفاده کرد. در این حالت، میتوان برای استخراج اطلاعات از جدول مورد نظر، حالات مختلفی را در نظر گرفت که در ادامه به فهرستی از این حالات اشاره شده است.
- بازیابی تمامی اطلاعات موجود در جدول
- نمایش برخی از ستونهای جداول پایگاه داده
- استخراج اطلاعات غیرتکراری از جدول 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 به کار برد، استفاده از علامت *
به جای نوشتن نام تمامی ستونهای جدول در مقابل دستور SELECT در SQL است. وقتی بخواهیم از همه ستونها استفاده کنیم، این روش را در پی میگیریم. در ادامه، نحوه بازیابی کل اطلاعات جدول با استفاده از این علامت در دستور SELECT ملاحظه میشود.
SELECT *
FROM Students;
خروجی این دستور، مشابه با خروجی دستور قبل است که از نام همه ستونها برای بازیابی اطلاعات کل جدول استفاده شد.
استخراج برخی ستون های جدول با دستور SELECT در SQL
به منظور بازیابی اطلاعات برخی از ستونهای جدول میتوان در مقابل دستور SELECT، فقط نام ستونهای مورد نظر را نوشت. در ادامه، مثالی از SQL برای بازیابی اطلاعات دو ستون Student_Id و First_Name از جدول Students ارائه شده است.
SELECT Student_Id, First_Name
FROM Students;
خروجی دستور بالا در ادامه ملاحظه میشود.
استخراج اطلاعات غیرتکراری از جدول SQL با دستور DISTINCT
چنانچه لازم باشد سطرهایی از جدول SQL استخراج شوند که مقادیر یکی از ستونهای آن غیرتکراری باشد، از عبارت کلیدی DISTINCT در دستور SELECT استفاده میشود. قاعده نحوی این دستور در ادامه ملاحظه میشود.
SELECT DISTINCT column_name
FROM table_name;
در ادامه جدولی با نام Customers با دادههای آن ملاحظه میشود.
به منظور استخراج نام تمامی کشورهای غیرتکراری از این جدول، میتوان از کلمه کلیدی DISTINCT در دستور SELECT به صورت زیر استفاده کرد.
SELECT DISTINCT country
FROM Customers;
خروجی دستور بالا در ادامه ملاحظه میشود.
نمایش چندین سطر ابتدایی جدول SQL با دستور TOP
با استفاده از دستور TOP در SQL میتوان چندین سطر نخست جدول را بازیابی کرد. این دستور مناسب زمانی است که جدول، سطرهای زیادی دارد و نیاز است که تنها اطلاعات چند سطر از آن بررسی شود. قاعده نحوی این دستور در ادامه آمده است.
SELECT TOP number | percent column_Name1, column_Name2, ....., column_NameN
FROM table_name
WHERE [Condition] ;
جدول Cars را با دادههای زیر در نظر بگیرید.
از این جدول میتوان سه سطر نخست آن را با دستور زیر استخراج کرد.
SELECT TOP 3 Car_Name, Car_Color
FROM Cars;
در ادامه خروجی دستور بالا ملاحظه میشود.
نمایش اولین و آخرین مقادیر ستونهای جدول SQL با دستور FIRST و LAST
با دستور FIRST و LAST در دستور SELECT میتوان اولین و آخرین مقادیر ستون مورد نظر خود را بازیابی کرد. قاعده نحوی این دستورات در ادامه ملاحظه میشوند.
SELECT FIRST/LAST(customer_name) AS first_customer
FROM customers;
به عنوان مثال، جدولی با نام Customers را در نظر بگیرید که شامل دادههای زیر است.
با استفاده از دستور 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()
- SUM()
- AVG()
- MIN()
- MAX()
در ادامه، به توضیح کاربرد هر یک از توابع تجمیعی ذکر شده، به همراه مثال پرداخته میشود.
تابع COUNT در دستور SELECT
تابع COUNT تعداد سطرها را در خروجی برمیگرداند. میتوان قاعده نحوی زیر را به منظور استفاده از تابع COUNT دستور SELECT در SQL به کار برد.
SELECT COUNT(column_Name)
FROM Table_Name;
به منظور درک بهتر عملکرد این تابع، میتوان مثالی از آن ارائه کرد. جدول Customers را با دادههای زیر درنظر بگیرید.
با دستور زیر، میتوان با استفاده از تابع COUNT، مقدار تعداد سطرهای جدول را در خروجی بازگرداند.
SELECT COUNT(*)
FROM Customers;
خروجی دستور بالا در ادامه ملاحظه میشود.
همچنین، میتوان برای ستونی که در خروجی نشان داده میشود، «نام مستعاری» (Alias) درنظر گرفت. بدین منظور، میتوان از کلمه کلیدی AS استفاده کرد و بعد از آن نام مستعار را تعریف کرد. در ادامه، مثالی از کاربرد نام مستعار برای نمایش خروجی تابع COUNT ملاحظه میشود.
SELECT COUNT(*) AS total_customers
FROM Customers;
خروجی دستور بالا در ادامه آمده است.
تابع SUM در دستور SELECT
از تابع SUM به منظور جمع مقادیر یک ستون استفاده میشود. سینتکس این تابع در دستور SELECT به صورت زیر است.
SELECT SUM (Column_Name)
FROM Table_Name
به منظور درک بهتر چگونگی عملکرد این تابع، میتوان مثالی از آن ارائه کرد؛ جدول Orders را با دادههای زیر درنظر بگیرید.
با دستور زیر، میتوان به وسیله تابع SUM مقدار کل سفارشات مشتریان را در خروجی بازگرداند.
SELECT SUM(amount) AS total_sales
FROM Orders;
خروجی دستور بالا در ادامه ملاحظه میشود.
تابع AVG در دستور SELECT
تابع AVG یکی دیگر از توابع تجمیعی در SQL محسوب میشود که از آن میتوان برای محاسبه میانگین مقادیر یک ستون استفاده کرد. قاعده نحوی این تابع در دستور SELECT به صورت زیر است.
SELECT AVG(Numerical_Column_Name)
FROM Table_Name ;
به منظور درک بهتر عملکرد تابع AVG، میتوان مثالی از آن ارائه کرد؛ جدول Customers را با دادههای زیر درنظر بگیرید.
با استفاده از تابع تجمیعی AVG میتوان میانگین سن مشتریان را به وسیله دستور زیر محاسبه کرد.
SELECT AVG(age) AS average_age
FROM Customers;
خروجی دستور بالا بهصورت زیر است.
تابع MIN برای دستور SELECT در SQL
تابع MIN نیز به عنوان یکی دیگر از توابع تجمیعی در SQL محسوب میشود که از آن میتوان برای یافتن کوچکترین مقدار یک ستون استفاده کرد. سینتکس این تابع در دستور SELECT به صورت زیر است.
SELECT MIN(Numerical_Column_Name)
FROM Table_Name ;
به منظور کسب درک بهتر از عملکرد این تابع، میتوان به عنوان مثال جدول Customers را با دادههای زیر درنظر گرفت.
با استفاده از تابع تجمیعی MIN میتوان کمسنترین مشتری را با دستور زیر از جدول Customers استخراج کرد.
SELECT MIN(age)
FROM Customers;
خروجی دستور بالا در ادامه ملاحظه میشود.
تابع MAX در دستور SELECT
تابع MAX نیز به عنوان یکی دیگر از توابع تجمیعی در SQL محسوب میشود که از آن میتوان برای پیدا کردن بزرگترین مقدار یک ستون استفاده کرد. قاعده نحوی این تابع در دستور SELECT بهصورت زیر است.
SELECT MAX(Numerical_Column_Name)
FROM Table_Name ;
به منظور کسب درک بهتر از نحوه عملکرد این تابع، جدول Customers را با دادههای زیر درنظر بگیرید.
به وسیله تابع تجمیعی MAX میتوان مشتری با بیشترین سن را با دستور زیر از جدول Customers استخراج کرد.
SELECT MAX(age)
FROM Customers;
خروجی دستور بالا در ادامه ملاحظه میشود.
در ادامه، پس از معرفی فیلمهای آموزشی مرتبط با پایگاه داده، به توضیح سایر روشهای بازیابی اطلاعات با استفاده از دستور SELECT در SQL پرداخته میشود.
معرفی فیلم های آموزش پایگاه داده
دورههای آموزش آنلاین به عنوان یکی از بهترین روشهای یادگیری مهارتهای مختلف برای تمامی افراد محسوب میشوند، زیرا این امکان را برای علاقهمندان به یادگیری موضوعات مختلف فراهم میکنند تا در هر مکان و در هر ساعت از شبانه روز به یادگیری مطالب جدید بپردازند و فیلمهای آموزشی را چندین بار مشاهده کنند تا در نهایت به درک جامعی از مفاهیم دست یابند. در وب سایت تم آف، یکی از کاربردیترین و جامعترین مجموعههای آموزشی، با عنوان «مجموعه آموزشهای پایگاه داده» فراهم و گردآوری شده است تا افراد مشتاق به حوزه برنامه نویسی پایگاه داده با زبان 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 پرداخته میشود.
آموزش SQL Server Management Studio | کامل، رایگان و گام به گام
کاربرد عملگرهای مقایسه ای دستور SELECT در SQL چیست ؟
یکی از سادهترین روشهای تعریف شرط در دستور SELECT، استفاده از عملگرهای مقایسهای است. از این عملگرها میتوان برای مقایسه مقادیر فیلدها یا همان ستونهای جدول با مقدار مد نظر خود استفاده کرد. مقدار مشخص شده برای مقایسه میتواند از نوع عددی یا نوع رشتهای باشد. در ادامه مطلب حاضر، به توضیح کاربرد هر یک از عملگرهای مقایسهای به همراه مثال پرداخته شده است.
عملگر مساوی برای تعریف شرط در دستور SELECT
با استفاده از عملگر مساوی میتوان سطرهای جدولی را با دستور SELECT در SQL استخراج کرد که مقدار یکی از ستونهای آنها برابر با مقدار تعیین شده باشد. به عنوان مثال، جدول Orders را در نظر بگیرید که پنج رکورد از اطلاعات سفارشات مشتریان را به صورت زیر شامل میشود.
با استفاده از عملگر مساوی میتوان تمامی اطلاعات خرید مشتریان را از جدول Orders استخراج کرد که مقدار ستون amount برای آنها برابر با عدد 400 باشد.
SELECT *
FROM Orders
WHERE amount = 400;
خروجی دستور بالا در ادامه ملاحظه میشود.
در دستور فوق میتوان به جای علامت *
، نام ستونهایی را نوشت که میخواهیم در خروجی نشان داده شوند. به عنوان مثال، میتوان اطلاعات order_id ،item و amount سفارشاتی را از جدول Orders بهصورت زیر بازیابی کرد که مقدار ستون amount برای آنها برابر با عدد 400 باشد.
SELECT order_id, item, amount
FROM Orders
WHERE amount = 400;
خروجی دستور بالا در ادامه نشان داده شده است.
عملگر کوچکتر برای تعریف شرط در دستور SELECT
با استفاده از عملگر کوچکتر (
) میتوان سطرهایی را از جدول بازیابی کرد که مقدار ستون مشخص شده آن، کمتر از مقدار تعیین شده باشد. در ادامه، مثالی از جدول Orders ارائه شده است. در این مثال آن اطلاعات سفارشاتی استخراج میشوند که مقدار فیلد amount آنها از مقدار 400 کمتر باشند.
SELECT order_id, item, amount
FROM Orders
WHERE amount
تصویر مربوط به خروجی دستور فوق در ادامه ارائه شده است.
همانطور که در خروجی آمده، دو سطر از جدول Orders، برای فیلد amount دارای مقادیری کمتر از عدد 400 هستند که با استفاده از عملگر کوچکتر، در خروجی بازیابی شدهاند.
عملگر بزرگتر برای تعریف شرط در دستور SELECT
با استفاده از عملگر بزرگتر ( >
) میتوان سطرهایی را از جدول بازیابی کرد که مقدار ستون مشخص شده آن، بزرگتر از مقدار تعیین شده باشد. در ادامه، مثالی از جدول Orders ارائه شده است. در این مثال اطلاعات سفارشاتی استخراج میشوند که مقدار فیلد amount برای آنها از مقدار 400 بیشتر باشد.
SELECT order_id, item, amount
FROM Orders
WHERE amount > 400;
خروجی دستور بالا در ادامه ملاحظه میشود.
عملگر کوچکتر مساوی برای تعریف شرط در دستور SELECT
با استفاده از عملگر کوچکتر مساوی (
) میتوان سطرهایی را از جدول بازیابی کرد که مقدار ستون مشخص شده در آنها، کوچکتر مساوی با مقدار تعیین شده باشد. در مثال زیر، اطلاعات سفارشاتی استخراج میشوند که مقدار فیلد amount برای آنها کوچکتر مساوی با عدد 400 است.
SELECT order_id, item, amount
FROM Orders
WHERE amount
در ادامه، خروجی دستور بالا ملاحظه میشود.
عملگر بزرگتر مساوی برای تعریف شرط در دستور SELECT
با استفاده از عملگر بزرگتر مساوی ( >=
) میتوان سطرهایی را از جدول بازیابی کرد که مقدار ستون مشخص شده آن، بزرگتر مساوی با مقدار تعیین شده باشد. در ادامه، مثالی از جدول Orders ارائه شده است که در آن اطلاعات سفارشاتی استخراج میشوند که مقدار فیلد amount برای آنها بزرگتر مساوی با عدد 400 است.
SELECT order_id, item, amount
FROM Orders
WHERE amount >= 400;
در ادامه، خروجی قطعه کد بالا ملاحظه میشود.
عملگر نامساوی برای تعریف شرط در دستور SELECT
با استفاده از عملگرهای نامساوی ( !=
) یا ( ) میتوان سطرهایی را از جدول بازیابی کرد که مقدار ستون مشخص شده آن، برابر با مقدار تعیین شده نباشد. در ادامه، مثالی از جدول Orders ارائه شده است که اطلاعات سفارشاتی را استخراج میکند که مقدار فیلد amount آنها برابر با عدد 400 نباشند.
SELECT order_id, item, amount
FROM Orders
WHERE amount != 400;
خروجی قطعه کد بالا در ادامه آمده است.
عملگرهای منطقی دستور SELECT در SQL چیست ؟
از عملگرهای منطقی به منظور بازیابی رکوردهایی از جدول SQL استفاده میشود که با شرط تعریف شده مطابقت داشته باشند. خروجی این عملگرها مقادیر TRUE و FALSE هستند و چنانچه مقدار خروجی شرط بررسی شده برابر با TRUE باشد، دستور SELECT اطلاعاتی را از سطر جدول بازیابی میکند. در ادامه، به توضیح کاربرد انواع عملگرهای منطقی دستور SELECT در SQL به همراه مثال پرداخته شده است.
SQL چیست ؟ – اس کیو ال به زبان ساده + راهنمای شروع
عملگر AND در دستور SELECT
از عملگر AND به منظور بررسی چندین شرط استفاده میشود. اگر مقادیر فیلدهای سطری از جدول با تمامی شرطها مطابقت داشته باشند، آن سطر از جدول با استفاده از دستور SELECT در SQL بازیابی میشود. مثال زیر، جدولی به نام Customers را نشان میدهد که شامل اطلاعات مشتریان است.
در ادامه، دستوری برای استخراج سطرهایی از جدول Customers با استفاده از عملگر AND نوشته شده است. بر اساس این قطعه کد، سطرهایی از جدول بازیابی میشوند که مقادیر ستونهای country و last_name در آنها به ترتیب برابر با USA و Doe باشند.
SELECT first_name, last_name
FROM Customers
WHERE country = 'USA' AND last_name = 'Doe';
خروجی دستور بالا در ادامه آمده است.
عملگر 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';
خروجی دستور بالا به صورت زیر است.
عملگر NOT در دستور SELECT
از عملگر NOT به منظور بازیابی سطرهایی از جدول استفاده میشود که مقدار فیلد مورد نظر آنها برابر با عبارت مشخص شده در شرط نباشد. خاطرنشان میشود به جای عملگر NOT میتوان از عملگر مقایسهای
یا !=
نیز استفاده کرد. در ادامه، قطعه کدی برای استخراج سطرهایی از جدول Customers با استفاده از عملگر NOT نوشته شده است. بر اساس این قطعه کد، سطرهایی از جدول بازیابی میشوند که مقادیر فیلد country آنها برابر با مقدار USA نباشند.
SELECT first_name, last_name
FROM Customers
WHERE NOT country = 'USA';
خروجی دستور بالا در ادامه ارائه شده است.
عملگر BETWEEN دستور SELECT
از عملگر منطقی BETWEEN در دستور SELECT زمانی استفاده میشود که نیاز است برای بازیابی سطری از جدول، محدودهای از مقادیر با مقدار ستونی از جدول مقایسه شوند. اگر مقدار ستون در محدوده تعریف شده قرار گیرد، اطلاعات آن سطر در خروجی بازگردانده میشود. به منظور ارائه مثالی از عملگر BETWEEN، میتوان از جدول Orders استفاده کرد که اطلاعات سفارشات مشتریان را شامل میشود.
با در اختیار داشتن دادههای جدول Orders، میتوان سطرهایی از جدول را در خروجی نمایش داد که مقادیر فیلد amount در آنها بین 300 تا 500 باشند. قطعه کدی که برای بازیابی چنین اطلاعاتی استفاده میشود، در ادامه ملاحظه میشود.
SELECT item, amount
FROM Orders
WHERE amount BETWEEN 300 AND 500;
با اجرای دستور بالا، خروجی بهصورت زیر خواهد بود.
همچنین، میتوان با استفاده از عملگر NOT و BETWEEN در دستور SELECT، سطرهایی از جدول را استخراج کرد که مقادیر فیلد مشخص شده، در محدوده تعیین شده قرار نگیرد. در ادامه، مثالی از نحوه کاربرد عملگرهای NOT و BETWEEN بهطور همزمان ارائه شده است. بر اساس این قطعه کد، سطرهایی از جدول استخراج میشوند که مقادیر ستون amount در آنها بین 300 تا 500 نباشند.
SELECT item, amount
FROM Orders
WHERE amount NOT BETWEEN 300 AND 500;
خروجی دستور بالا در ادامه ملاحظه میشود.
از عملگر BETWEEN میتوان برای گذاشتن شرط بر روی مقادیر رشتهای نیز استفاده کرد. به عنوان مثال، قطعه کد زیر را درنظر بگیرید.
SELECT item, amount
FROM Orders
WHERE item BETWEEN 'I' AND 'M';
با استفاده از دستور بالا، سطرهایی از جدول Orders انتخاب میشوند که اولین کاراکتر مقدار فیلد item آنها، یکی از حروف I ،J ،K و L باشد. خروجی دستور بالا در ادامه ملاحظه میشود.
خاطرنشان میشود مقادیر فیلد item که با حرف M آغاز شده باشند، از جدول بازیابی نمیشوند. اگر بخواهیم مقادیری از ستون item بازیابی شوند که با حروف M نیز آغاز شده باشند، میتوان از علامت ~
بهصورت زیر استفاده کرد.
SELECT item, amount
FROM Orders
WHERE item BETWEEN 'I' AND 'M~';
خروجی دستور بالا در ادامه ملاحظه میشود.
بر اساس تصویر بالا، مقادیری از ستون item که با حرف M نیز آغاز شدهاند، در خروجی مشاهده میشوند.
اتصال رشتهها در SQL و روشهای استفاده هوشمند از آن
عملگر LIKE دستور SELECT
از عملگر LIKE به منظور استخراج سطرهایی از جدول استفاده میشود که مقدار فیلد مشخص شده آنها، مشابه با الگوی متنی تعریف شده توسط این عملگر باشد. در دستور زیر، مثالی از نحوه کاربرد این عملگر ارائه شده است. بر اساس این دستور، سطرهایی از جدول Customers در خروجی بازگردانده میشوند که مقدار فیلد country آنها برابر با «UK» باشد.
SELECT *
FROM Customers
WHERE country LIKE 'UK';
خروجی دستور بالا در ادامه ملاحظه میشود.
از عملگر LIKE نیز میتوان برای تعریف الگوهای متنی استفاده کرد. به عنوان مثال، بر اساس قطعه کد زیر، سطرهایی از جدول Customers استخراج میشوند که مقدار فیلد last_name در آنها با حرف R آغاز شده باشد. علامت %
میتواند شامل یک یا چند کاراکتر بعد از حرف R باشد.
SELECT *
FROM Customers
WHERE last_name LIKE 'R%';
خروجی دستور بالا بهصورت زیر است.
از علامت _
نیز میتوان برای مشخص کردن تنها یک کاراکتر استفاده کرد. در دستور زیر، نحوه استفاده از این علامت برای تعریف الگوی متنی با دستور LIKE نشان داده شده است.
SELECT *
FROM Customers
WHERE country LIKE 'U_';
طبق دستور بالا، سطرهایی از جدول Customers بازیابی میشوند که مقدار فیلد country آنها با کاراکتر U آغاز شده و دارای دو حرف باشد. خروجی این قطعه کد در ادامه ملاحظه میشود.
عملگر IS NULL دستور SELECT
از عملگر IS NULL در دستور SELECT برای بررسی NULL بودن فیلد خاصی از جدول استفاده میشود. به عبارتی، این عملگر، سطرهایی از جدول را استخراج میکند که مقدار فیلد مشخص شده آنها برابر با NULL باشد. جدول Employee را درنظر بگیرید که شامل دادههای زیر است.
در ادامه، قطعه کدی از نحوه کاربرد این عملگر ارائه شده است. بر اساس این دستور، سطرهایی از جدول Employee بازیابی میشوند که مقدار فیلد email آنها برابر با NULL باشد.
SELECT *
FROM Employee
WHERE email IS NULL;
خروجی دستور بالا به صورت زیر است.
عملگر IS NULL را میتوان با عملگر NOT ترکیب کرد و برای استخراج سطرهایی از جدول از آن استفاده کرد که مقدار فیلد مشخص شده آنها برابر با NULL نباشد. در ادامه، نحوه کاربرد این عملگر ترکیبی برای بازیابی سطرهای جدول Employee با مقادیر غیر NULL از ستون email ارائه شده است.
SELECT *
FROM Employee
WHERE email IS NOT NULL;
خروجی دستور فوق در ادامه ملاحظه میشود.
عملگرهایی که تا اینجا توضیح داده شدند، بر روی یک جدول در SQL قابل اجرا بودند. در ادامه مطلب حاضر، به توضیح عملگرهای منطقی ANY ،ALL ،EXISTS و IN پرداخته میشود که برای استخراج اطلاعات، به دادههای دو جدول احتیاج دارند و باید دو دستور SQL را با استفاده از این عملگرها با یکدیگر ترکیب کرد.
عملگر ANY دستور SELECT
عملگر ANY نوعی از عملگرهای منطقی در SQL محسوب میشود که با استفاده از آن میتوان دستورات ترکیبی نوشت. عملگر ANY مقداری را از جدول اول با تمامی مقادیر جدول مقایسه میکند و سطرهایی را از جدول اول استخراج میکند که مقادیر فیلد آن جدول بر اساس شرط مشخص شده، با مقادیر هر یک از فیلدهای مشابه از جدول دوم مطابقت داشته باشد. مثال زیر را برای درک نحوه عملکرد عملگر ANY درنظر بگیرید.
در این مثال، دو جدول 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 درنظر بگیرید.
در این مثال، دو جدول 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
);
خروجی دستور بالا در ادامه آمده است.
همانطور که ملاحظه میشود، در خروجی فقط اطلاعات افرادی از جدول 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
);
خروجی دستور بالا به صورت زیر است.
عملگر IN دستور SELECT
از عملگر منطقی IN میتوان برای تعریف لیستی از مقادیر استفاده و سطرهایی را از جدول مورد نظر با دستور SELECT استخراج کرد که مقادیر فیلدی از جدول، برابر با یکی از آیتمهای لیست تعریف شده توسط عملگر IN باشد. به منظور درک بهتر کاربرد عملگر IN در SQL میتوان مثالی کاربردی را ارائه کرد؛ جدول Customers را با دادههای زیر درنظر بگیرید:
با استفاده از عملگر IN میتوان اطلاعات مشتریانی را از این جدول استخراج کرد که آدرس آنها USA و UK باشد. به منظور بازیابی چنین سطرهایی میتوان از دستور زیر استفاده کرد.
SELECT first_name, country
FROM Customers
WHERE country IN ('USA', 'UK');
خروجی دستور بالا در ادامه ملاحظه میشود.
با ترکیب دستور IN و NOT نیز میتوان اطلاعات مشتریانی را از جدول Customers استخراج کرد که مقدار فیلد مشخص شده با آیتمهای تعریف شده توسط عملگر IN مطابقت نداشته باشد. در ادامه، نحوه کاربرد دو عملگر IN و NOT ارائه شده است.
SELECT first_name, country
FROM Customers
WHERE country NOT IN ('UK', 'UAE');
با استفاده از دستور بالا، سطرهایی از جدول Customers بازیابی میشوند که آدرس آنها UK و UAE نباشد. در ادامه، خروجی دستور بالا ملاحظه میشود.
در ادامه مطلب حاضر، به توضیح کاربرد دستور 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 با دادههای آن را درنظر بگیرید:
با استفاده از دستور GROUP BY میتوان هر سطر از جدول را بر اساس ستون country گروهبندی و تعداد مشتریان هر کشور را با استفاده از تابع تجمیعی COUNT() شمارش کرد. به عبارتی، دستور GROUP BY را میتوان به همراه هر یک از توابع تجمیعی در SQL به کار برد.
SELECT country, COUNT(customer_id)
FROM Customers
GROUP BY country;
خروجی دستور بالا در ادامه ملاحظه ارائه شده است.
به منظور گروهبندی اطلاعات جدول با استفاده از دستور GROUP BY، میتوان بیش از یک ستون را برای دستهبندی اطلاعات مدنظر قرار داد. جدول Persons را با دادههای زیر درنظر بگیرید.
با دستور GROUP BY میتوان از دادههای جدول Persons، شهرهای هر کشور را استخراج کرد. بدین منظور باید دستور GROUP BY را برای گروهبندی دو ستون country و state به کار برد تا در وهله اول، اطلاعات جدول بر اساس نام کشورها گروهبندی شوند و سپس به ازای هر کشور، دستهبندی جدیدی بر روی شهرهای آنها انجام شود. میتوان از دستور SQL زیر برای این منظور استفاده کرد.
SELECT country, state
FROM Persons
GROUP BY country, state;
خروجی دستور بالا در ادامه ملاحظه میشود.
کاربرد دستور 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 را با دادههای زیر درنظر بگیرید.
هدف این است که تعداد مشتریان به ازای هر کشور محاسبه شوند و در نهایت نام کشورهایی که بیش از 1 مشتری دارند، در خروجی نمایش داده شوند. بدین منظور، باید از تابع تجمیعی COUNT و دستور GROUP BY بهطور همزمان استفاده کرد تا گروهبندی افراد بر اساس نام کشورها انجام و سپس تعداد مشتریان از هر کشور شمرده شود. سپس، با اعمال شرط بر روی تعداد مشتریان هر کشور با استفاده از دستور HAVING میتوان خروجی مدنظر خود را بدست آورد. دستور زیر، نحوه استفاده از HAVING را نشان میدهد.
SELECT COUNT(customer_id), country
FROM Customers
GROUP BY country
HAVING COUNT(customer_id) > 1;
خروجی دستور بالا در ادامه آمده است.
تفاوت دستور 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 مرتب کرد.
بدین منظور، میتوان از دستور زیر برای مرتب کردن دادهها استفاده کرد.
SELECT *
FROM Customers
ORDER BY first_name;
خروجی دستور بالا در ادامه ملاحظه میشود.
همچنین، میتوان دادههای جدول 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 به همراه مثال پرداخته میشود.
دستور Join و انواع آن در SQL — راهنمای جامع
دستور 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 را با دادههای زیر درنظر بگیرید.
فیلد 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;
بر اساس قاعده نحوی بالا، جدول سمت چپ، جدول table1 است که در سمت چپ علامت =
در مقابل کلمه کلیدی ON نوشته شده است. به منظور درک بهتر عملکرد دستور LEFT JOIN به مثالی در SQL میپردازیم. جدولهای Customers و Orders را با مقادیر دادههای زیر در نظر بگیرید.
به منظور استخراج اطلاعات مشتریانی که سفارشی را ثبت کردهاند و سایر مشتریانی که هنوز محصولی خریداری نکردهاند، میتوان از دستور 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;
بر اساس قاعده نحوی بالا، جدول سمت راست، جدول table2 است که در سمت راست علامت =
در مقابل کلمه کلیدی ON نوشته میشود. به منظور درک بهتر عملکرد دستور RIGHT JOIN به ارائه مثالی در SQL پرداختهایم. جدولهای Customers و Orders را با مقادیر دادههای زیر در نظر بگیرید.
به منظور استخراج اطلاعات کلیه سفارشات از جدول 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 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 آمده است، هر سطر از جدول Employee در ترکیب با هر سطر از جدول Department قرار میگیرد.
جمعبندی
امروزه، دادههای مهم سازمانها در پایگاههای داده ذخیره میشوند و افراد مشتاق به حیطه کار با دادهها به منظور دسترسی به آنها، اعمال پردازشهای مختلف روی آنها و گزارشگیری از دادههای مربوطه، باید به یکی از زبانهای پایگاه داده تسلط داشته باشند. از آنجا که زبان SQL به عنوان یکی از پرکاربردترین زبانهای پایگاه داده به شمار میرود، در مطلب حاضر سعی شد به توضیح عملکرد یکی از پرکاربردترین دستورات این زبان، یعنی دستور SELECT در SQL پرداخته شود. با استفاده از این دستور میتوان با روشهای مختلف به استخراج اطلاعات از جداول پایگاه داده پرداخت و در این مقاله، سعی بر این شد به توضیح مفصل شیوههای استخراج اطلاعات از یک جدول و بازیابی دادهها از چند جدول به همراه ارائه مثالهای کاربردی پرداخته شود.