آموزش گامبهگام SQL Server با دیتابیس نمونهی AdventureWorks | از مبتدی تا پیشرفته | (قسمت ۲)
درس ۲: فیلتر کردن دادهها با عبارت WHERE
🎯 هدف درس:
در این درس یاد میگیرید چگونه با استفاده از عبارت WHERE دادههای جدول را بر اساس شرایط خاص فیلتر کنید. این دستور یکی از مهمترین بخشهای SQL است که در اکثر کوئریها استفاده میشود.
📘 مفهوم نظری:
عبارت WHERE برای محدود کردن نتایج استفاده میشود تا فقط رکوردهایی نمایش داده شوند که شرایط تعریفشده را برآورده میکنند. در ادامه، ۱۰ الگوی کاربردی از استفاده آن را مشاهده میکنید.
۱. شرط برابری (=):
SELECT Columns FROM TableName WHERE Column = Value;
کاربرد: انتخاب رکوردهایی که مقدار یک ستون برابر با مقدار مشخصی است.
SELECT FirstName, LastName
FROM Person.Person
WHERE Title = 'Mr.';
۲. شرط نابرابری (<>):
SELECT Columns FROM TableName WHERE Column <> Value;
کاربرد: انتخاب رکوردهایی که مقدارشان متفاوت از مقدار مشخصشده است.
SELECT FirstName, LastName
FROM Person.Person
WHERE Title <> 'Ms.';
۳. مقایسه عددی (>, <, >=, <=):
SELECT Columns FROM TableName WHERE Column > Value;
کاربرد: مقایسه عددی بین مقادیر برای یافتن رکوردهای بزرگتر یا کوچکتر از مقدار مشخص.
SELECT Name, ListPrice
FROM Production.Product
WHERE ListPrice > 1000;
۴. بازه مقادیر با BETWEEN:
SELECT Columns FROM TableName WHERE Column BETWEEN A AND B;
کاربرد: انتخاب رکوردهایی که مقدار آنها در بازهای از A تا B قرار دارد.
SELECT Name, ListPrice
FROM Production.Product
WHERE ListPrice BETWEEN 500 AND 1500;
۵. بررسی چند مقدار با IN:
SELECT Columns FROM TableName WHERE Column IN (Value1, Value2, ...);
کاربرد: بررسی اینکه مقدار ستون در بین چند مقدار خاص وجود دارد یا نه.
SELECT CustomerID, TerritoryID
FROM Sales.Customer
WHERE TerritoryID IN (1, 3, 5);
۶. بررسی رشتهها با LIKE:
SELECT Columns FROM TableName WHERE Column LIKE 'Pattern';
کاربرد: جستجوی رشتهها با الگو. از % برای چند کاراکتر و _ برای یک کاراکتر استفاده میشود.
SELECT EmailAddress
FROM Person.EmailAddress
WHERE EmailAddress LIKE '%adventure-works%';
۷. مقدار تهی با IS NULL:
SELECT Columns FROM TableName WHERE Column IS NULL;
کاربرد: پیدا کردن رکوردهایی که مقدار مشخصی ندارند (NULL).
SELECT FirstName, MiddleName, LastName
FROM Person.Person
WHERE MiddleName IS NULL;
۸. ترکیب چند شرط با AND:
SELECT Columns FROM TableName WHERE Condition1 AND Condition2;
کاربرد: انتخاب رکوردهایی که همهی شرایط را همزمان برآورده کنند.
SELECT Name, ListPrice
FROM Production.Product
WHERE ListPrice > 500 AND ListPrice < 1000;
۹. ترکیب چند شرط با OR:
SELECT Columns FROM TableName WHERE Condition1 OR Condition2;
کاربرد: انتخاب رکوردهایی که حداقل یکی از شرایط را داشته باشند.
SELECT Name, ListPrice
FROM Production.Product
WHERE ListPrice < 300 OR ListPrice > 2000;
۱۰. فیلتر تاریخها:
SELECT Columns FROM TableName WHERE DateColumn >= 'YYYY-MM-DD';
کاربرد: فیلتر دادهها بر اساس بازههای زمانی یا تاریخ مشخص.
SELECT SalesOrderID, OrderDate, TotalDue
FROM Sales.SalesOrderHeader
WHERE OrderDate BETWEEN '2013-01-01' AND '2013-12-31';
🧠 تمرینهای عملی:
- تمرین ۱: محصولاتی با قیمت بالاتر از 2000 دلار را فهرست کنید.
- تمرین ۲: کارمندانی که عنوان شغلی آنها برابر با ‘Design Engineer’ است را نمایش دهید.
- تمرین ۳: مشتریهایی که در ناحیه 1 یا 3 فعالیت دارند را انتخاب کنید.
- تمرین ۴: سفارشهایی که بین سالهای 2012 تا 2013 ثبت شدهاند را فهرست کنید.
- تمرین ۵ (چالشی): محصولاتی که یا قیمتشان کمتر از 500 است یا فاقد مقدار ListPrice هستند را نمایش دهید.
💡 پاسخ تمرینهای عملی:
-- تمرین ۱
SELECT Name, ListPrice
FROM Production.Product
WHERE ListPrice > 2000;
-- تمرین ۲
SELECT BusinessEntityID, JobTitle
FROM HumanResources.Employee
WHERE JobTitle = 'Design Engineer';
-- تمرین ۳
SELECT CustomerID, TerritoryID
FROM Sales.Customer
WHERE TerritoryID IN (1, 3);
-- تمرین ۴
SELECT SalesOrderID, OrderDate, TotalDue
FROM Sales.SalesOrderHeader
WHERE OrderDate BETWEEN '2012-01-01' AND '2013-12-31';
-- تمرین ۵ (چالشی)
SELECT ProductID, Name, ListPrice
FROM Production.Product
WHERE ListPrice < 500 OR ListPrice IS NULL;
📚 جمعبندی درس:
در این درس یاد گرفتیم که با استفاده از عبارت WHERE میتوان دادهها را بر اساس شرایط دلخواه فیلتر کرد. این عبارت در ترکیب با عملگرهایی مانند =، <>، LIKE، IN، BETWEEN و IS NULL یکی از مهمترین ابزارها برای کنترل خروجی کوئریها است. در درس بعدی، با دستور ORDER BY یاد میگیریم چطور نتایج را مرتبسازی و محدود کنیم.




دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.