بند WHERE در دستورات MySQL – راهنمای جامع


در بخشهای قبلی سلسله آموزشهای MySQL با دستور SELECT برای دریافت دادهها از پایگاه داده آشنا شدیم و دیدیم که هنگام استفاده از این دستور میتوانیم از بند WHERE برای فیلتر کردن نتایج استفاده کنیم. با استفاده از بند WHERE میتوانیم یک معیار انتخاب برای گزینش رکوردهای مورد تقاضا از یک جدول تعیین کنیم.
ساختار
کد زیر ساختار معمول یک دستور SQL برای انتخاب را به همراه بند WHERE جهت دریافت دادهها از یک جدول MysQL نشان میدهد.
SELECT field1, field2,...fieldN table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....
این بند خصوصیاتی دارد که در ادامه برخی از آنها را فهرست کردهایم:
- میتوانید از یک یا چند جدول که با کاما از هم جدا شدهاند، برای تعیین شرایط مختلف با استفاده از بند WHERE استفاده کنید؛ اما بند WHERE بخش اختیاری دستور SELECT است.
- میتوانید هر شرایطی را با استفاده از بند WEHRE تعیین کنید.
- میتوانید بیش از یک شرط را با استفاده از عملگرهای AND یا OR تعیین کنید.
- بند WHERE در SQL میتواند به همراه سایر دستورهای SQL برای DELETE یا UPDATE نیز استفاده شود.
بند WHERE مانند دستور IF در SQL عمل میکند. این بند برای مقایسه مقدار مفروض با مقدار فیلد موجود در جدول MySQL مورد استفاده قرار میگیرد. اگر مقدار مفروض با مقدار فیلد موجود در جدول برابر باشد، در این صورت آن ردیف بازگشت داده میشود.
در ادامه فهرست برخی از عملگرهایی که به همراه بند WHERE استفاده میشوند، ارائه شده است. اگر فرض کنیم فیلد A دارای مقدار 10 و فیلد B دارای مقداری برابر با 20 است، در این صورت:
عملگر | توضیح | مثال |
---|---|---|
= | بررسی میکند که آیا مقدار دو عملوند مساوی هستند یا نه، اگر مثبت باشد در این صورت شرط برقرار میشود. | (A = B) صحیح نیست. |
!= | بررسی میکند که آیا دو عملوند مساوی هستند یا نه، اگر مساوی نباشند در این صورت شرط برقرار میشود. | (A != B) صحیح است. |
> | بررسی میکند که آیا عملوند چپ بزرگتر از عملوند راست یا نه، اگر چنین باشد شرط برقرار میشود. | (A > B) صحیح نیست. |
< | بررسی میکند که آیا عملوند چپ کمتر از عملوند راست یا نه، اگر چنین باشد شرط برقرار میشود. | (A < B) صحیح است. |
>= | بررسی میکند که آیا عملوند چپ بزرگتر یا مساوی عملوند راست یا نه، اگر چنین باشد شرط برقرار میشود. | (A >= B) صحیح نیست. |
<= | بررسی میکند که آیا مقدار عملوند چپ کمتر یا مساوی عملوند راست یا نه، اگر چنین باشد شرط برقرار میشود. | (A <= B) صحیح است. |
بند WHERE زمانی که بخواهیم ردیفهای خاصی از یک جدول را انتخاب کنیم بسیار مفید خواهد بود به خصوص هنگامی که از MySQL Join استفاده میکنیم. در هر حال الحاقها (Join) موضوع نوشته دیگری هستند.
استفاده از ستون Primary Key برای اجرای جستجوهای سریعتر به دنبال داده یک رویه متداول محسوب میشود.
اگر شرایط ارائه شده در دستور با هیچ ردیفی در جدول مطابقت نداشته نباشد، در این صورت کوئری نمیتواند هیچ ردیفی را بازگرداند.
دریافت دادهها از اعلان فرمان
در این روش از دستور SELECT در SQL به همراه بند WHERE برای دریافت دادههای منتخب از جدول MySQL استفاده میشود.
مثال
در مثال زیر همه رکوردهایی از جدول tutorials_tbl که نام نویسنده آن Sanjay است بازگشت داده میشوند.
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> SELECT * from tutorials_tbl WHERE tutorial_author = 'Sanjay'; +-------------+----------------+-----------------+-----------------+ | tutorial_id | tutorial_title | tutorial_author | submission_date | +-------------+----------------+-----------------+-----------------+ | 3 | JAVA Tutorial | Sanjay | 2007-05-21 | +-------------+----------------+-----------------+-----------------+ 1 rows in set (0.01 sec) mysql>
مقایسههای این دستور مگر در موارد استفاده از مقایسه LIKE روی یک رشته، حساس به بزرگی/کوچکی حروف نیستند. البته با استفاده از کلیدواژه BINARY به صورت زیر میتوانید جستجوی خود را به روش حساس به بزرگی/کوچکی حروف اجرا کنید:
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> SELECT * from tutorials_tbl \ WHERE BINARY tutorial_author = 'sanjay'; Empty set (0.02 sec) mysql>
دریافت دادهها با استفاده از اسکریپت PHP
از همین دستور SELECT در SQL میتوان به همراه بند WHERE برای دریافت دادهها با استفاده از تابع ()mysql_query در PHP استفاده کرد. این تابع برای اجرای دستور SQL و در ادامه از تابع ()mysql_fetch_array برای دریافت دادههای منتخب استفاده میشود. این تابع یک ردیف را به صورت آرایه انجمنی، یک آرایه عددی یا هر دوی آنها میگرداند. این تابع در صورتی که ردیفی وجود نداشته باشد مقدار false باز میگرداند.
مثال
در مثال زیر همه رکوردهایی از جدول tutorials_tbl که نام نویسنده آن Sanjay است بازگشت داده میشوند.
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl WHERE tutorial_author = "Sanjay"'; mysql_select_db('TUTORIALS'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Tutorial ID :{$row['tutorial_id']} <br> ". "Title: {$row['tutorial_title']} <br> ". "Author: {$row['tutorial_author']} <br> ". "Submission Date : {$row['submission_date']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn); ?>
اگر به این نوشته علاقهمند بودید، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مفاهیم مقدماتی MySQL — راهنمای جامع
- مجموعه آموزشهای برنامهنویسی
- کلاستر چند گره ای MySQL روی اوبونتو ۱۸.۰۴ — به زبان ساده
- چگونه دیتابیس MySQL را بر روی ویندوز نصب کنیم؟
- مجموعه آموزشهای پایگاه داده و سیستم های مدیریت اطلاعات
- آموزش SQL Server – مقدماتی
- آموزش SQL Server Management Studio | کامل، رایگان و گام به گام
==