Return True - SQL - کار با WHERE در دیتابیس

SQL - کار با WHERE در دیتابیس

در این مقاله میخوایم در باره WHERE حرف بزنیم و اینکه چطوری میشه اطلاعات برگشتی از SELECT رو باهاش فیلتر کنیم تا نتیجه مطلوبمون رو نشون بده.

مقدمه ای بر WHERE

دستور SELECT تمامی ردیف های جدول رو بهمون نشون میده. حالا اگه ما بخوایم فقط ردیف هایی با شرایط خاص بهمون نشون داده بشه، باید از WHERE استفاده کنیم. (  مثلا تمام عکس های مربوط به یوزر خاص! ) به همین راحتی.

نحوه استفاده از WHERE به شکل زیر است:

 
SELECT select_list
FROM table_name
WHERE condition
ORDER BY sort_expression

همونطور که میبینین، WHERE سمت راست FROM توی دستور SELECT قرار میگیره و از شرط ها برای فیلتر کردن ردیف ها استفاده میکنه. ردیف هایی که از SELECT برامون میان. شرط ها میتونن TRUE یا FALSE یا UNKNOWN باشن. همچنین میتونن شامل یک شرط و یا ترکیبی از شروطی باشن که با AND یا OR با هم ترکیب شدن.

پس به شکل کلی، Query فقط ردیف هایی رو بر میگردونه که توی شرط صادق باشن.

اگه از Column Alias توی SELECT استفاده میکنین، اجازه استفاده از اونهارو توی WHERE ندارین. 

همچنین بجز SELECT ، میتونیم از WHERE توی UPDATE و DELETE هم استفاده کنیم تا ردیف های خاصی رو ویرایش و یا حذف کنیم.

توی WHERE از عملگرهای منطقی و مقایسه ای به شکل زیر استفاده میشه:

عملگر توضیح
= برابری
> بزرگتر از
< کوچکتر از
>= بزرگتر و یا مساوی
<= کوچکتر و یا مساوی
<> or != عدم تساوی
AND ترکیب شروط
OR جمع شروط
IN مقدار True بر میگرداند وقتی اگر مقدار در لیست وجود داشته باشد
BETWEEN اگر مقداری بین رنجی از مقادیر باشد ، True را برمی گرداند
LIKE وقتی از پترن مورد نظر تبعیت کند، True برمی گرداند
IS NULL وقتی مقدار NULL باشد، True بر می گرداند
NOT مقدار عملگرهای بالا رو برعکس میکند

 

مثال هایی از  WHERE

 بیاین با هم چنتا مثال از  WHERE ببینیم تا بهتر درکش کنیم:

فرض کنین ما یک جدول به اسم  customer داریم با یک سری اطلاعات پیشفرض توش که ساختار زیر رو داره:

SQL - کار با SELECT ORDER BY در دیتابیس

1) استفاده از WHERE و شرط تساوی ( = )

در مثال زیر، از WHERE برای نمایش تمامی کاربرانی که اسم آنها Jamie هست استفاده شده:

 
SELECT
	last_name,
	first_name
FROM
	customer
WHERE
	first_name = 'Jamie';

و در نتیجه :

SQL - کار با WHERE در دیتابیس

2) استفاده از AND در WHERE برای ترکیب شروط

توی مثال زیر، دنبال کاربرانی میگردیم که اسمشون Jamie و همچنین فامیلیشون Rice باشه. واسه این کار، از AND استفاده کردیم. در واقع ما میخوایم هر دو شرط همزمان صادق باشه.

 
SELECT
	last_name,
	first_name
FROM
	customer
WHERE
	first_name = 'Jamie' AND 
        last_name = 'Rice';

و در نتیجه:

SQL - کار با WHERE در دیتابیس

3) استفاده از OR در WHERE برای ترکیب شروط

توی مثال زیر، دنبال کاربرانی میگردیم که اسمشون Adam باشه و یا فامیلیشون Rodriguez باشه. واسه این کار، از OR استفاده کردیم. در واقع ما میخوایم یا اسمشون اونی که ما میخوایم باشه و یا فامیلیشون اونی که میخوایم باشه.

 
SELECT
	first_name,
	last_name
FROM
	customer
WHERE
	last_name = 'Rodriguez' OR 
	first_name = 'Adam';

و در نتیجه:

SQL - کار با WHERE در دیتابیس

4) استفاده از IN در WHERE 

اگه دنبال پیدا کردن یک چیزی، توی لیست از موارد هستیم، از IN استفاده میکنیم. مثال زیر کاربرایی رو بهمون بر میگردونه که اسمشون 

 
SELECT
	first_name,
	last_name
FROM
	customer
WHERE 
	first_name IN ('Ann','Anne','Annie');

و در نتیجه:

5) استفاده از LIKE در WHERE 

وقتی بدنبال پیدا کردن یک پترن خاص هستیم، از LIKE استفاده میکنیم. دستور زیر تمامی افرادی که اسمشون با Ann شروع شده رو بهمون نشون میده. اهمیتی نداره در ادامه چیه اسمشون فقط کافیه با Ann شروع شده باشه.

SELECT
	first_name,
	last_name
FROM
	customer
WHERE 
	first_name LIKE 'Ann%'

و در نتیجه:

توی LIKE از % استفاده میکنیم تا پترنمون رو تعیین کنیم. در واقع به شکل ساده بخوام بگم، وقتی % میزاریم یعنی دیگه مهم نیست. مثلا %R% یعنی تمام عباراتی که حداقل یک R داشته باشند و مهم نیست که اول باشه، وسط و یا آخر. پس % هرجا باشه یعنی اونجاش دیگه مهم نیست.

6) استفاده از BETWEEN در WHERE 

توی مثال زیر، تمامی افرادی که اسمشون با A شروع میشه و همچنین طول اسمشون بین 3 و 5 حرف هست رو از دیتابیس می خونیم. در واقع BETWEEN  بهمون کمک میکنه که یک رنج خاصی رو انتخاب کنیم و وقتی True خواهد بود که بین رنج مورد نظرمون باشه. به مثال زیر توجه کنین:

SELECT
	first_name,
	LENGTH(first_name) name_length
FROM
	customer
WHERE 
	first_name LIKE 'A%' AND
	LENGTH(first_name) BETWEEN 3 AND 5
ORDER BY
	name_length;

و در نتیجه:

توی این مثال ما از تابع LENGTH برای گرفتن طول اسم هر فرد استفاده کردیم.

7) استفاده از <> در WHERE 

وقتی میخوایم عدم تساوی رو چک کنیم، از <> استفاده میکنیم. 

مثال زیر تمامی افرادی که اسمشون با Bra شروع شده باشه ولی فامیلیشون Motley نباشه رو نشون می ده:

SELECT 
	first_name, 
	last_name
FROM 
	customer 
WHERE 
	first_name LIKE 'Bra%' AND 
	last_name <> 'Motley';

و در نتیجه:

میتونیم به جای <> از != استفاده کنیم و هر دو یک معنی رو میده.

توی این مقاله در باره استفاده از WHERE توی SELECT حرف زدیم. نظرتون رو برام کامنت بذارین :)

نظرات