Filtering Data: WHERE Clause and Operators
Dive deeper into the WHERE clause and learn how to use various operators (>, <, =, LIKE, IN, BETWEEN) to filter your data and retrieve specific results.
Mastering MySQL: Filtering Data with the WHERE Clause
Filtering Data: The WHERE Clause and Operators
The WHERE
clause in SQL is a powerful tool for filtering data based on specific conditions. It allows you to retrieve only the rows that meet your criteria from a table. This is fundamental to efficient data retrieval and analysis.
Think of the WHERE
clause as a filter that separates the wheat from the chaff, only letting the relevant data pass through.
Diving Deeper into the WHERE Clause and Operators
The WHERE
clause becomes much more versatile when combined with various operators. These operators allow you to create a wide range of conditions for filtering your data.
Comparison Operators
>
(Greater Than): Selects rows where a column's value is greater than a specified value.SELECT * FROM products WHERE price > 50;
This query retrieves all rows from the
products
table where theprice
is greater than 50.<
(Less Than): Selects rows where a column's value is less than a specified value.SELECT * FROM orders WHERE order_date < '2023-01-01';
This query retrieves all rows from the
orders
table where theorder_date
is before January 1st, 2023.=
(Equal To): Selects rows where a column's value is equal to a specified value.SELECT * FROM users WHERE country = 'USA';
This query retrieves all rows from the
users
table where thecountry
is 'USA'.>=
(Greater Than or Equal To): Selects rows where a column's value is greater than or equal to a specified value.SELECT * FROM employees WHERE salary >= 60000;
This query retrieves all rows from the
employees
table where thesalary
is greater than or equal to 60000.<=
(Less Than or Equal To): Selects rows where a column's value is less than or equal to a specified value.SELECT * FROM products WHERE quantity <= 10;
This query retrieves all rows from the
products
table where thequantity
is less than or equal to 10.!=
or<>
(Not Equal To): Selects rows where a column's value is not equal to a specified value.SELECT * FROM customers WHERE city != 'New York';
This query retrieves all rows from the
customers
table where thecity
is not 'New York'. Both!=
and<>
are commonly used and equivalent in MySQL.
Pattern Matching: LIKE Operator
The LIKE
operator is used for pattern matching in strings. It is often used with wildcard characters:
%
(Percent Sign): Represents zero, one, or multiple characters.SELECT * FROM products WHERE name LIKE 'App%';
This query retrieves all rows from the
products
table where thename
starts with 'App'. Examples: 'Apple', 'Application', 'Applesauce'._
(Underscore): Represents a single character.SELECT * FROM products WHERE code LIKE 'A_C';
This query retrieves all rows from the
products
table where thecode
starts with 'A', has any character in the second position, and ends with 'C'. Examples: 'ABC', 'A1C', 'AAC'.NOT LIKE
: The opposite ofLIKE
. It selects rows that *do not* match the specified pattern.SELECT * FROM customers WHERE email NOT LIKE '%@example.com';
This query retrieves all rows from the
customers
table where theemail
address does *not* end with '@example.com'.
Membership Testing: IN Operator
The IN
operator allows you to specify a list of values to match against a column. It's a shorthand way of combining multiple =
conditions with OR
.
SELECT * FROM orders WHERE status IN ('Shipped', 'Delivered');
This query retrieves all rows from the orders
table where the status
is either 'Shipped' or 'Delivered'.
Equivalently, this could be written as:
SELECT * FROM orders WHERE status = 'Shipped' OR status = 'Delivered';
But the IN
operator is generally more readable, especially with a longer list of values.
Range Checking: BETWEEN Operator
The BETWEEN
operator selects rows where a column's value falls within a specified range (inclusive).
SELECT * FROM products WHERE price BETWEEN 20 AND 100;
This query retrieves all rows from the products
table where the price
is between 20 and 100 (inclusive, meaning 20 and 100 are also included).
The NOT BETWEEN
operator selects rows where the value is *outside* the specified range.
SELECT * FROM products WHERE price NOT BETWEEN 20 AND 100;
Combining Operators
You can combine these operators using logical operators like AND
, OR
, and NOT
to create more complex filtering conditions.
SELECT * FROM customers WHERE country = 'USA' AND city = 'New York';
This query retrieves all rows from the customers
table where the country
is 'USA' *and* the city
is 'New York'.
SELECT * FROM employees WHERE salary > 50000 OR title = 'Manager';
This query retrieves all rows from the employees
table where the salary
is greater than 50000 *or* the title
is 'Manager'.
SELECT * FROM products WHERE category = 'Electronics' AND NOT discounted = 1;
This query retrieves all rows from the products
table where the category
is 'Electronics' *and* the discounted
flag is *not* set to 1 (meaning it's 0 or NULL). The NOT
operator negates the following condition.