جزء WHERE در دستور SELECT
برای فیلتر کردن رکوردها بر اساس شرایط خاص استفاده میشود. این جزء به شما امکان میدهد فقط رکوردهایی را بازیابی کنید که شرایط خاصی را برآورده میکنند.
نحوه نگارش (Syntax) جزء WHERE
ساختار کلی جزء WHERE در SQL به شکل زیر است:
SELECT
column1, column2, ...
FROM
table_name
WHERE
condition;
اپراتورهای متداول در جزء WHERE
اپراتورهای مقایسهای:
=
: مساوی
<>
یا !=
: نامساوی
<
: کوچکتر از
<=
: کوچکتر یا مساوی
>
: بزرگتر از
>=
: بزرگتر یا مساوی
مثال: انتخاب دانشجویانی که بعد از 2000-01-01
به دنیا آمدهاند
SELECT * FROM Students WHERE BirthDate > #2000-01-01#;
مثال: انتخاب دانشجویانی که نام خانوادگی آنها برابر با ‘رضا زاده’ است
SELECT
StudentID, FirstName, LastName, NationalCode, BirthDate
FROM
Students
WHERE
LastName = 'رضا زاده';
اپراتورهای منطقی:
AND
: هر دو شرط باید درست باشند.OR
: حداقل یکی از شرطها باید درست باشد.NOT
: شرط نباید درست باشد.
مثال: انتخاب دانشجویانی که بعد از 2000-01-01
به دنیا آمدهاند و نام کوچک آنها احمد باشد.
SELECT
*
FROM
Students
WHERE
BirthDate > #2000-01-01# AND FirstName = 'احمد';
مثال: انتخاب دانشجویانی که بعد از 2000-01-01
به دنیا آمدهاند یا نام کوچک آنها احمد نباشد.
SELECT
*
FROM
Students
WHERE
BirthDate > #2000-01-01# OR FirstName <> 'احمد';
اپراتور IN:
- برای بررسی اینکه آیا یک مقدار در مجموعهای از مقادیر قرار دارد یا خیر؟
مثال: انتخاب دانشجویانی که نام خانوادگی آنها احمدی یا حسینی یا کریمی باشد.
SELECT
*
FROM
Students
WHERE
LastName IN ('احمدی', 'حسینی', 'کریمی');
اپراتور IN شکل ساده شده اپراتور منطقی OR میباشد. دستور SQL بالا و پایین نتایج یکسانی خواهند داشت.
SELECT
*
FROM
Students
WHERE
LastName = 'کریمی' OR LastName = 'حسینی' OR LastName = 'احمدی';
اپراتور BETWEEN
برای بررسی اینکه آیا یک مقدار یک فیلد در بازه انتخابی قرار دارد یا خیر.
اپراتور BETWEEN و انتخاب بین دو تاریخ:
مثال: انتخاب دانشجویانی که تاریخ تولد آنها بین 2000-01-01
و 2005-12-31
باشد.
SELECT
StudentID, FirstName, LastName, NationalCode, BirthDate
FROM
Students
WHERE
BirthDate BETWEEN #2001-01-01# AND #2005-12-31#;
اپراتور BETWEEN و انتخاب بین دو عدد:
مثال: انتخاب کالاهایی که قیمت آنها بین 1000 تا 10000 باشد.
SELECT
*
FROM
Products
WHERE
Price BETWEEN 1000 AND 10000;
اپراتور BETWEEN و انتخاب بین مقادیر متنی:
اپراتور BETWEEN برای مقادیر متنی نیز کاربرد دارد. در این حالت ردیفهایی که از لحاظ الفبایی بین دو مقدار انتخابی باشند انتخاب خواهند شد.
مثال: انتخاب دانشجویانی که نام خانوادگی آنها بین احمدی و جمشیدی قرار دارد.
SELECT
*
FROM
Students
WHERE
LastName BETWEEN 'احمدی' AND 'جمشیدی';
اپراتور LIKE
برای جستجوی الگوهای خاص در دادههای متنی استفاده میشود.
%
جایگزین صفر یا بیشتر کاراکتر_
جایگزین یک کاراکتر
مثال: انتخاب دانشجویانی که نام آنها با م
شروع میشود.
SELECT
*
FROM
Students
WHERE
FirstName LIKE 'م%';
مثال: انتخاب دانشجویانی که نام خانوادگی آنها به ی
ختم میشود.
SELECT
*
FROM
Students
WHERE
LastName LIKE '*ی';
مثال: انتخاب دانشجویانی که نام خانوادگی آنها با م
شروع و به ی
ختم میشود.
SELECT
*
FROM
Students
WHERE
LastName LIKE 'م*ی';
عملکرد عملگر Like در اکسس SQL مشابه عملکرد Like در VBA میباشد. اطلاعات بیشتر درباره عملگر Like را میتوانید در این صفحه مشاهده نمایید.
اپراتور IS NULL و IS NOT NULL
- برای بررسی اینکه آیا یک ستون مقدار NULL دارد یا خیر.
مثال: انتخاب ردیفهایی که مقدار فیلد BirthDate آنها تکمیل نشده است.
SELECT
*
FROM
Students
WHERE
BirthDate IS NULL;
مثال: انتخاب ردیفهایی که مقدار فیلد BirthDate آنها تکمیل شده است.
SELECT
*
FROM
Students
WHERE
BirthDate IS NOT NULL;
توجه داشته باشید که مقدار NULL با مقدار یک رشته خالی تفاوت دارد. اگر یک فیلد حاوی رشته خالی باشد مقدار NULL درباره آن صدق نخواهد کرد و در نتایج پرسوجو نمایش داده نخواهد شد. برای نمایش رشتههای خالی و مقادیر NULL با هم میتوانید با استفاده از عملگر منطقی OR نتیجه صحیح را مشاهده نمایید.
مثال: انتخاب ردیفهایی که مقدار فیلد FirstName آنها تکمیل نشده یا خالی میباشد.
SELECT
*
FROM
Students
WHERE
FirstName IS NULL OR FirstName = '';
ترکیب عملگرها
در خیلی از مواقع استفاده از یک عملگر یا اپراتور به تنهایی پاسخگوی نیاز برنامهنویس نمیباشد. در این مواقع میتوانیم با ادغام عملگرها به نتیجه دلخواه برسیم.
مثال: انتخاب دانشجویانی که کد ملی آنها با 065 شروع میشود و تاریخ تولد آنها بعد از تاریخ 2005-12-31
میباشد.
SELECT
*
FROM
Students
WHERE
NationalCode Like "065#######" AND BirthDate > #12/31/2005#;
نکات مهم درباره ادغام عملگرها
- ترتیب شرایط: زمانی که از چند شرط در
WHERE
استفاده میکنید، ترتیب آنها و استفاده از پرانتزها برای گروهبندی شرطها میتواند روی نتایج تاثیر بگذارد. برای یادگیری ترتیب عملگرها میتوانید این صفحه را مشاهده نمایید. - بهینهسازی پرس و جو: استفاده از شاخصها (Indexes) میتواند به بهبود کارایی پرس و جوهایی که از
WHERE
استفاده میکنند، کمک کند.
نتیجهگیری
جزء WHERE
در SQL به شما این امکان را میدهد که به طور دقیق رکوردهایی را که نیاز دارید، بازیابی کنید. با استفاده از اپراتورهای مختلف و ترکیب آنها، میتوانید فیلترهای پیچیدهای ایجاد کنید که به شما در مدیریت دادهها کمک میکنند. امیدواریم این آموزش به شما در فهم بهتر و استفاده موثرتر از جزء WHERE
کمک کند.
بیشتر بخوانید
آموزش SQL در Microsoft Access: ایجاد/افزودن دادهها در جداول
آموزش SQL در Microsoft Access: شروعی آسان
آموزش SQL در Microsoft Access: دستور SELECT و اجزاء مختلف آن
آموزش SQL در Microsoft Access: کاربرد جزء WHERE در SQL
آموزش SQL: ارتباط بین جداول و کلید خارجی (Foreign Key)
آموزش SQL در Microsoft Access: ساختار جدولها و نحوه ایجاد آنها