دستور Where در SQL – از کاربرد تا نحوه استفاده به زبان ساده


«زبان کوئری ساختاریافته» (Structured Query Language |SQL) از دستور WHERE در SQL برای فیلتر کردن دادهها بر پایههای شرایط اعمال شده استفاده میکند. این دستور به صورت رایجی در عبارتهای SELECTو UPDATEو DELETE استفاده میشود. از میان انبوه دادههای ممکنی که توسط کوئریها از پایگاه داده فراخوانده میشوند با کمک دستور WHERE در SQL دادههای مورد نظر خود را استخراج میکنیم. در این مطلب از مجله فرادرس، به طور کلی به ساختار سینتکس و کاربرد این دستور، با یک یا چند شرط مختلف میپردازیم. همچنین روش استفاده از این دستور را برای شامل کردن یا استثنا کردن دادههای خاصی بر اساس کوئری بررسی کردهایم.
جداول پایگاه های داده رابطهای میتوانند شامل میلیونها ردیف داده شوند. در سناریویی عملی، شاید نخواهید با کل مجموعه داده به صورت همزمان کار کنید. برای مثال، فرض کنیم جدولی برای ضبط همه سفارشات مشتریان داریم، شاید نخواهیم تمام دادههای در دسترس برنامه را از لحظه ایجاد جدول تا الان نمایش دهیم. شاید داده سفارش خاصی یا سفارشهایی در یک محدوده زمانی خاص مانند محدوده سه ماهه یا یکساله را نیاز داریم یا حتی نیاز به داشتن سفارشهای مشتری خاصی یا سفارشها داده شده از منطقه خاصی را پیدا کردهایم. دستور WHERE در چنین مواردی به فیلترکردن دادههای هدف از میان انبوه دادههای موجود به کمک مدیران پایگاههای داده میآید.
دستور WHERE در SQL چه کاربردی دارد؟
دستور WHERE در SQL برای فیلتر کردن نتایجی بهکار میرود که توسط عبارتهای «زبان کار با داده» (Data Manipulation Language | DML) مانند SELECTو UPDATE و DELETE بدست میآیند. با استفاده از دستور WHERE میتوانیم از درون یک یا چندین جدول مختلف -با استفاده از عملیات JOIN- دادهها را فراخوانی کنیم.
برای نمونه، با استفاده از دستور WHERE میتوانیم جزییات مربوط به کارمندان بخشی از سازمان را یا کارمندانی که درآمدی بیشتر یا کمتر از حد مشخصی دارند یا حتی جزییات مربوط به دانشآموزان مستحق دریافت بورسیه را از جدول پایگاه داده استخراج کنیم. این عبارت به صورت پایه مشخصات خاصی را درباره دادهها فراهم میکند. این مشخصات تعیین میکنند کدام رکوردها باید واکشی شده و کدام رکوردها باید نادیده انگاشته شوند.

سینتکس دستور WHERE در SQL
شکل سینتکس پایه دستور WHERE را در کد زیر نمایش دادهایم.
در کد بالا عبارت DML_Statement میتواند هر عبارتی مانند SELECTو UPDATEو DELETE در SQL و غیره باشد. میتوانیم شرطی را با استفاده از عملگرهای منطقی یا مقایسهای مانند > و < و = و LIKEو NOT و غیره تعریف کنیم.
چگونه بر کار با SQL Server مسلط شویم؟
دستور WHERE در SQL یکی از دستورات بسیار کلیدی است. چندین دستور دیگر مانند دستور WHERE وجود دارند که برای کار کردن با SQL تا حد زیادی مفید و موثر هستند. SQL زبان ساختار یافته کوئرینویسی است که برای کار با پایگاههای داده رابطه طراحی شده است. یکی از بهترین نوع از این پایگاههای داده SQL Server است. در فرادرس برای کار با SQL Server فیلمهای آموزشی پیشرفته و حرفهای تولید شدهاند که با مشاهده آنها و تمرین به راحتی بر کار با این پایگاه داده مسلط میشوید.

در ادامه چند مورد از این فیلمهای آموزشی را معرفی کردهایم. فیلمهای آموزشی فرادرس حاوی اطلاعاتی هستند که با حساسیت و دقت بالایی در صحت و تناسب با یکدیگر چیده شدهاند. در صورت تمایل به دیدن فیلمهای بیشتر میتوانید بر روی تصویر بالا کلیک کنید.
- فیلم آموزش اس کیو ال سرور دوره تکمیلی در فرادرس
- فیلم آموزش اس کیو ال سرور دوره پیشرفته در فرادرس
- فیلم آموزش کوئری نویسی پیشرفته در SQL Server با فرادرس
- فیلم آموزش استفاده از JSON در SQL در فرادرس
دستور WHERE همراه با عبارت SELECT
بهطور معمول، عبارت SELECT برای واکشی دادهها از جدولهای پایگاه داده بهکار میرود. در صورت استفاده از دستور WHERE همراه با عبارت SELECTمیتوانیم ردیفهای واکشی شده را بر اساس شرایط یا عبارات مشخصی فیلتر کنیم. کدی که در ادامه آمده مثالی برای استفاده از دستور WHERE همراه با عبارت SELECTاست.
نمونه کد
فرض کنیم که جدولی به نام CUSTOMERS در پایگاه داده MySQL با استفاده از دستور CREATE TABLE ایجاد کردهایم.
کدی پیادهسازی شده پایین این فرایند را نشان میدهد.
طبق کدهایی که در پایین نمایش داده شدهاند با استفاده از کوئری INSERT در SQL در این جدول ۷ رکورد فرضی را وارد کردیم.
در نهایت، جدولی که ساخته شده به صورت نمایش داده شده در پایین خواهد بود. در این جدول ID نشاندهنده شماره شناسایی کارمند، NAMEنام، AGE سن، ADDRESS آدرس و SALARYمیزام حقوق کارمندان را نشان میدهد.
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
در کوئری آمده پایین، اطلاعات مربوط به شماره شناسایی ID ، نام NAME و حقوق SALARY را از جدول CUSTOMERSبا شرط حداقل درآمد SALARYبالاتر از 2000 واکشی کردهایم.
با اجرای کوئری بالا، دادههای استخراج شده به صورت جدول زیر در خروجی به کاربر نمایش داده میشوند.
ID | NAME | SALARY |
---|---|---|
4 | Chaitali | 6500.00 |
5 | Hardik | 8500.00 |
6 | Komal | 4500.00 |
7 | Muffy | 10000.00 |
دستور WHERE همراه با عبارت UPDATE
از عبارت UPDATE در SQL برای اصلاح رکوردهای موجود در جدول کمک گرفته میشود. با استفاده از دستور WHERE در SQL همراه با عبارت UPDATEمیتوانیم رکوردهای خاصی را بهروزرسانی کنیم. اگر از دستور WHERE استفاده نکنیم، عبارت UPDATEبر روی همه رکوردهای جدول اثر خواهد گذاشت.
در کد پایین، سینتکس پایه مربوط به ترکیب دستور WHERE همراه با عبارت UPDATEرا نمایش دادهایم.
نمونه کد
در کوئری نمایش داده شده پایین، در حال افزایش حقوق کارمندی به اندازه 10000 واحد هستیم که نامش Ramesh است. میبینید که این افزایش حقوق را با استفاده از ترکیبی از عبارتهای WHERE همراه با UPDATEانجام دادهایم.
پایگاه داده، در خروجی این کوئری، نتیجه نمایش داده شده پایین را برمیگرداند.
ارزیابی کوئری
برای ارزیابی کردن اینکه آیا نتیجه کوئری در جدول منعکس شده یا نه، همینطور که در پایین نمایش داده شده میتوانیم از عبارت SELECTبرای نوشتن کوئری استفاده کنیم.
در نتیجه اجرای کوئری بالا، باید جدول زیر در خورجی نمایش داده شود.
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 12000.00 |
دستور WHERE همراه با عملگر IN
با استفاده از عملگر IN میتوانیم فهرستی از مقادیر را مشخص کنیم یا زیر کوئری را در دستور WHERE ایجاد کنیم. اگر از دستور WHERE و عملگر INهمراه با عبارت SELECTاستفاده کنیم، میتوانیم ردیفهای درون جدولی را که با هر یک از مقادیر درون لیست مشخص شده همخوانی دارند، واکشی کنیم.
خود عبارت SELECTیکی از عبارتهای بسیار پرکاربرد و کلیدی در SQL است. تسلط به استفاده از این عبارت مهارت کوئرینویسی را به طرز چشمگیری افزایش میدهد. با مطالعه مطلب دستور SELECT در SQL – راهنمای استفاده به زبان ساده همراه با مثال از مجله فرادرس تا حد بسیار خوبی بر این دستور مسلط میشوید و تقریبا میتوانید همه نیازهای خود را درباره این دستور برآورده کنید.

کد زیر، حالت سینتکس پایه را برای این کوئری نمایش میدهد.
در کد بالا عبارت column_name نشاندهنده نام ستون در جدول است. مقادیر value1 و value2 و غیره فهرست مقادیری هستند که میخواهیم با ستون column_name مقایسه کنیم.
نمونه کد
فرض کنیم که باید رکوردهای با مقادیر Khilan و Hardik و Muffy را از ستون NAME در جدول CUSTOMERSنمایش دهیم. برای اجرای این خواسته میتوانیم از کوئری آمده در پایین استفاده کنیم.
خروجی حاصل از اجرای کوئری بالا بر روی جدول آزمایشی خودمان به صورت زیر نمایش داده خواهد شد.
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
2 | Khilan | 25 | Delhi | 1500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
دستور WHERE همراه با عملگر NOT IN
دستور WHERE همراه با عملگر NOT IN دقیقا برعکس دستور WHERE همراه با عملگر INکار میکند.
- اگر از دستور WHERE همراه با عملگر INاستفاده کنیم، عبارت DML بر روی لیستی از مقادیر مشخص شده در ستون خاص اعمال میشوند که در عبارت بهطور صریح تعریف شدهاند.
- از طرف دیگر، اگر از دستور WHERE همراه با عملگر NOT IN استفاده کنیم. عبارت DML بر روی مقادیری اعمال میشود که در مقادیر لیست مشخص شده در ستون خاص نباشند.
بنابراین اگر از دستور WHERE همراه با عملگر NOT IN در عبارت SELECTاستفاده کنیم ردیفهایی واکشی میشوند که با مقادیر مشخص شده در فهرست همخوانی ندارند.
سینتکس مبنا برای استفاده از این عبارت ترکیبی را در کوئری زیر نمایش دادهایم.
نمونه کد
در مثال پایین، رکوردهای را از جدول CUSTOMERSنمایش میدهیم که سنشان در ستون AGE با مقادیر 23 ، 25 و 22 برابر نباشد NOT .
خروجی حاصل از اجرای کوئری بالا بر روی جدول فرضی مطلب، به صورت زیر نمایش داده میشود.
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 12000.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
دستور WHERE همراه با عملگر LIKE
استفاده از دستور WHERE همراه با عملگر Like در SQL به فیلتر کردن ردیفهایی کمک میکند که از الگوی خاصی پیروی میکنند. این الگوهای خاص با استفاده از کارکترهای خاصی از قبیل % و _ و [] و غیره نمایش داده میشود. سینتکس ارائه شده در پایین حالت مبنایی این کوئری را نمایش میدهد.
در این سینتکس کلمه column_name نماینده ستونی است که میخواهیم الگوی مورد نظر را با دادههای این ستون مقایسه کنیم. عبارت pattern هم نوع داده رشتهای است که میتواند شامل کاراکترهای خاص از قبیل % و _ و [] و غیره باشد. در بخش بعدی برای این کوئری مثالی را کدنویسی کردهایم.
نمونه کد
کوئری که در پایین آمده است، همه رکوردهایی را نشان میدهد که در آنها مقادیر مربوط به ستون نام NAME با حرف K نمایش داده میشود و حداقل به اندازه چهار کاراکتر طول دارد.
خروجی بدست آمده از اجرای کوئری بالا، به صورت زیر نمایش داده میشود.
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
فیلم های آموزشی مربوط به انواع پایگاه های داده
SQL زبان مخصوص کوئرینویسی برای کار با پایگاههای داده رابطهای است. پایگاههای داده غیر رابطهای زبان کوئرینویسی مخصوص به خود را دارند. خود پایگاههای داده رابطهای چندین نوع مختلف دارند که هر کدام توسط سازمانها و تیمهای برنامهنویسی مختلفی با توجه به نیازهای گوناگون طراحی شدهاند. دورههای مربوط به آموزش هر کدام از این پایگاههای داده با کیفیتهای متفاوت و شرایط خاصی توسط آموزشگاههای مختلفی ارائه میشوند. فرادرس به دلیل تهیه فیلمهای آموزشی با کیفیت و تنوع دورههای مربوط به پایگاه داده یکی از بزرگترین مرجعهای آموزشی دانشجویان و علاقهمندان به علم شده است. کیفیت بالا، نبود محدودیت زمانی، هزینه مقرون به صرفهتر به نسبت کلاسهای حضوری و امکان بازبینی نامحدود فیلمهای آموزشی از جمله عواملی هستند که بر محبوبیت فرادرس افزوده است.

در این بخش فیلمهای آموزشی مربوط به چند پایگاه داده مختلف را همراه تمرینات موجود در هر کدام معرفی کردهایم. در صورتی که گزینه مورد نظرتان در بین موارد زیر نبود، با کلیک بر روی تصویر بالا میتوانید به صفحه اصلی این مجموعه آموزش منتقل شده و فیلمهای بیشتری را بررسی کنید.
- فیلم آموزش پایگاه داده ها و اصول طراحی آن در فرادرس
- فیلم آموزش پایگاه داده MySQL در فرادرس
- فیلم آموزش اوراکل، مدیریت بانک اطلاعاتی با Oracle دوره مقدماتی در فرادرس
- فیلم آموزش پایگاه داده کلیک هاوس، مبانی و مقدمات (رایگان) در فرادرس
- فیلم آموزش مقدماتی PostgreSQL برای مدیریت پایگاه داده در فرادرس
دستور WHERE همراه با عملگرهای AND و OR
برای ایجاد شرایط پیچیده در دستور WHERE در SQL حتی میتوان از ترکیبی از عملگرهای AND و OR نیز استفاده کرد. با استفاده از این شرایط پیچیده میتوانیم ردیفهایی با معیارهای مشخص شدهای را فیلتر کنیم. عملگر AND تضمین میکند که فقط همان ردیفهایی فیلتر شوند که تمام شرایط تعیین شده را تامین میکنند. عملگر OR نیز باعث میشود ردیفهایی فیلتر شوند که حداقل یکی از شرایط تعیین شده را شامل شوند. اگرچه که این عملگرها فقط زمانی استفاده میشوند که شرط مشخص شده برای فیلتر کردن همه ردیفهای مورد نیاز کافی نباشد. یا به عبارت دیگر در زمانهایی که تعداد بیشتر از یک شرط برای جمع آوری دادهها موجود هستند.
کوئری که در ادامه آمده، سینتکس مورد نیاز برای استفاده از عملگرهای AND و OR را در دستور WHERE نمایش میدهد.
نمونه کد
در کوئری نمایش داده شده پایین، میخواهیم همه ردیفهای جدول CUSTOMERSرا بر اساس شرایط خاصی واکشی کنیم. یعنی همه رکوردهایی را فراخوانی کنیم که با شرایط خاص تعریف شده منطبق هستند.

پرانتزها اولویت ارزیابی شرایط را کنترل میکنند. بنابراین عملگر OR در ابتدا اعمال میشود و سپس عملگر AND را بر روی شرایط و دادههای جدول اعمال میکنیم.
بر اثر اجرای کوئری بالا نتیجه زیر در خروجی تولید و نمایش داده میشود.
ID | NAME | AGE | ADDRESS | SALARY |
---|---|---|---|---|
3 | Kaushik | 23 | Kota | 2000.00 |
جمع بندی
در این مطلب از مجله فرادرس، درباره دستور WHERE در SQL و کاربردهای این دستور بحث کردهایم. دستور WHERE بهطور کلی برای فیلتر کردن دادهها استفاده میشود. روش استفاده از این دستور را همراه با سینتکس مبنایی آن نمایش دادیم. انواع روشهای استفاده بهتر از دستور WHERE در SQL همراه با سایر عبارتها از قبیل SELECTو UPDATEو INو LIKEو غیره را توضیح دادیم و برای هر کدام سینتکس مرتبط را همراه با مثالی کدنویسی کردیم.
دستور WHERE یکی از دستورات کلیدی و بسیار مفید و پرکاربرد در SQL است. این دستور کیفیت کوئریها و سرعت نوشتن کوئریها را بالاتر میبرد. همچنین در صورت استفاده صحیح تضمین میکند که دقیقا دادههای مورد نظر را بدست بیاوریم، نه یک داده بیشتر و نه یک داده کمتر.