دستور SELECT در SQL – راهنمای استفاده به زبان ساده + مثال
- نحوه نوشتن دستور «SELECT» برای استخراج دادههای دلخواه را یاد میگیرید.
- با ساختار جدولها، کلید اصلی و کلید خارجی در پایگاه داده آشنا میشوید.
- کاربرد عملگرهای مقایسهای و منطقی در فیلتر کردن دادهها را میآموزید.
- نحوه بازیابی و خلاصهسازی داده با توابع تجمیعی، «GROUP BY» و «HAVING» را خواهید آموخت.
- قواعد استفاده از «JOIN» برای استخراج داده از چند جدول را یاد خواهید گرفت.
- مهارت مرتبسازی، نمایش سطرها و حذف دادههای تکراری در «SELECT» را میآموزید.

پایگاه داده چیست ؟
- Oracle
- MySQL
- PostgreSQL
- MS SQL Server
- SQLite
در ادامه، به شرح مختصری پیرامون جداول پایگاه داده پرداخته میشود.
جدول در پایگاه داده چیست ؟
جداول به عنوان اشیای پایگاه داده تلقی میشوند که دادهها را بهصورت ساختاریافته در خود ذخیره میکنند. هر جدول شامل تعدادی سطر و ستون است. به هر سطر جدول، «رکورد» (Record) گفته میشود که اطلاعات منحصربفرد یک «موجودیت» (Entity) را دربر میگیرد. هر یک از ستونهای جداول نیز ویژگیهای تعریف شده را برای هر سطر نشان میدهند. به عنوان مثال، جدول اطلاعات دانشآموزان، نمونهای از جدول در پایگاه داده است.


به منظور دسترسی به دادههای جداول و اعمال عملیات مختلف بر روی آنها، از «زبان پرس و جوی | ساختاریافته» (Structured Query Language | SQL) استفاده میشود. در بخش بعدی، به طور مختصر به معرفی این زبان خواهیم پرداخت.
زبان SQL چیست و مهمترین دستورات آن چه هستند؟
مهم ترین دستورات SQL کدامند؟
زبان SQL دارای ۴ دستور مهم و کاربردی برای اعمال تغییرات و بازیابی اطلاعات از جداول موجود در پایگاه داده است که در ادامه به آنها اشاره میشود:
- دستور SELECT در SQL: از این دستور میتوان برای بازیابی اطلاعات از جداول موجود در پایگاه داده استفاده کرد.
- دستور INSERT در SQL: از این دستور به منظور درج سطر جدید در جدول استفاده میشود.
- دستور UPDATE در SQL: این دستور را میتوان برای ویرایش اطلاعات موجود در جدول استفاده کرد.
- دستور DELETE در SQL: این دستور را برای حذف سطری از جدول میتوان به کار برد.

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

بازیابی اطلاعات جدول با دستور SELECT در SQL
از دستور SELECT در SQL میتوان به منظور بازیابی اطلاعات مورد نظر از یک جدول استفاده کرد. در این حالت، میتوان برای استخراج اطلاعات از جدول مورد نظر، حالات مختلفی را در نظر گرفت که در ادامه به فهرستی از این حالات اشاره شده است.
- بازیابی تمامی اطلاعات موجود در جدول
- نمایش برخی از ستونهای جداول پایگاه داده
- استخراج اطلاعات غیرتکراری از جدول SQL با دستور UNIQUE
- نمایش چندین سطر ابتدایی جدول SQL در خروجی با دستور TOP
- نمایش اولین و آخرین مقادیر ستونهای جدول SQL با دستور FIRST و LAST
- بازیابی اطلاعات از جدول SQL با استفاده از «توابع تجمیعی» (Aggregate Functions) در دستور SELECT
- استخراج برخی از سطرهای جدول با استفاده از دستور WHERE در SQL
- بازیابی اطلاعات جدول بهصورت گروهبندی شده با دستور GROUP BY
- استخراج برخی از اطلاعات گروهبندی شده از جدول با استفاده از دستور HAVING در SQL
- بازیابی اطلاعات جدول با ترتیب صعودی و نزولی
در ادامه مطلب حاضر، به توضیح نحوه استفاده از دستور SELECT در SQL برای هر یک از حالات ذکر شده در بالا پرداخته میشود.
استخراج کل اطلاعات جدول با دستور SELECT در SQL
در تمامی دستورات SELECT از دو کلمه کلیدی SELECT و FROM استفاده میشود. در مقابل کلمه کلیدی SELECT، میتوان مشخص کرد که اطلاعات چه ستونهایی از جدول باید بازیابی شوند. با استفاده از کلمه کلیدی FROM نیز میتوان نام جدولی را معین کرد که قرار است دادهها از آن استخراج شوند.
به منظور بازیابی کل اطلاعات جدول با استفاده از دستور SELECT در SQL میتوان نام تمامی ستونهای جدول را مقابل کلمه کلیدی SELECT نوشت. در ادامه، نحوه تعریف دستور SELECT در SQL برای استخراج کل اطلاعات جدول ارائه شده است.
در جدول Students اطلاعات هفت دانشآموز ذخیره شده است که با استفاده از دستور SELECT در SQL میتوان آنها را به صورت زیر بازیابی کرد.

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

استخراج اطلاعات غیرتکراری از جدول SQL با دستور DISTINCT
در ادامه جدولی با نام Customers با دادههای آن ملاحظه میشود.

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

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

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

نمایش اولین و آخرین مقادیر ستونهای جدول SQL با دستور FIRST و LAST
با دستور FIRST و LAST در دستور SELECT میتوان اولین و آخرین مقادیر ستون مورد نظر خود را بازیابی کرد. قاعده نحوی این دستورات در ادامه ملاحظه میشوند.
به عنوان مثال، جدولی با نام Customers را در نظر بگیرید که شامل دادههای زیر است.

با استفاده از دستور SELECT و FIRST میتوان به اولین نام مشتری، یعنی John، در این جدول بهصورت زیر دست پیدا کرد.
همچنین، میتوان با دستور LAST و SELECT در SQL آخرین نام مشتری از جدول Customers، یعنی Betty، را با دستور زیر استخراج کرد.
بازیابی اطلاعات از جدول SQL با توابع تجمیعی در دستور SELECT در SQL
توابع تجمیعی، توابعی هستند که در دستور SELECT به کار میروند و بر روی مقادیر ستون مشخص شده، محاسباتی را انجام میدهند و در نهایت، خروجی را برمیگردانند. از این توابع معمولاً با دستوراتی نظیر GROUP BY و HAVING استفاده میشود که در بخشهای بعدی مطلب حاضر، به کاربرد آنها پرداخته خواهد شد. توابع تجمیعی SQL در ادامه فهرست شدهاند:
- COUNT()
- SUM()
- AVG()
- MIN()
- MAX()
در ادامه، به توضیح کاربرد هر یک از توابع تجمیعی ذکر شده، به همراه مثال پرداخته میشود.
تابع COUNT در دستور SELECT
تابع COUNT تعداد سطرها را در خروجی برمیگرداند. میتوان قاعده نحوی زیر را به منظور استفاده از تابع COUNT دستور SELECT در SQL به کار برد.
به منظور درک بهتر عملکرد این تابع، میتوان مثالی از آن ارائه کرد. جدول Customers را با دادههای زیر درنظر بگیرید.

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

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

تابع SUM در دستور SELECT
از تابع SUM به منظور جمع مقادیر یک ستون استفاده میشود. سینتکس این تابع در دستور SELECT به صورت زیر است.
به منظور درک بهتر چگونگی عملکرد این تابع، میتوان مثالی از آن ارائه کرد؛ جدول Orders را با دادههای زیر درنظر بگیرید.

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

تابع AVG در دستور SELECT
تابع AVG یکی دیگر از توابع تجمیعی در SQL محسوب میشود که از آن میتوان برای محاسبه میانگین مقادیر یک ستون استفاده کرد. قاعده نحوی این تابع در دستور SELECT به صورت زیر است.
به منظور درک بهتر عملکرد تابع AVG، میتوان مثالی از آن ارائه کرد؛ جدول Customers را با دادههای زیر درنظر بگیرید.

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

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

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

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

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

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

دورههای آموزش آنلاین به عنوان یکی از بهترین روشهای یادگیری مهارتهای مختلف برای تمامی افراد محسوب میشوند، زیرا این امکان را برای علاقهمندان به یادگیری موضوعات مختلف فراهم میکنند تا در هر مکان و در هر ساعت از شبانه روز به یادگیری مطالب جدید بپردازند و فیلمهای آموزشی را چندین بار مشاهده کنند تا در نهایت به درک جامعی از مفاهیم دست یابند. در وب سایت فرادرس، یکی از کاربردیترین و جامعترین مجموعههای آموزشی، با عنوان «مجموعه آموزشهای پایگاه داده» فراهم و گردآوری شده است تا افراد مشتاق به حوزه برنامه نویسی پایگاه داده با زبان SQL و سایر فناوریهای مربوط به مدیریت پایگاه داده بتوانند از آموزش کامل و تخصصی این حیطه بهرهمند شوند.
محتوای این دورههای آموزشی به نحوی فراهم شدهاند که از مفاهیم اولیه تا پیچیده این زبان را شامل میشوند. بدین ترتیب، افراد با سطح دانش و مهارت مختلف در زمینه برنامه نویسی با زبانهای مرتبط با پایگاه داده میتوانند از این آموزشها با توجه به نیاز خود بهرهمند شوند. در تصویر فوق تنها تعداد کمی از دورههای موجود در این مجموعه آموزشی به عنوان نمونه نشان داده شدهاند.
- برای دسترسی به همه فیلمهای آموزش پایگاه داده فرادرس + اینجا کلیک کنید.
استخراج برخی از سطرهای جدول با استفاده از دستور WHERE
با استفاده از دستور SELECT در SQL علاوه بر این که میتوان کلیه اطلاعات برخی از ستونهای جدول را بازیابی کرد، این امکان نیز وجود دارد تا با استفاده از این دستور، بتوانیم برخی از سطرهای جدول را در خروجی بازگردانیم. به عبارتی، میتوان با استفاده از دستور SELECT در SQL شرطی را برای فیلتر کردن سطرها ایجاد کرد تا فقط رکوردهایی در خروجی بازیابی شوند که مطابق شرط تعریف شدهاند.
- «عملگرهای مقایسهای» (Comparison Operations)
- عملگر برابری (= )
- عملگر کوچکتر از یک مقدار معین (<)
- بزرگتر از یک مقدار معین (>)
- عملگر کوچکتر مساوی یک مقدار معین (<=)
- بزرگتر مساوی یک مقدار معین (>=)
- نامساوی (!=) یا (<>)
- «عملگرهای منطقی» (Logical Operations)
- عملگرهایی برای اعمال عملیات بر روی یک جدول
- عملگر AND
- عملگر OR
- عملگر NOT
- عملگر BETWEEN
- عملگر LIKE در SQL
- عملگر IS NULL
- عملگرهایی برای اعمال عملیات بر روی دو جدول
- عملگر ANY
- عملگر ALL
- عملگر EXISTS
- عملگر IN
- دستور Union در SQL
- عملگرهایی برای اعمال عملیات بر روی یک جدول
در ادامه، به شرح کاربرد هر یک از عملگرهای ذکر شده در بالا، برای تعریف شرط در دستور SELECT در SQL پرداخته میشود.
کاربرد عملگرهای مقایسه ای دستور SELECT در SQL چیست ؟
یکی از سادهترین روشهای تعریف شرط در دستور SELECT، استفاده از عملگرهای مقایسهای است. از این عملگرها میتوان برای مقایسه مقادیر فیلدها یا همان ستونهای جدول با مقدار مد نظر خود استفاده کرد. مقدار مشخص شده برای مقایسه میتواند از نوع عددی یا نوع رشتهای باشد. در ادامه مطلب حاضر، به توضیح کاربرد هر یک از عملگرهای مقایسهای به همراه مثال پرداخته شده است.
عملگر مساوی برای تعریف شرط در دستور SELECT
با استفاده از عملگر مساوی میتوان سطرهای جدولی را با دستور SELECT در SQL استخراج کرد که مقدار یکی از ستونهای آنها برابر با مقدار تعیین شده باشد. به عنوان مثال، جدول Orders را در نظر بگیرید که پنج رکورد از اطلاعات سفارشات مشتریان را به صورت زیر شامل میشود.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

در ادامه مطلب حاضر، به توضیح کاربرد دستور GROUP BY و نحوه استفاده از آن در دستور SELECT پرداخته میشود.
بازیابی اطلاعات جدول به صورت گروه بندی شده با دستور GROUP BY
به منظور گروهبندی سطرهای جدول بر اساس ستونها (فیلدها) میتوان از دستور GROUP BY استفاده کرد. سینتکس این دستور در ادامه آمده است.
به منظور درک بهتر عملکرد این دستور، میتوان از مثالی کمک گرفت؛ جدول Customers با دادههای آن را درنظر بگیرید:

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

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

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

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

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

تفاوت دستور WHERE و HAVING در SQL چیست ؟
بهطور کلی میتوان تفاوت دستور WHERE و HAVING را بهصورت زیر خلاصه کرد:
- از دستور HAVING برای بررسی شرط روی مجموعهای از سطرها استفاده میشود، در حالی که دستور WHERE شرط را بر روی هر سطر از جدول اعمال میکند.
- میتوان از دستور HAVING برای اعمال شرط بر روی خروجی توابع تجمیعی استفاده کرد، در حالی که دستور WHERE نمیتواند شرطی را برای خروجی این توابع درنظر بگیرد.
- از دستور HAVING بعد از دستور GROUP BY استفاده میشود، در حالی که جایگاه استفاده از دستور WHERE قبل از دستور GROUP BY است.
بازیابی اطلاعات جدول با ترتیب صعودی و نزولی در SQL
به منظور کسب درک بهتر از نحوه عملکرد دستور ORDER BY میتوان مثالی از جدول Customers را در نظر گرفت و دادههای این جدول را بر اساس ستون file_name مرتب کرد.

بدین منظور، میتوان از دستور زیر برای مرتب کردن دادهها استفاده کرد.
خروجی دستور بالا در ادامه ملاحظه میشود.

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

بازیابی اطلاعات از چندین جدول با دستور 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 نیز استفاده کرد. قاعده نحوی این دستور در ادامه آمده است.
به منظور درک بهتر عملکرد دستور INNER JOIN میتوان مثالی را ارائه داد؛ دو جدول Customers و Orders را با دادههای زیر درنظر بگیرید.

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

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

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

بر اساس این خروجی، مقدار ستون amount مربوط به مشتریانی برابر با تهی است که سفارشی ثبت نکردهاند و اطلاعات خرید آنها در جدول Orders ثبت نشده است. به عبارتی، با ادغام دو جدول Customers و Orders، برای سطرهایی از جدول سمت چپ (جدول Customers) که اطلاعاتشان در جدول Orders نیست، در ستون amount آنها (که این ستون، فیلدی از جدول Orders است)، هیچ مقداری وجود ندارد.
دستور RIGHT JOIN در SELECT اس کیو ال
دستور RIGHT JOIN نیز نوع دیگری از دستور JOIN است که از آن برای استخراج اطلاعات از دو جدول متصل به هم استفاده میشود. اتصال بین این جداول را میتوان بر اساس ستون مشترکشان برقرار کرد. دستور RIGHT JOIN نیز همانند دستور INNER JOIN به منظور بازیابی اطلاعات مشترک دو جدول استفاده میشود. علاوه بر اطلاعات مشترک دو جدول، دستور RIGHT JOIN کلیه اطلاعات یکی از جداول را نیز در خروجی برمیگرداند. جدولی که کلیه اطلاعات آن در خروجی بازگردانده میشود، جدولی است که در مقابل کلمه کلیدی ON، در سمت راست علامت مساوی قرار میگیرد. در ادامه، قاعده نحوی دستور RIGHT JOIN آمده است.
بر اساس قاعده نحوی بالا، جدول سمت راست، جدول table2 است که در سمت راست علامت = در مقابل کلمه کلیدی ON نوشته میشود. به منظور درک بهتر عملکرد دستور RIGHT JOIN به ارائه مثالی در SQL پرداختهایم. جدولهای Customers و Orders را با مقادیر دادههای زیر در نظر بگیرید.

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

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

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

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

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

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

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














عالییییییییییییییی بود
خیلی کامل
عالی