«زبان کوئری ساختاریافته» (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

میزام حقوق کارمندان را نشان می‌دهد.

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

 واکشی کرده‌ایم.

1SELECT ID, NAME, SALARY FROM CUSTOMERS 
2WHERE 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

را نمایش داده‌ایم.

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';

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

ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 12000.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');

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

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

استفاده کنیم ردیف‌هایی واکشی می‌شوند که با مقادیر مشخص شده در فهرست هم‌خوانی ندارند.

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

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

نمونه کد

در مثال پایین، رکورد‌های را از جدول CUSTOMERS

نمایش می‌دهیم که سنشان در ستون AGE

 با مقادیر 23

 ، 25

 و 22

 برابر نباشد NOT

 .

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

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

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

 به فیلتر کردن ردیف‌هایی کمک می‌کند که از الگوی خاصی پیروی می‌کنند. این الگو‌های خاص با استفاده از کارکتر‌های خاصی از قبیل %

و _

و []

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

1WHERE column_name LIKE pattern;

در این سینتکس کلمه column_name

نماینده ستونی است که می‌خواهیم الگوی مورد نظر را با داده‌های این ستون مقایسه کنیم. عبارت pattern

 هم نوع داده رشته‌ای است که می‌تواند شامل کاراکتر‌های خاص از قبیل %

 و _

 و []

 و غیره باشد. در بخش بعدی برای این کوئری مثالی را کدنویسی کرده‌ایم.

نمونه کد

کوئری که در پایین آمده است، همه رکورد‌هایی را نشان می‌دهد که در آن‌ها مقادیر مربوط به ستون نام NAME

با حرف K

 نمایش داده می‌شود و حداقل به اندازه چهار کاراکتر طول دارد.

1SELECT * FROM CUSTOMERS WHERE NAME LIKE '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 زبان‌ مخصوص کوئری‌نویسی برای کار با پایگاه‌های داده رابطه‌ای است. پایگاه‌های داده غیر رابطه‌ای زبان کوئری‌نویسی مخصوص به خود را دارند. خود پایگاه‌های داده رابطه‌ای چندین نوع مختلف دارند که هر کدام توسط سازمان‌ها و تیم‌های برنامه‌نویسی مختلفی با توجه به نیاز‌های گوناگون طراحی شده‌اند. دوره‌های مربوط به آموزش هر کدام از این پایگاه‌های داده با کیفیت‌های متفاوت و شرایط خاصی توسط آموزشگاه‌های مختلفی ارائه می‌شوند. فرادرس به دلیل تهیه فیلم‌های آموزشی با کیفیت و تنوع دوره‌های مربوط به پایگاه داده یکی از بزرگترین مرجع‌های ‌آموزشی دانشجویان و علاقه‌مندان به علم شده است. کیفیت بالا، نبود محدودیت زمانی، هزینه مقرون به صرفه‌تر به نسبت کلاس‌های حضوری و امکان بازبینی نامحدود فیلم‌های آموزشی از جمله عواملی هستند که بر محبوبیت فرادرس افزوده است.

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

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

دستور 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');

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

ID NAME AGE ADDRESS SALARY
3 Kaushik 23 Kota 2000.00

جمع بندی

در این مطلب از مجله فرادرس، درباره دستور WHERE در SQL و کاربردهای این دستور بحث کرده‌ایم. دستور WHERE

به‌طور کلی برای فیلتر کردن داده‌ها استفاده می‌شود. روش استفاده از این دستور را همراه با سینتکس مبنایی آن نمایش دادیم. انواع روش‌های استفاده بهتر از دستور WHERE در SQL همراه با سایر عبارت‌ها از قبیل SELECT

و UPDATE

و IN

و LIKE

و غیره را توضیح دادیم و برای هر کدام سینتکس مرتبط را همراه با مثالی کدنویسی کردیم.

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

source

توسط expressjs.ir