Using AND & OR operators in MySQL 8: A Practical Guide

Updated: January 25, 2024 By: Guest Contributor Post a comment

Introduction

MySQL is one of the most popular relational database management systems used worldwide. The AND & OR operators are logical constructs within MySQL that form the bedrock of complex querying. This tutorial will provide a practical understanding of how to use the AND and OR operators to fetch data that meets multiple criteria in MySQL 8.

Understanding the AND Operator

The AND operator allows you to combine multiple conditions in a WHERE clause. Rows are returned only if they satisfy all the conditions linked with AND. Here’s a basic example:

SELECT * FROM employees WHERE department = 'Sales' AND title = 'Representative';

This query retrieves all employees who work in the Sales department with a title of Representative.

Example with Output:

mysql> SELECT first_name, last_name, department, title 
FROM employees 
WHERE department = 'Sales' AND title = 'Representative';

+------------+-----------+-------------+----------------+ | first_name | last_name | department | title | +------------+-----------+-------------+----------------+ | Emma | Watson| Sales | Representative | | John | Doe | Sales | Representative | +------------+-----------+-------------+----------------+

Understanding the OR Operator

The OR operator is used to combine multiple conditions, but unlike AND, it retrieves rows that satisfy any one of the conditions. Here’s how:

SELECT * FROM products WHERE category = 'Electronics' OR category = 'Furniture';

This query returns all products classified as either Electronics or Furniture.

Example with Output:

mysql> SELECT product_id, product_name, category 
FROM products 
WHERE category = 'Electronics' OR category = 'Furniture';

+------------+--------------------------------+-------------+ | product_id | product_name | category | +------------+--------------------------------+-------------+ | 101 | Electric Sander | Electronics | | 202 | Leather Couch | Furniture | +------------+--------------------------------+-------------+

Combining AND & OR Operators

It is possible to craft queries that use both AND and OR operators. However, operator precedence must be considered; AND is evaluated before OR. To control the execution flow, use parentheses (). Here’s an advanced example:

SELECT * FROM orders 
WHERE (status = 'Shipped' OR status = 'Delivered') 
AND order_date >= '2021-01-01';

This query will display orders that have either been Shipped or Delivered after January 1st, 2021.

Example with Output:

mysql> SELECT order_id, order_date, status
FROM orders
WHERE (status = 'Shipped' OR status = 'Delivered')
AND order_date >= '2021-01-01';

+----------+------------+----------+ | order_id | order_date | status | +----------+------------+----------+ | 1001 | 2021-01-21 | Shipped | | 1012 | 2021-02-11 | Delivered| +----------+------------+----------+

Advanced Filtering with AND & OR Operators

Let’s explore more complex queries, focusing on real-world situations where filtering with these operators becomes indispensable:

1. Filtering Across Multiple Tables:

To query data from multiple related tables, we often utilize the JOIN clause. The following example retrieves information on employees’ names and their project details when they are either Managers or are working on ‘Project Phoenix’:

SELECT e.first_name, e.last_name, p.project_name, p.project_manager
FROM employees e
JOIN projects p ON e.employee_id = p.employee_id
WHERE e.title = 'Manager' OR p.project_name = 'Project Phoenix';

2. Using Subqueries:

Subqueries enable you to use the result of one query as a condition in another. Subqueries in combination with AND & OR operators can produce powerful results. Here’s an example that finds customers who have placed more than 5 orders or have orders totaling more than $500:

SELECT customer_name, email
FROM customers
WHERE customer_id IN (
    SELECT customer_id
    FROM orders
    WHERE order_total > 500
) OR customer_id IN (
    SELECT customer_id
    FROM orders
    GROUP BY customer_id
    HAVING COUNT(order_id) > 5
);

Key Points to Remember

  • Use parentheses to establish the desired precedence in queries combining AND & OR.
  • Remember to index columns that are often used in the WHERE clause to improve query performance.
  • Logical operators can be used not only for text comparisons but also for dates, numbers, and complex conditions which include subqueries and JOIN conditions.

Conclusion

In conclusion, understanding and skillfully applying the AND & OR operators in MySQL can significantly enhance your database querying power. Mastery of these operators allows for more refined data retrieval tailored to specific application requirements.