زمانی که می خواهیم فقط تعداد مشخصی از سطرهای یک جدول را انتخاب کنیم باید در دستور SQL از عبارت WHERE استفاده کنیم. عبارت WHERE به منظور محدودسازی در زمان نمایش یا ویرایش اطلاعات استفاده می شود بنابراین فقط بخش هایی از اطلاعات که نیاز داریم را انتخاب می کنیم. محل قرارگیری عبارت WHERE در دستور SELECT بعد از عبارت FROM است. این عبارت به ترتیب از سه قسمت زیر تشکیل می شود:
1.نام ستون
2.شرط مقایسه ای
3.نام یک ستون یا مقداری ثابت یا لیستی از مقادیر
مثال: اطلاعات کارمندانی را که در دپارتمان شماره 90 مشغول به کار هستند را نمایش دهید.
+ در عبارت WHERE نمی توان نام مستعار(ALIAS) جدید تعریف کرد مگر اینکه از SUBQUERY استفاده شود.
+ در عبارت WHERE مقدارهایی که از نوع کارکتر یا تاریخ هستند باید داخل علامت ‘ ‘ تعریف شوند. مقادیر از نوع کاراکتر حساس به بزرگی یا کوچکی حروف می باشند. همچنین مقادیر تاریخ دارای فرمت مشخصی هستند که باید طبق همان قالب تعریف شوند.
مثال: در عبارت WHERE از مقدارهای کاراکتری و تاریخی استفاده شده است.
عملگرهای مقایسه ای در عبارت WHERE
در هنگام استفاده از عبارت WHERE، می توان از عملگرهای مقایسه ای زیر استفاده کرد:
در شکل زیر، قالب کلی استفاده از این نوع عملگرها را به همراه سه مثال مشاهده می کنید:
+ جهت تعیین حالت نامساوی علاوه بر علامت <> می توان از علامت های != ، ^= نیز استفاده نمود.
مثال: نام و نام خانوادگی کارمندانی که حقوق آنها بیشتر از 3000 می باشد را نمایش دهید.
عملگر BETWEEN در عبارت WHERE
با استفاده از عملگر BETWEEN فقط سطرهایی که مقدار آنها در یک محدوده خاص هستند انتخاب می شوند.
مثال: نام و نام خانوادگی کارکنانی که حقوق آنها بین 2500 تا 3500 می باشد:
می توان از عملگر BETWEEN برای مقادیر تاریخ یا کاراکتر نیز استفاده کرد.
مثال 1: از جدول order_details فقط سطرهایی را نمایش دهید که تاریخ آنها بین 2014/02/01 تا 2014/02/28 باشد.
SELECT * FROM order_details WHERE order_date BETWEEN
TO_DATE (‘2014/02/01’, ‘yyyy/mm/dd’) AND TO_DATE (‘2014/02/28’, ‘yyyy/mm/dd’);
مثال 2: نمایش نام هایی که از لحاظ ترتیب حروف الفبایی بین king و Whalen هستند:
SELECT last_name FROM employees WHERE last_name BETWEEN ‘King’ AND ‘Whalen’;
عملگر IN در عبارت WHERE
در عملگر IN، لیستی از مقدارها را مشخص می کنیم تا در دستور SQL فقط سطرهایی که دارای مقداری از این لیست هستند انتخاب شوند.
مثال: فقط اطلاعات افرادی که شماره MANAGER_ID آنها برابر با 100، 101 و یا 201 است را نمایش دهید.
+ در لیست عملگر IN می توان از کاراکتر یا تاریخ نیز استفاده نمود به شرطی که از علامت ‘ ‘
استفاده گردد.
مثال: اطلاعات افرادی که نام خانوادگی آنها Vargas یا Hartstein است را نمایش دهید.
عملگر LIKE در عبارت WHERE
به منظور جستجوی مقدارهای مورد نظر از عملگر LIKE استفاده می شود. همچنین می توان جهت افزایش قدرت جستجو از دو علامت % و _ استفاده نمود. منظور از علامت % هر تعداد و هر نوع از مقادیر می باشد و علامت _ به معنی فقط یک مورد از هر مقدار است.
مثال: نام افرادی که اسم آنها با حرف S شروع می شود را نمایش دهید.
مثال: اطلاعات افرادی که نام خانوادگی آنها با هر حرفی آغاز شود و سپس دارای یک حرف o باشد را نمایش دهید.
+ می توان از عملگر LIKE برای مقادیر عددی نیز استفاده کرد.
مثال: ستون ACCOUNT_NUMBER از نوع عددی است.
SELECT * FROM suppliers WHERE account_number LIKE ‘92314_’;
+اگر در متن جستجوی LIKE حروف دستوری خاص مانند % وجود داشته باشد آن حروف با استفاده از ESCAPE نادیده گرفته می شوند.
مثال: نام %water را جستوجو کنید و نمایش دهید.
WHERE supplier_name LIKE ‘Water!%’ ESCAPE ‘!’;
در این مثال حرف % بعد از کلمه water جستجو خواهد شد. بنابراین نام water% نیز نمایش داده می شود.
+ می توان از عبارت not like جهت نمایش سایر مقادیر استفاده نمود.
مثال: تمام اسم هایی که با W شروع نمی شوند را نمایش دهید.
SELECT supplier_name FROM suppliers WHERE supplier_name NOT LIKE ‘W%’;
در این مثال تمام اسم هایی که با w شروع نمی شوند نمایش می یابند.
استفاده از شروط NULL
از آنجایی که NULL یک مقدار نامشخص می باشد نمی توان وجود یا عدم وجود آن را با شرط = تعیین کرد. بنابراین از عبارات is NULL و is not NULL استفاده می شود.
مثال: فقط سطرهایی نمایش یابند که ستون manager_id آنها NULL باشد.
عملگرهای منطقی
عملگرهای منطقی نتایج چندین شرط را ترکیب می کنند تا یک شرط کلی ایجاد گردد. در جدول زیر عملگرهای منطقی را می بینید.
مثال: نمایش اطلاعات کارکنان به شرطی که حقوق کارکنان بالای 10000 و job_id آنها نیز شبیه به کلمه MAN باشد.
+ زمانی که در بین چند عبارت شرطی از عملگر AND استفاده گردد نتیجه عملیات به صورت جدول زیر می باشد.
+ زمانی که از عملگر OR استفاده می گردد، فقط کافیست یکی از شرط ها برقرار باشد.
مثال: نمایش اطلاعات افرادی که حقوق آنها بیشتر از 10000 است یا job_id آنها شبیه به MAN می باشد.
+ زمانی که در بین چند عبارت شرطی از عملگر OR استفاده گردد نتیجه کلی به صورت زیر می باشد.
+از عملگر NOT برای بررسی عدم وجود یک شرط استفاده می شود.
مثال: نمایش اطلاعات افرادی که job_id آنها در لیست IN تعریف نشده است.
بررسی اولویت
در جدول زیر اولویت هرکدام از عملگرها و شرط ها نسبت به هم مشخص گردیده است. به این ترتیب که شماره 1 بالاترین اولویت را دارد.
+استفاده از پرانتز سبب ایجاد اولویت بالاتر می شود.
مثال: اطلاعات کارمندانی نمایش داده شوند که department_id آنها 60 است و یا department_id آنها 80 است ولی حقوقی بالاتر از 10000 دریافت می کنند.
مثال: با استفاده از پرانتز در مثال قبلی، فقط اطلاعات کارمندانی که حقوق آنها بیشتر از 10000 است، نمایش می یابد.