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

۸۵ بازدید
آخرین به‌روزرسانی: ۰۱ خرداد ۱۴۰۳
زمان مطالعه: ۹ دقیقه
دستور Where در SQL – از کاربرد تا نحوه استفاده به زبان ساده

«زبان کوئری ساختاریافته» (Structured Query Language |SQL) از دستور WHERE در SQL برای فیلتر کردن داده‌ها بر پایه‌های شرایط اعمال شده استفاده می‌کند. این دستور به صورت رایجی در عبارت‌های SELECT و UPDATE و DELETE  استفاده می‌شود. از میان انبوه داده‌های ممکنی که توسط کوئری‌ها از پایگاه داده فراخوانده می‌شوند با کمک دستور WHERE در SQL داده‌های مورد نظر خود را استخراج می‌کنیم. در این مطلب از مجله فرادرس، به طور کلی به ساختار سینتکس و کاربرد این دستور، با یک یا چند شرط مختلف می‌پردازیم. همچنین روش استفاده از این دستور را برای شامل کردن یا استثنا کردن داده‌های خاصی بر اساس کوئری بررسی کرده‌ایم.

997696

جداول پایگاه های داده رابطه‌ای می‌توانند شامل میلیون‌ها ردیف داده شوند. در سناریویی عملی، شاید نخواهید با کل مجموعه داده به صورت همزمان کار کنید. برای مثال، فرض کنیم جدولی برای ضبط همه سفارشات مشتریان داریم، شاید نخواهیم تمام داده‌های در دسترس برنامه را از لحظه ایجاد جدول تا الان نمایش دهیم. شاید داده‌ سفارش خاصی یا سفارش‌هایی در یک محدوده زمانی خاص مانند محدوده سه ماهه یا یک‌ساله را نیاز داریم یا حتی نیاز به داشتن سفارش‌های مشتری خاصی یا سفارش‌ها داده شده از منطقه خاصی را پیدا کرده‌ایم. دستور WHERE در چنین مواردی به فیلترکردن داده‌های هدف از میان انبوه داده‌های موجود به کمک مدیران پایگاه‌های داده می‌آید.

دستور WHERE در SQL چه کاربردی دارد؟

دستور WHERE در SQL برای فیلتر کردن نتایجی به‌کار می‌رود که توسط عبارت‌های «زبان کار با داده‌» (Data Manipulation Language | DML) مانند SELECT و UPDATE  و DELETE بدست می‌آیند. با استفاده از دستور WHERE می‌توانیم از درون یک یا چندین جدول مختلف -با استفاده از عملیات JOIN- داده‌ها را فراخوانی کنیم.

برای نمونه، با استفاده از دستور WHERE می‌توانیم جزییات مربوط به کارمندان بخشی از سازمان را یا کارمندانی که درآمدی بیشتر یا کمتر از حد مشخصی دارند یا حتی جزییات مربوط به دانش‌آموزان مستحق دریافت بورسیه را از جدول پایگاه داده استخراج کنیم. این عبارت به صورت پایه مشخصات خاصی را درباره داده‌ها فراهم می‌کند. این مشخصات تعیین می‌کنند کدام رکوردها باید واکشی شده و کدام رکوردها باید نادیده انگاشته شوند.

تصویرسازی پویا از نمایش تکه کدها و یادگیری sql

سینتکس دستور WHERE در SQL

شکل سینتکس پایه دستور WHERE  را در کد زیر نمایش داده‌ایم.

1DML_Statement column1, column2,... columnN
2FROM table_name
3WHERE [condition];

در کد بالا عبارت DML_Statement می‌تواند هر عبارتی مانند SELECT و UPDATE و DELETE در SQL و غیره باشد. می‌توانیم شرطی را با استفاده از عملگرهای منطقی یا مقایسه‌ای مانند >   و <   و =   و LIKE و NOT  و غیره تعریف کنیم.

چگونه بر کار با SQL Server مسلط شویم؟

دستور WHERE در SQL یکی از دستورات بسیار کلیدی است. چندین دستور دیگر مانند دستور WHERE وجود دارند که برای کار کردن با SQL تا حد زیادی مفید و موثر هستند. SQL زبان ساختار یافته کوئری‌نویسی است که برای کار با پایگاه‌های داده رابطه طراحی شده است. یکی از بهترین نوع از این پایگاه‌‌های داده SQL Server است. در فرادرس برای کار با SQL Server فیلم‌های آموزشی پیشرفته و حرفه‌ای تولید شده‌اند که با مشاهده آن‌ها و تمرین به راحتی بر کار با این پایگاه داده مسلط می‌شوید.

مجموعه آموزش اس کیو ال سرور – مقدماتی تا پیشرفته

در ادامه چند مورد از این فیلم‌های آموزشی را معرفی کرده‌ایم. فیلم‌های آموزشی فرادرس حاوی اطلاعاتی هستند که با حساسیت و دقت بالایی در صحت و تناسب با یکدیگر چیده شده‌اند. در صورت تمایل به دیدن فیلم‌های بیشتر می‌توانید بر روی تصویر بالا کلیک کنید.

دستور WHERE همراه با عبارت SELECT

به‌طور معمول، عبارت SELECT  برای واکشی داده‌ها از جدول‌های پایگاه داده به‌کار می‌رود. در صورت استفاده از دستور WHERE همراه با عبارت SELECT می‌توانیم ردیف‌های واکشی شده را بر اساس شرایط یا عبارات مشخصی فیلتر کنیم. کدی که در ادامه آمده مثالی برای استفاده از دستور WHERE همراه با عبارت SELECT است.

1SELECT column1, column2, ...
2FROM table_name
3WHERE condition;

نمونه کد

فرض کنیم که جدولی به نام CUSTOMERS  در پایگاه داده MySQL با استفاده از دستور CREATE TABLE  ایجاد کرده‌ایم.

کدی پیاده‌سازی شده پایین این فرایند را نشان می‌دهد.

1CREATE TABLE CUSTOMERS (
2   ID INT NOT NULL,
3   NAME VARCHAR (20) NOT NULL,
4   AGE INT NOT NULL,
5   ADDRESS CHAR (25),
6   SALARY DECIMAL (18, 2),
7   PRIMARY KEY (ID)
8);

طبق کدهایی که در پایین نمایش داده‌ شده‌اند با استفاده از کوئری INSERT در SQL در این جدول ۷ رکورد فرضی را وارد کردیم.

1INSERT INTO CUSTOMERS VALUES
2(1, 'Ramesh', 32, 'Ahmedabad', 2000.00),
3(2, 'Khilan', 25, 'Delhi', 1500.00),
4(3, 'Kaushik', 23, 'Kota', 2000.00),
5(4, 'Chaitali', 25, 'Mumbai', 6500.00),
6(5, 'Hardik', 27, 'Bhopal', 8500.00),
7(6, 'Komal', 22, 'Hyderabad', 4500.00),
8(7, 'Muffy', 24, 'Indore', 10000.00);

در نهایت، جدولی که ساخته شده به صورت نمایش داده شده در پایین خواهد بود. در این جدول ID نشان‌دهنده شماره شناسایی کارمند، NAME نام،   AGE  سن، ADDRESS  آدرس و  SALARY میزام حقوق کارمندان را نشان می‌دهد.

IDNAMEAGEADDRESSSALARY
1Ramesh32Ahmedabad2000.00
2Khilan25Delhi1500.00
3Kaushik23Kota2000.00
4Chaitali25Mumbai6500.00
5Hardik27Bhopal8500.00
6Komal22Hyderabad4500.00
7Muffy24Indore10000.00

در کوئری آمده پایین، اطلاعات مربوط به شماره شناسایی ID  ، نام NAME  و حقوق SALARY  را از جدول CUSTOMERS با شرط حداقل درآمد SALARY بالاتر از 2000  واکشی کرده‌ایم.

1SELECT ID, NAME, SALARY FROM CUSTOMERS 
2WHERE SALARY > 2000;

با اجرای کوئری بالا، داده‌های استخراج شده به صورت جدول زیر در خروجی به کاربر نمایش داده می‌شوند.

IDNAMESALARY
4Chaitali6500.00
5Hardik8500.00
6Komal4500.00
7Muffy10000.00

دستور WHERE همراه با عبارت UPDATE

از عبارت UPDATE در SQL برای اصلاح رکوردهای موجود در جدول کمک گرفته می‌شود. با استفاده از دستور WHERE در SQL همراه با عبارت UPDATE می‌توانیم رکورد‌های خاصی را به‌روزرسانی کنیم. اگر از دستور WHERE استفاده نکنیم، عبارت UPDATE بر روی همه رکورد‌های جدول اثر خواهد گذاشت.

در کد پایین، سینتکس پایه مربوط به ترکیب دستور WHERE همراه با عبارت UPDATE را نمایش داده‌ایم.

1UPDATE table_name
2SET column1 = value1, column2 = value2, ...
3WHERE condition;

نمونه کد

در کوئری نمایش داده شده پایین، در حال افزایش حقوق کارمندی به اندازه 10000  واحد هستیم که نامش  Ramesh  است. می‌بینید که این افزایش حقوق را با استفاده از ترکیبی از عبارت‌های WHERE همراه با UPDATE انجام داده‌ایم.

1UPDATE CUSTOMERS set SALARY = SALARY+10000 
2where NAME = 'Ramesh';

پایگاه داده، در خروجی این کوئری، نتیجه نمایش داده شده پایین را برمی‌گرداند.

1Query OK, 1 rows affected (0.02 sec)
2Rows matched: 1  Changed: 1  Warnings: 0

ارزیابی کوئری

برای ارزیابی کردن اینکه آیا نتیجه کوئری در جدول منعکس شده یا نه، همین‌طور که در پایین نمایش داده شده می‌توانیم از عبارت SELECT برای نوشتن کوئری استفاده کنیم.

1SELECT * FROM CUSTOMERS WHERE NAME = 'Ramesh';

در نتیجه اجرای کوئری بالا، باید جدول زیر در خورجی نمایش داده شود.

IDNAMEAGEADDRESSSALARY
1Ramesh32Ahmedabad12000.00

دستور WHERE همراه با عملگر IN

با استفاده از عملگر IN  می‌توانیم فهرستی از مقادیر را مشخص کنیم یا زیر کوئری را در دستور WHERE ایجاد کنیم. اگر از دستور WHERE و عملگر IN همراه با عبارت SELECT استفاده کنیم، می‌توانیم ردیف‌های درون جدولی را که با هر یک از مقادیر درون لیست مشخص شده همخوانی دارند، واکشی کنیم.

خود عبارت SELECT یکی از عبارت‌های بسیار پرکاربرد و کلیدی در SQL است. تسلط به استفاده از این عبارت مهارت کوئری‌نویسی را به طرز چشم‌گیری افزایش می‌دهد. با مطالعه مطلب دستور SELECT در SQL – راهنمای استفاده به زبان ساده همراه با مثال از مجله فرادرس تا حد بسیار خوبی بر این دستور مسلط می‌شوید و تقریبا می‌توانید همه نیازهای خود را درباره این دستور برآورده کنید.

یک لپتاپ باز همراه با پیتزا و نوشابخ بخ روی میز - دستور Where در SQL

کد زیر، حالت سینتکس پایه را برای این کوئری نمایش می‌دهد.

1WHERE column_name IN (value1, value2, ...);

در کد بالا عبارت column_name  نشان‌دهنده نام ستون در جدول است. مقادیر value1  و value2  و غیره فهرست مقادیری هستند که می‌خواهیم با ستون column_name مقایسه کنیم.

نمونه کد

فرض کنیم که باید رکورد‌های با مقادیر Khilan  و Hardik  و Muffy  را از ستون NAME  در جدول CUSTOMERS نمایش دهیم. برای اجرای این خواسته می‌توانیم از کوئری آمده در پایین استفاده کنیم.

1SELECT * from CUSTOMERS 
2WHERE NAME IN ('Khilan', 'Hardik', 'Muffy');

خروجی حاصل از اجرای کوئری بالا بر روی جدول آزمایشی خودمان به صورت زیر نمایش داده خواهد شد.

IDNAMEAGEADDRESSSALARY
2Khilan25Delhi1500.00
5Hardik27Bhopal8500.00
7Muffy24Indore10000.00

دستور WHERE همراه با عملگر NOT IN

دستور WHERE همراه با عملگر NOT IN  دقیقا برعکس دستور WHERE همراه با عملگر IN کار می‌کند.

  • اگر از دستور WHERE  همراه با عملگر IN استفاده کنیم، عبارت DML بر روی لیستی از مقادیر مشخص شده در ستون خاص اعمال می‌شوند که در عبارت به‌طور صریح تعریف شده‌اند.
  • از طرف دیگر، اگر از دستور WHERE همراه با عملگر NOT IN استفاده کنیم. عبارت DML بر روی مقادیری اعمال می‌شود که در مقادیر لیست مشخص شده در ستون خاص نباشند.

بنابراین اگر از دستور WHERE  همراه با عملگر NOT IN در عبارت SELECT استفاده کنیم ردیف‌هایی واکشی می‌شوند که با مقادیر مشخص شده در فهرست هم‌خوانی ندارند.

سینتکس مبنا برای استفاده از این عبارت ترکیبی را در کوئری زیر نمایش داده‌ایم.

1WHERE column_name NOT IN (value1, value2, ...);

نمونه کد

در مثال پایین، رکورد‌های را از جدول CUSTOMERS نمایش می‌دهیم که سنشان در ستون AGE  با مقادیر 23  ، 25  و 22  برابر نباشد NOT  .

1SELECT * from CUSTOMERS WHERE AGE NOT IN (25, 23, 22);

خروجی حاصل از اجرای کوئری بالا بر روی جدول فرضی مطلب، به صورت زیر نمایش داده می‌شود.

IDNAMEAGEADDRESSSALARY
1Ramesh32Ahmedabad12000.00
5Hardik27Bhopal8500.00
7Muffy24Indore10000.00

دستور WHERE همراه با عملگر LIKE

استفاده از دستور WHERE  همراه با عملگر LIKE  به فیلتر کردن ردیف‌هایی کمک می‌کند که از الگوی خاصی پیروی می‌کنند. این الگو‌های خاص با استفاده از کارکتر‌های خاصی از قبیل % و _ و [] و غیره نمایش داده می‌شود. سینتکس ارائه شده در پایین حالت مبنایی این کوئری را نمایش می‌دهد.

1WHERE column_name LIKE pattern;

در این سینتکس کلمه column_name نماینده ستونی است که می‌خواهیم الگوی مورد نظر را با داده‌های این ستون مقایسه کنیم. عبارت pattern  هم نوع داده رشته‌ای است که می‌تواند شامل کاراکتر‌های خاص از قبیل %  و _  و []  و غیره باشد. در بخش بعدی برای این کوئری مثالی را کدنویسی کرده‌ایم.

نمونه کد

کوئری که در پایین آمده است، همه رکورد‌هایی را نشان می‌دهد که در آن‌ها مقادیر مربوط به ستون نام NAME با حرف K  نمایش داده می‌شود و حداقل به اندازه چهار کاراکتر طول دارد.

1SELECT * FROM CUSTOMERS WHERE NAME LIKE 'K___%';

خروجی بدست آمده از اجرای کوئری بالا، به‌ صورت زیر نمایش داده می‌شود.

IDNAMEAGEADDRESSSALARY
2Khilan25Delhi1500.00
3Kaushik23Kota2000.00
6Komal22Hyderabad4500.00

فیلم‌ های آموزشی مربوط به انواع پایگاه های داده

SQL زبان‌ مخصوص کوئری‌نویسی برای کار با پایگاه‌های داده رابطه‌ای است. پایگاه‌های داده غیر رابطه‌ای زبان کوئری‌نویسی مخصوص به خود را دارند. خود پایگاه‌های داده رابطه‌ای چندین نوع مختلف دارند که هر کدام توسط سازمان‌ها و تیم‌های برنامه‌نویسی مختلفی با توجه به نیاز‌های گوناگون طراحی شده‌اند. دوره‌های مربوط به آموزش هر کدام از این پایگاه‌های داده با کیفیت‌های متفاوت و شرایط خاصی توسط آموزشگاه‌های مختلفی ارائه می‌شوند. فرادرس به دلیل تهیه فیلم‌های آموزشی با کیفیت و تنوع دوره‌های مربوط به پایگاه داده یکی از بزرگترین مرجع‌های ‌آموزشی دانشجویان و علاقه‌مندان به علم شده است. کیفیت بالا، نبود محدودیت زمانی، هزینه مقرون به صرفه‌تر به نسبت کلاس‌های حضوری و امکان بازبینی نامحدود فیلم‌های آموزشی از جمله عواملی هستند که بر محبوبیت فرادرس افزوده است.

مجموعه آموزش پایگاه داده – مقدماتی تا پیشرفته

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

دستور WHERE همراه با عملگرهای AND و OR

برای ایجاد شرایط پیچیده در دستور WHERE در SQL حتی می‌توان از ترکیبی از عملگرهای AND و OR  نیز استفاده کرد. با استفاده از این شرایط پیچیده می‌توانیم ردیف‌هایی با معیارهای مشخص شده‌ای را فیلتر کنیم. عملگر AND  تضمین می‌کند که فقط همان ردیف‌هایی فیلتر شوند که تمام شرایط تعیین شده را تامین می‌کنند. عملگر OR نیز باعث می‌شود ردیف‌هایی فیلتر شوند که حداقل یکی از شرایط تعیین شده را شامل شوند. اگرچه که این عملگرها فقط زمانی استفاده می‌شوند که شرط مشخص شده برای فیلتر کردن همه ردیف‌های مورد نیاز کافی نباشد. یا به عبارت دیگر در زمان‌هایی که تعداد بیشتر از یک شرط برای جمع آوری داده‌ها موجود هستند.

کوئری که در ادامه آمده، سینتکس مورد نیاز برای استفاده از عملگرهای AND و OR را در دستور WHERE نمایش می‌دهد.

1WHERE (condition1 OR condition2) AND condition3;

نمونه کد

در کوئری نمایش داده شده پایین، می‌خواهیم همه ردیف‌های جدول CUSTOMERS را بر اساس شرایط خاصی واکشی کنیم. یعنی همه رکوردهایی را فراخوانی کنیم که با شرایط خاص تعریف شده منطبق هستند.

در کلاس درس استاد در حال توضیح مطالب به دانشجویان است

پرانتز‌ها اولویت ارزیابی شرایط را کنترل می‌کنند. بنابراین عملگر OR در ابتدا اعمال می‌شود و سپس عملگر AND را بر روی شرایط و داده‌های جدول اعمال می‌کنیم.

1SELECT * FROM CUSTOMERS
2WHERE (AGE = 25 OR salary < 4500) 
3AND (name = 'Komal' OR name = 'Kaushik');

بر اثر اجرای کوئری بالا نتیجه زیر در خروجی تولید و نمایش داده می‌شود.

IDNAMEAGEADDRESSSALARY
3Kaushik23Kota2000.00

جمع بندی

در این مطلب از مجله فرادرس، درباره دستور WHERE در SQL و کاربردهای این دستور بحث کرده‌ایم. دستور WHERE به‌طور کلی برای فیلتر کردن داده‌ها استفاده می‌شود. روش استفاده از این دستور را همراه با سینتکس مبنایی آن نمایش دادیم. انواع روش‌های استفاده بهتر از دستور WHERE در SQL همراه با سایر عبارت‌ها از قبیل SELECT و UPDATE و IN و LIKE و غیره را توضیح دادیم و برای هر کدام سینتکس مرتبط را همراه با مثالی کدنویسی کردیم.

دستور WHERE یکی از دستورات کلیدی و بسیار مفید و پرکاربرد در SQL است. این دستور کیفیت کوئری‌ها و سرعت نوشتن کوئری‌ها را بالاتر می‌برد. همچنین در صورت استفاده صحیح تضمین می‌کند که دقیقا داده‌های مورد نظر را بدست بیاوریم، نه یک داده بیشتر و نه یک داده کمتر.

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

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