How to query data using Where clause in SQL

 

What is the WHERE Clause?

We looked at how to query data from a database using the SELECT statement in the previous tutorial. The SELECT statement returned all the results from the queried database table.

They are however, times when we want to restrict the query results to a specified condition. The SQL WHERE clause comes in handy in such situations. 

 

alt

WHERE clause Syntax

The basic syntax for the WHERE clause when used in a SELECT statement is as follows.

SELECT * FROM tableName WHERE condition;

HERE

  • "SELECT * FROM tableName" is the standard SELECT statement
  • "WHERE" is the keyword that restricts our select query result set and "condition" is the filter to be applied on the results. The filter could be a range, single value or sub query.

Let's now look at a practical example.

Suppose we want to get a member's personal details from members table given the membership number 1, we would use the following script to achieve that.

SELECT * FROM `members` WHERE `membership_number` = 1;

Executing the above script in MySQL workbench on the "myflixdb" would produce the following results.

alt

 

WHERE clause combined with AND logical operator

The WHERE clause when used together with the AND logical operator, is only executed if ALL filter criteria specified are met. 

Let's now look at a practical example - Suppose we want to get a list of all the movies in category 2 that were released in 2008, we would use the script shown below is achieve that.
 
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
 

Executing the above script in MySQL workbench against the "myflixdb" produces the following results.

alt

WHERE clause combined with OR logical operator

The WHERE clause when used together with the OR operator, is only executed if any or the entire specified filter criteria is met. 
The following script gets all the movies in either category 1 or category 2
 
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;

Executing the above script in MySQL workbench against the "myflixdb" produces the following results.

 
alt
 

WHERE clause combined with IN keyword

 
The WHERE clause when used together with the IN keyword only affects the rows whose values matches the list of values provided in the IN keyword. IN helps reduces number of OR clauses you may have to use 
The following query gives rows where membership_number is either 1 , 2 or 3
 
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

Executing the above script in MySQL workbench against the "myflixdb" produces the following results.

alt

 

WHERE clause combined with NOT IN keyword

The  WHERE clause when used together with the NOT IN keyword  DOES NOT affects the rows whose values matches the list of values provided in the NOT IN keyword.
The following query gives rows where membership_number is NOT  1 , 2 or 3
 
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

Executing the above script in MySQL workbench against the "myflixdb" produces the following results.

alt

 

WHERE clause combined with comparison operators

The less than (), equal to (=), not equal to () comparison operators can be  used with the Where clause
 

= Equal To

 
The following script gets all the female members from the members table using the equal to comparison operator.
 
SELECT * FROM `members` WHERE `gender` = 'Female';

Executing the above script in MySQL workbench against the "myflixdb" produces the following results.

alt

 

> Greater than

The following script gets all the payments that are greater than 2,000 from the payments table.
SELECT * FROM `payments` WHERE `amount_paid` > 2000;
Executing the above script in MySQL workbench against the "myflixdb" produces the following results.
 
alt
 

< > Not Equal To 

The following script gets all the movies whose category id is not 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Executing the above script in MySQL workbench against the "myflixdb" produces the following results.
 
alt
 

Summary

  • The SQL WHERE clause is used to restrict the number of rows affected by a SELECT, UPDATE or DELETE query.
  • The WHERE clause can be used in conjunction with logical operators such as AND and OR, comparison operators such as ,= etc.
  • When used with the AND logical operator, all the criteria must be met.
  • When used with the OR logical operator, any of the criteria must be met.
  • The key word IN is used to select rows matching a list of values.

Brain Teaser

 
Let's suppose that we want to get a list of rented movies that have not been returned on time 24/06/2012. We can use the WHERE clause together with the less than comparison operator and AND logical operator to achieve that.
 
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Executing the above script in MySQL workbench gives the following results.
 
alt

comments powered by Disqus

Follow Us!

Feedback

Your Feedback is very important to us. Please tell us what you think of these tutorials - http://goo.gl/aPc4K