SQL AND & OR Operators



The AND & OR operators are used with the WHERE clause to filter records based on more than one condition.

The AND operator shows a record if all the conditions separated by AND are TRUE.

The OR operator shows a record if any of the conditions separated by OR is TRUE.

The AND & OR operators are called the conjunctive operators.


Selecting Record Based on Multiple Condition

In the previous chapter, we see how to select records from a table using a single condition with the WHERE clause. But in the real-life scenario, we often need to filter records based on multiple conditions like selecting customers that live in the United States and whose ages are greater than 34.


The AND Operator

The AND operator is a logical operator used to combine two conditions and returns TRUE only if both conditions are TRUE.

The AND operator is used to set multiple conditions with the WHERE clause of the SELECT, UPDATE, DELETE statement to form conditions to filter the result set.

AND Syntax

The basic syntax for the AND operator is as the following:

SELECT column1_name, column2_name, ...columnN_name
FROM table_name
WHERE [condition1] AND [condition2] ...AND [conditionN];

You can combine N number of conditions with the AND operator. All conditions separated by the AND operator must be TRUE for the action to be taken by the SQL statement.


The OR operator

The OR operator is also a logical operator used to combine two conditions and returns TRUE if any of the conditions is TRUE.

The difference between AND & OR is their behaviour. The AND operator needs to satisfy all the conditions, while the OR operator needs to satisfy at least one condition.

OR Syntax

The basic syntax for the OR operator is as the following:

SELECT column1_name, column2_name, ...columnN_name
FROM table_name
WHERE [condition1] OR  [condition2] ...OR [conditionN]

You can combine N number of conditions with the OR operator. At least ONE of the conditions separated by the OR operator must be TRUE for the action to be taken by the SQL statement.


Demo Table

Let us suppose that we have a table called "employee" in our database with the following records:

emp_no first_name last_name birth_date hire_date salary dept_name
1 James Smith 1991-10-23 2010-05-13 5600 Customer Service
2 Maria Martinez 1993-06-13 2018-10-08 8000 Development
3 Maria Rodriguez 1994-10-25 2019-01-23 8500 Finance
4 Kayoko Valtorta 1995-09-07 2019-09-08 8600 Development
5 Babette Lamba 1996-03-15 2012-06-06 6000 Finance
6 James Johnson 2001-04-30 2014-02-18 7000 Marketing
7 Brendon Lenart 1998-01-17 2009-12-12 7500 Human Resources

Example Using WHERE Clause with AND Operator

The following SQL statement will return all employees that work in the "Development" department and salary are greater than 8000.

SELECT * FROM employee 
WHERE dept_name = "Development" AND salary > 8000

The output of the above SQL statement will be as the following:

+--------+-------------+-----------+------------+------------+-----------+------------------+
| emp_no | first_name  | last_name | birth_date | hire_date  | salary    | dept_name        |
+--------+-------------+-----------+------------+------------+-----------+------------------+
| 4      | Kayoko      | Valtorta  | 1995-09-07 | 2019-09-08 | 8600      | Development      |
+--------+-------------+-----------+------------+------------+-----------+------------------+

Example Using WHERE Clause with OR Operator

The following SQL statement will return all employees either work in the "Finance" department or salary are greater than 8000.

SELECT * FROM employee
WHERE dept_name = "Finance" OR salary > 8000

This time the output will be as the following:

+--------+-------------+-----------+------------+------------+-----------+------------------+
| emp_no | first_name  | last_name | birth_date | hire_date  | salary    | dept_name        |
+--------+-------------+-----------+------------+------------+-----------+------------------+
| 3      | Maria       | Rodriguez | 1994-10-25 | 2019-01-23 | 8500      | Finance          |
| 4      | Kayoko      | Valtorta  | 1995-09-07 | 2019-09-08 | 8600      | Development      |
| 5      | Babette     | Lamba     | 1996-03-15 | 2012-06-06 | 6000      | Finance          |
+--------+-------------+-----------+------------+------------+-----------+------------------+

Combining AND & OR Operators

You can also combine the AND & OR operators.

The following SQL statement will select all the employees from the employee table whose salary is greater than 7000 and work in the "Finance" or "Human Resources" department.

SELECT * FROM 
FROM employee
WHERE salary > 7000 AND (dept_name = 'Finance' OR dept_name = 'Human Resources');

The above SQL statement will output the following result set:

+--------+-------------+-----------+------------+------------+-----------+------------------+
| emp_no | first_name  | last_name | birth_date | hire_date  | salary    | dept_name        |
+--------+-------------+-----------+------------+------------+-----------+------------------+
| 3      | Maria       | Rodriguez | 1994-10-25 | 2019-01-23 | 8500      | Finance          |
| 7      | Brendon     | Lenart    | 1998-01-17 | 2009-12-12 | 7500      | Human Resources  |
+--------+-------------+-----------+------------+------------+-----------+------------------+

Note: When combining The AND & OR operator, it is important to use parentheses, so the database system will know in which order to evaluate each condition.



ExpectoCode is optimized for learning. Tutorials and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using this site, you agree to have read and accepted our terms of use, cookie and privacy policy.
Copyright 2020-2021 by ExpectoCode. All Rights Reserved.