Retrieving data from tables using the SELECT statement is a fundamental step in SQL. However, simply selecting all data often results in an overwhelming amount of information. Imagine a table with thousands or even millions of customer records. You rarely need all of them at once. Instead, the goal is typically to focus on a specific subset of data, such as customers from a particular city, orders placed after a certain date, or products within a specific price range.
This is where the WHERE clause comes into play. It's the primary tool in SQL for filtering rows. Think of it as setting conditions that each row must meet to be included in your query results. If a row satisfies the condition specified in the WHERE clause, it's kept; otherwise, it's discarded.
The WHERE clause allows you to specify search criteria. It filters the rows returned by the FROM clause before any grouping or ordering happens. In a basic SELECT statement, the WHERE clause comes immediately after the FROM clause:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
Here, condition represents a logical expression that evaluates to either TRUE, FALSE, or UNKNOWN for each row in the table_name. Only the rows for which the condition evaluates to TRUE are included in the final result set.
A condition typically involves comparing a column's value to a specific value or another column's value using comparison operators (which we'll cover next). For example, you might want to find all users older than 30, or all orders totaling more than $100.
Let's consider a simple Products table:
| ProductID | ProductName | Category | Price |
|---|---|---|---|
| 1 | Laptop | Tech | 1200 |
| 2 | Keyboard | Tech | 75 |
| 3 | Coffee Mug | Home | 15 |
| 4 | Desk Chair | Office | 250 |
| 5 | Wireless Mouse | Tech | 25 |
If you only want to see products from the 'Tech' category, you would use a WHERE clause like this:
SELECT ProductID, ProductName, Price
FROM Products
WHERE Category = 'Tech';
When the database processes this query, it looks at each row in the Products table:
Category is 'Tech'. Condition Category = 'Tech' is TRUE. Keep the row.Category is 'Tech'. Condition Category = 'Tech' is TRUE. Keep the row.Category is 'Home'. Condition Category = 'Tech' is FALSE. Discard the row.Category is 'Office'. Condition Category = 'Tech' is FALSE. Discard the row.Category is 'Tech'. Condition Category = 'Tech' is TRUE. Keep the row.The resulting output would be:
| ProductID | ProductName | Price |
|---|---|---|
| 1 | Laptop | 1200 |
| 2 | Keyboard | 75 |
| 5 | Wireless Mouse | 25 |
Notice how only the rows matching the WHERE Category = 'Tech' condition are returned. Also, note that text values like 'Tech' are usually enclosed in single quotes (' ') in SQL. Numeric values generally don't require quotes.
The WHERE clause is an incredibly useful part of SQL for data analysis, allowing you to precisely target the data you need. In the following sections, we will look at the various operators you can use to build more sophisticated filtering conditions.
Was this section helpful?
© 2026 ApX Machine LearningEngineered with