با سلام، در این مقاله، با کاربرد و نحوه استفاده از دستور WHERE در SQL در خدمت شما هستیم.
از دستور WHERE برای فیلتر کردن نتایج استفاده می شود.
به عبارت دیگر می توان گفت WHERE یک نوع شرط محسوب می شود که داده ها را بر اساس آن فیلتر می کند.
ساختار کلی (syntax) این دستور به شکل زیر است:
SELECT column1, column2, ... FROM table_name WHERE condition;
نکته: ما هنوز با دستورات دیگر SQL به غیر از SELECT آشنا نشده ایم، بنابراین از SELECT به عنوان مثال استفاده می کنیم اما شما باید به یاد داشته باشید که WHERE با دستورات دیگری مثل UPDATE و DELETE و غیره نیز استفاده می شود.
قبل از ارائه مثال، قسمتی از پایگاه داده خود را برای شما قرار می دهیم تا به ساختار کلی آن آشنا شوید:
حالا به سراغ مثال می رویم!
کد زیر مشتریانی را انتخاب می کند که از کشور مکزیک باشند:
SELECT * FROM Customers WHERE Country='Mexico';
برای مشاهده نتیجه کد بالا روی این لینک کلیک کنید.
می بینیم که 6 ردیف مختلف به ما برگردانده می شود:
بنابراین 5 مشتری از مکزیک داریم.
نکته: در نوشتن کدهای SQL نیازی به رفتن به خط بعد ندارید، بنابراین هر دو کد زیر دقیقا یکی هستند:
SELECT * FROM Customers WHERE Country='Mexico';
SELECT * FROM Customers WHERE Country='Mexico';
ما به جهت واضح تر شدن کدها برای افراد مبتدی از اینتر استفاده می کنیم و به خط جدید می رویم اما روش مرسوم تر در نوشتن کدهای SQL، پشت سر هم نوشتن آن ها در یک خط است (مخصوصا در سورس کد).
در زبان SQL اگر بخواهید با فیلدهای متنی کار کنید باید از single quote استفاده کنید (البته در بیشتر سیستم های پایگاه داده می توانید از double quotes نیز استفاده کنید) اما فیلدهای عددی را داخل quotation قرار ندهید. مثال:
SELECT * FROM Customers WHERE CustomerID=1;
برای مشاهده نتیجه کد بالا روی این لینک کلیک کنید.
مشتری ای که دارای آیدی 1 است به ما داده می شود.
نکته: اگر نمی دانید single quote و double quote چه هستند به تصویر زیر نگاهی بیندازید:
از آن جا که گفتیم دستور WHERE نوعی شرط است، می دانیم که اپراتورهایی نیز دارد. شما می توانید از اپراتورهای زیر در دستور WHERE استفاده کنید:
اپراتور | توضیحات |
= | مساوی است با |
<> | مساوی نیست با (در برخی نسخه ها به صورت =! است) |
< | بزرگتر است از (برنامه نویسی از چپ به راست است) |
> | کوچکتر است از |
=< | بزرگتر مساوی است با |
=> | کوچکتر مساوی است با |
BETWEEN | بین یک محدوده خاص |
LIKE | برای جست و جوی الگویی خاص |
IN | نشان دادن اینکه چندین مقدار برای یک ستون ممکن است |
در جلسات بعد در رابطه با تک تک این موارد صحبت خواهیم کرد (در زیر همین مقاله می توانید درس های بعدی را مشاهده کنید).
از آن جایی که برنامه نویسی بدون تمرین تقریبا به هیچ دردی نمی خورد، درباره مبحث دستور WHERE در SQL تمرینات مختلفی به شما خواهیم داد. شما باید سعی کنید که شخصا به آن ها پاسخ دهید و مستقیما به سراغ جواب ها نروید.
سوال اول: ستون هایی را انتخاب کنید که مقدار City
در آن ها مساوی برلین یعنی "Berlin" باشد.
پاسخ:
برای پاسخ دادن به این سوال باید ابتدا نگاهی به جدول customers داشته باشید. پس از بررسی این جدول در میابید که یکی از ستون های آن city نام دارد و مخصوص نگه داری نام شهر ها است. با این اوصاف کار ما بسیار ساده می شود؛ تنها کافی است ابتدا تمام ستون های customers را انتخاب کنید (خط اول و استفاده از علامت ستاره) و سپس از شرط WHERE استفاده کنید و بگویید ستون city را برابر رشته Berlin قرار بده.
SELECT * FROM Customers WHERE City = 'Berlin';
نکته: توجه داشته باشید که کلمه Berlin باید داخل quotation باشد. همانطور که گفتیم در اکثر سیستم های SQL تفاوتی بین single quotation و double quotation وجود ندارد اما از آن جایی که برخی از این سیستم ها double quotation را قبول نمی کنند بهتر است ریسک نکنید و همیشه و در همه جا از single quotation استفاده کنید.
سوال دوم: ستون هایی را انتخاب کنید که مقدار City
در آن ها مساوی برلین یعنی "Berlin" نباشد.
پاسخ:
اگر با کلمه NOT آشنایی داشته باشید می دانید که این کلمه، شرطِ WHERE را برعکس می کند. بنابراین جواب بسیار ساده خواهد بود.
SELECT * FROM Customers WHERE NOT City = 'Berlin';
اگر با کلیدواژه NOT آشنا نیستید نگران نباشید، در جلسات بعدی آن را توضیح خواهیم داد و در مثال های عملی از آن استفاده خواهیم کرد. دلیل اینکه آن را اینجا آوردم این است که اگر اطلاعات به صورت ناگهانی و بدون مقدمه به شما برسند، بهتر در ذهنتان می مانند! بدین صورت در جلسات بعد NOT را فراموش نخواهید کرد.
سوال سوم: ستون هایی را انتخاب کنید که مقدار CustomerID
در آن ها مساوی عدد 32 باشد.
پاسخ:
جواب دادن این سوال نیز بسیار ساده است؛ دقیقا مانند موارد قبل عمل می کنیم با این تفاوت که شرطِ WHERE را به صورت CustomerID = 32 تعریف می کنیم.
SELECT * FROM Customers WHERE CustomerID = 32;
قطعا خروجی این کد یک ردیف است (اطلاعات فردی که دارای آیدی 32 است).
نکته: توضیحات مربوط به این آیدی ها، نحوه تعیین آیدی ها و مباحث دیگر را در جلسات آینده (در قسمت پائین این مقاله می توانید درس های جلسات بعد و قبل را ببینید) توضیح خواهیم داد.
این مقاله از دو قسمت اصلی تشکیل شده است: قسمت اول که آشنایی با ساختار کلی و مثال های دستور WHERE بود و قسمت دوم که شامل سه تمرین مختلف بود. در درس بعد به سراغ اپراتورهای AND و OR و NOT خواهیم رفت و مفصلا در موردشان صحبت خواهیم کرد. در پائین این مقاله می توانید به درس های بعدی دسترسی داشته باشید. امیدوارم از این قسمت لذت برده باشید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.