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

در مطالب قبلی در مورد دستور SELECT و استفاده از آن برای بدست آوردن تمامی سطرهای یک جدول صحبت کردیم. همانطور که گفتیم هر جدول یک موجودیت از سیستمی است که می خواهیم داده های آنرا ذخیره کنیم و هر ستون یک ویژگی از موجودیت را بیان می کند. هر سطر نیز یک نمونه از موجودیت را نشان می دهد.

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

در این مطالب و بقیه مطالب از عبارت WHERE درون SELECT استفاده می کنیم تا بتوانیم محدودیت هایی را برای سطرهای خروجی تعیین کنیم. به طور مثال

می خواهیم فهرست کامندانی که نام آنها Payam است را پیدا کنیم.

فهرست کارمندانی را می خواهیم که بیشترین حقوق را می گیرند.

فهرست دانشجویانی که یک درس را بیشتر از دو بار اخذ کرده اند.

فهرست کارمندانی که در یک روز خاص به دنیا آمده اند و همگی دارای یک شغل هستند.

فهرست فروشندگانی که بیشترین فروش را دارند

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

فرمت کلی استفاده از عبارت WHERE در دستور SELECT

دستور زیر فرمت کلی استفاده از SELECT به همراه WHERE را نشان می دهد. استفاده از WHERE در دستور SELECT اجباری نیست و تنها زمانی استفاده می شود که می خواهیم بر روی سطرهای خروجی یک فیلتر قرار دهیم تا خروجی بر اساس یک یا چندین شرط نمایش داده شود.

مثالاطلاعات کامل کارمند با شناسه ۱۰۵ را نمایش دهید.

در دستور بالا شرط این است که شناسه عددی براربر با ۱۰۵ باشد و همچنین لازم است تا تمامی اطلاعات کارمند را از جدول hr.employees نمایش داده شود. در بخش شرط جلوی WHERE نوع داده ای که که در شرط استفاده شده است یک عدد است ولی می توان نوع رشته یا تاریخ و زمان را نیز استفاده کرد.

مثالشناسه کارمندی و نام خانوادگی و حقوق کارمندی را نشان دهید که نام آن Payamباشد.

توجه کنید چون مقدار شرط جلوی عبارت WHERE یک رشته است، پس آنرا میان دو Single Quotation قرار داده ایم. بنابراین ممکن است شرط یک تک کاراکتر باشد، بازهم باید آنرا میاندو Single Quotation قرار دهیم. اگر مقدار شرط، عدد صحیح یا اعشاری باشد، پس می توانیم از Single Quotation استفاده نکنیم ولی اگر هم استفاده کردیم هیچ مشکلی پیش نمی آید. شکل زیر مثالی را نشان می دهد.

به یاد داشته باشید که در طول این دوره ما اعداد جلوی شرط را میان دو Single Quotation قرار نداده ایم ولی باز هم تاکید می کنیم مشکلی پیش نمی آید که اعداد را هم میان دو Single Quotation قرار دهید. در واقع اگر مقدار یک ستون جلوی عبارت WHERE عددی بود و می خواهیم مقدار دلخواهی را در میان تمامی مقادیر آن و جلوی شرط بررسی کنیم، می توانیم مقدار عددی شرط را میان دو Single Quotation قرار دهیم و یا قرار ندهیم.

همچنین اگر همانند کوئری و شکل زیر از Double Quotation برای مقدار جلوی شرط عبارت WHERE استفاده کنید، در اوراکل خطای ORA-00904 نشان داده می شود. شکل زیر نمونه ای از بروز خطای ORA-00904 را نشان می دهد. بنابراین در جلوی شرط عبارت WHERE حتما باید از Single Quotation استفاده کنید و برای نام های مستعار حتما باید از Double Quotation استفاده کنید.

مثالنام و نام خانوداگی تمامی کارمندانی را نشان دهید که شغل آنها IT_PROG است.