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

۳۰۰ بازدید
آخرین به‌روزرسانی: ۲۲ شهریور ۱۴۰۲
زمان مطالعه: ۳ دقیقه
بند 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 برای DELETE یا UPDATE نیز استفاده شود.

بند WHERE مانند دستور شرطی if در هر زبان برنامه‌نویسی عمل می‌کند. این بند برای مقایسه مقدار مفروض با مقدار فیلد موجود در جدول 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);
?>

اگر به این نوشته علاقه‌مند بودید، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۱ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
tutorialspoint
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *