w3resource

SQL Logical Operators

Logical Operators

The Logical operators are those that are true or false. They return a true or false values to combine one or more true or false values.

The Logical operators are:

Operator Description
AND Logical AND compares between two Booleans as expression and returns true when both expressions are true...
OR Logical OR compares between two Booleans as expression and returns true when one of the expression is true...
NOT Not takes a single Boolean as an argument and changes its value from false to true or from true to false....
Special operators
Operator Description Operates on
IN The IN operator checks a value within a set of values separated by commas and retrieve the rows from the table which are matching.... Any set of values of the same datatype
BETWEEN The SQL BETWEEN operator tests an expression against a range. The range consists of a beginning, followed by an AND keyword and an end expression.... Numeric, characters, or datetime values
ANY ANY compares a value to each value in a list or results from a query and evaluates to true if the result of an inner query contains at least one row.... A value to a list or a single - columns set of values
ALL ALL is used to select all records of a SELECT STATEMENT. It compares a value to every value in a list or results from a query. The ALL must be preceded by the comparison operators and evaluates to TRUE if the query returns no rows.... A value to a list or a single - columns set of values
SOME SOME compare a value to each value in a list or results from a query and evaluate to true if the result of an inner query contains at least one row... A value to a list or a single - columns set of values
EXISTS The EXISTS checks the existence of a result of a subquery. The EXISTS subquery tests whether a subquery fetches at least one row. When no data is returned then this operator returns 'FALSE'... Table

Syntax:

SELECT [column_name | * | expression] [logical operator]
[column_name | * | expression .....]
FROM <table_name>
WHERE <expressions> [ logical operator |
arithmetic operator | ...] <expressions>;

Parameters:

Name Description
column_name Name of the column of a table.
* All the columns of a table.
expression Expression made up of a single constant, variable, scalar function, or column name and can also be the pieces of a SQL query that compare values against other values or perform arithmetic calculations.
table_name Name of the sable.
logical operator AND, OR , NOT etc.
arithmetic operator Plus(+), minus(-), multiply(*) and divide(/).

Contents:

SQL Logical AND operator

Logical AND compares two Booleans as expression and returns TRUE when both of the conditions are TRUE and returns FALSE when either is FALSE; otherwise, returns UNKNOWN (an operator that has one or two NULL expressions returns UNKNOWN).

Example:

Sample table: customer
+-----------+-------------+-------------+--------------+--------------+-------+-------------+-------------+-------------+---------------+--------------+------------+  
|CUST_CODE  | CUST_NAME   | CUST_CITY   | WORKING_AREA | CUST_COUNTRY | GRADE | OPENING_AMT | RECEIVE_AMT | PAYMENT_AMT |OUTSTANDING_AMT| PHONE_NO     | AGENT_CODE |
+-----------+-------------+-------------+--------------+--------------+-------+-------------+-------------+-------------+---------------+--------------+------------+
| C00013    | Holmes      | London      | London       | UK           |     2 |     6000.00 |     5000.00 |     7000.00 |       4000.00 | BBBBBBB      | A003       |
| C00001    | Micheal     | New York    | New York     | USA          |     2 |     3000.00 |     5000.00 |     2000.00 |       6000.00 | CCCCCCC      | A008       |
| C00020    | Albert      | New York    | New York     | USA          |     3 |     5000.00 |     7000.00 |     6000.00 |       6000.00 | BBBBSBB      | A008       |
| C00025    | Ravindran   | Bangalore   | Bangalore    | India        |     2 |     5000.00 |     7000.00 |     4000.00 |       8000.00 | AVAVAVA      | A011       |
| C00024    | Cook        | London      | London       | UK           |     2 |     4000.00 |     9000.00 |     7000.00 |       6000.00 | FSDDSDF      | A006       |
| C00015    | Stuart      | London      | London       | UK           |     1 |     6000.00 |     8000.00 |     3000.00 |      11000.00 | GFSGERS      | A003       |
| C00002    | Bolt        | New York    | New York     | USA          |     3 |     5000.00 |     7000.00 |     9000.00 |       3000.00 | DDNRDRH      | A008       |
| C00018    | Fleming     | Brisban     | Brisban      | Australia    |     2 |     7000.00 |     7000.00 |     9000.00 |       5000.00 | NHBGVFC      | A005       |
| C00021    | Jacks       | Brisban     | Brisban      | Australia    |     1 |     7000.00 |     7000.00 |     7000.00 |       7000.00 | WERTGDF      | A005       |
| C00019    | Yearannaidu | Chennai     | Chennai      | India        |     1 |     8000.00 |     7000.00 |     7000.00 |       8000.00 | ZZZZBFV      | A010       |
| C00005    | Sasikant    | Mumbai      | Mumbai       | India        |     1 |     7000.00 |    11000.00 |     7000.00 |      11000.00 | 147-25896312 | A002       |
| C00007    | Ramanathan  | Chennai     | Chennai      | India        |     1 |     7000.00 |    11000.00 |     9000.00 |       9000.00 | GHRDWSD      | A010       |
| C00022    | Avinash     | Mumbai      | Mumbai       | India        |     2 |     7000.00 |    11000.00 |     9000.00 |       9000.00 | 113-12345678 | A002       |
| C00004    | Winston     | Brisban     | Brisban      | Australia    |     1 |     5000.00 |     8000.00 |     7000.00 |       6000.00 | AAAAAAA      | A005       |
| C00023    | Karl        | London      | London       | UK           |     0 |     4000.00 |     6000.00 |     7000.00 |       3000.00 | AAAABAA      | A006       |
| C00006    | Shilton     | Torento     | Torento      | Canada       |     1 |    10000.00 |     7000.00 |     6000.00 |      11000.00 | DDDDDDD      | A004       |
| C00010    | Charles     | Hampshair   | Hampshair    | UK           |     3 |     6000.00 |     4000.00 |     5000.00 |       5000.00 | MMMMMMM      | A009       |
| C00017    | Srinivas    | Bangalore   | Bangalore    | India        |     2 |     8000.00 |     4000.00 |     3000.00 |       9000.00 | AAAAAAB      | A007       |
| C00012    | Steven      | San Jose    | San Jose     | USA          |     1 |     5000.00 |     7000.00 |     9000.00 |       3000.00 | KRFYGJK      | A012       |
| C00008    | Karolina    | Torento     | Torento      | Canada       |     1 |     7000.00 |     7000.00 |     9000.00 |       5000.00 | HJKORED      | A004       |
| C00003    | Martin      | Torento     | Torento      | Canada       |     2 |     8000.00 |     7000.00 |     7000.00 |       8000.00 | MJYURFD      | A004       |
| C00009    | Ramesh      | Mumbai      | Mumbai       | India        |     3 |     8000.00 |     7000.00 |     3000.00 |      12000.00 | Phone No     | A002       |
| C00014    | Rangarappa  | Bangalore   | Bangalore    | India        |     2 |     8000.00 |    11000.00 |     7000.00 |      12000.00 | AAAATGF      | A001       |
| C00016    | Venkatpati  | Bangalore   | Bangalore    | India        |     2 |     8000.00 |    11000.00 |     7000.00 |      12000.00 | JRTVFDD      | A007       |
| C00011    | Sundariya   | Chennai     | Chennai      | India        |     3 |     7000.00 |    11000.00 |     7000.00 |      11000.00 | PPHGRTS      | A010       |
+-----------+-------------+-------------+--------------+--------------+-------+-------------+-------------+-------------+---------------+--------------+------------+

To get data of 'cust_code', 'cust_name', 'cust_city', 'cust_country' and 'grade' from the 'customer' table with following conditions -

1. 'cust_country'  must be  ’UK’,

2. and 'grade' of the 'customer'   must be  2,

the following SQL statement can be used :

SQL Code:


SELECT cust_code, cust_name, cust_city, cust_country, grade
-- Selecting specific columns: cust_code, cust_name, cust_city, cust_country, and grade
FROM customer
-- From the table named "customer"
WHERE cust_country = 'UK' AND grade = 2;
-- Where the value in the column "cust_country" is 'UK' AND the value in the column "grade" is 2

Explanation:

  • SELECT cust_code, cust_name, cust_city, cust_country, grade: This specifies that we want to retrieve specific columns (cust_code, cust_name, cust_city, cust_country, and grade) from the table.

  • FROM customer: This indicates the table from which we want to retrieve the data. In this case, the table is named "customer".

  • WHERE cust_country = 'UK' AND grade = 2: This is a conditional clause that filters the rows returned by the query. It specifies that only rows where the value in the "cust_country" column is 'UK' and the value in the "grade" column is 2 should be included in the result set.

Output:

CUST_CODE CUST_NAME            CUST_CITY                           CUST_COUNTRY           GRADE
--------- -------------------- ----------------------------------- -------------------- ----------
C00013    Holmes               London                              UK                    2
C00024    Cook                 London                              UK                    2

Relational Algebra Expression:

Relational Algebra Expression: SQL Logical AND operator.

Relational Algebra Tree:

Relational Algebra Tree: SQL Logical AND operator

SQL Logical OR operator

Logical OR compares two Booleans as expression and returns TRUE when either of the conditions is TRUE and returns FALSE when both are FALSE. otherwise, returns UNKNOWN (an operator that has one or two NULL expressions returns UNKNOWN).

Example:

To get data of 'cust_code', 'cust_name', 'cust_city', 'cust_country' and 'grade' from the 'customer' with following conditions -

1. either 'cust_country' is  ’USA’,

2. or 'grade' of the 'customer' is  3,

the following SQL statement can be used :

SQL Code:


SELECT cust_code, cust_name, cust_city, cust_country, grade
-- Selecting specific columns: cust_code, cust_name, cust_city, cust_country, and grade
FROM customer
-- From the table named "customer"
WHERE cust_country = 'USA' OR grade = 3;
-- Where the value in the column "cust_country" is 'USA' OR the value in the column "grade" is 3

Explanation:

  • SELECT cust_code, cust_name, cust_city, cust_country, grade: This specifies that we want to retrieve specific columns (cust_code, cust_name, cust_city, cust_country, and grade) from the table.

  • FROM customer: This indicates the table from which we want to retrieve the data. In this case, the table is named "customer".

  • WHERE cust_country = 'USA' OR grade = 3: This is a conditional clause that filters the rows returned by the query. It specifies that rows where the value in the "cust_country" column is 'USA' or the value in the "grade" column is 3 should be included in the result set.

Output:

CUST_CODE       CUST_NAME          CUST_CITY                           CUST_COUNTRY              GRADE
--------------- ----------------- ----------------------------------- -------------------- ----------
C00001          Micheal            New York                            USA                   2
C00020          Albert             New York                            USA                   3
C00002          Bolt               New York                            USA                   3
C00010          Charles            Hampshair                           UK                    3
C00012          Steven             San Jose                            USA                   1
C00009          Ramesh             Mumbai                              India                 3
C00011          Sundariya          Chennai                             India                 3

Relational Algebra Expression:

Relational Algebra Expression: SQL Logical OR operator.

Relational Algebra Tree:

Relational Algebra Tree: SQL Logical OR operator

SQL Logical NOT operator

Logical NOT takes a single Boolean as an argument and changes its value from false to true or from true to false.

Example:

To get all columns from the 'customer' table with following condition -

1. grade for the customer not greater than 1,

the following SQL statement can be used :

SQL Code:


-- Selecting all columns (*)
FROM customer
-- From the table named "customer"
WHERE NOT grade > 1;
-- Where the value in the column "grade" is NOT greater than 1

Explanation:

  • SELECT *: This specifies that we want to retrieve all columns from the table.

  • FROM customer: This indicates the table from which we want to retrieve the data. In this case, the table is named "customer".

  • WHERE NOT grade > 1: This is a conditional clause that filters the rows returned by the query. It specifies that rows where the value in the "grade" column is NOT greater than 1 should be included in the result set.

Output:

CUST_CODE       CUST_NAME       CUST_CITY       WORKING_AREA   CUST_COUNTRY         GRADE 
--------------- --------------- --------------- -------------- -------------------- ---------- ---------
C00015          Stuart          London          London         UK                    1        .....
C00021          Jacks           Brisban         Brisban        Australia             1        ....
C00019          Yearannaidu     Chennai         Chennai        India                 1       .....
C00005          Sasikant        Mumbai          Mumbai         India                 1       .....
C00007          Ramanathan      Chennai         Chennai        India                 1        .....
C00004          Winston         Brisban         Brisban        Australia             1        .....
C00023          Karl            London          London         UK                    0        .....
C00006          Shilton         Torento         Torento        Canada                1       .....
C00012          Steven          San Jose        San Jose       USA                   1        .....
C00008          Karolina        Torento         Torento        Canada                1        .....

Relational Algebra Expression:

Relational Algebra Expression: SQL Logical OR operator.

Relational Algebra Tree:

Relational Algebra Tree: SQL Logical OR operator

SQL Logical multiple AND operator

In the following topics, we are discussing the usage of multiple AND operator.

In the following example, more than one 'AND' operators along with the SQL SELECT STATEMENT is used.

Example:

To get data of 'cust_code', 'cust_name', 'cust_city', 'cust_country' and 'grade' from the 'customer' table with following conditions -

1.'cust_country' is  ’UK',

2.and 'cust_city' is 'London',

3.and 'grade' of the 'customer' must be greater than 1,

the following SQL statement can be used :

SQL Code:


SELECT cust_code, cust_name, cust_city, cust_country, grade
-- Selecting specific columns: cust_code, cust_name, cust_city, cust_country, and grade
FROM customer
-- From the table named "customer"
WHERE cust_country = 'UK'
-- Where the value in the column "cust_country" is 'UK'
AND cust_city = 'London'
-- And the value in the column "cust_city" is 'London'
AND grade > 1;
-- And the value in the column "grade" is greater than 1

Explanation:

  • SELECT cust_code, cust_name, cust_city, cust_country, grade: This specifies that we want to retrieve specific columns (cust_code, cust_name, cust_city, cust_country, and grade) from the table.

  • FROM customer: This indicates the table from which we want to retrieve the data. In this case, the table is named "customer".

  • WHERE cust_country = 'UK' AND cust_city = 'London' AND grade > 1: This is a conditional clause that filters the rows returned by the query. It specifies that only rows where the value in the "cust_country" column is 'UK', the value in the "cust_city" column is 'London', and the value in the "grade" column is greater than 1 should be included in the result set.

Output:

CUST_CODE       CUST_NAME       CUST_CITY       CUST_COUNTRY              GRADE
--------------- --------------- --------------- -------------------- ----------
C00013          Holmes          London          UK                            2
C00024          Cook            London          UK                            2

Relational Algebra Expression:

Relational Algebra Expression: SQL Logical multiple AND operator.

Relational Algebra Tree:

Relational Algebra Tree: SQL Logical multiple AND operator.

SQL Logical AND OR comparison operator

In the following topic, we are discussing the usage of 'AND' and 'OR' operator.

Using AND OR comparison operator with the select statement an example have shown.

Example:

To get data of 'cust_code', 'cust_name', 'cust_city', 'cust_country' and 'grade' from the 'customer' table with following conditions -

1. 'cust_country' is  ’UK’ or cust_city is 'London' ,

2. and 'grade' of the 'customer' must be other than 3 ,

the following SQL statement can be used :

SQL Code:


SELECT cust_code, cust_name, cust_city, cust_country, grade
-- Selecting specific columns: cust_code, cust_name, cust_city, cust_country, and grade
FROM customer
-- From the table named "customer"
WHERE (cust_country = 'UK' OR cust_city = 'London')
-- Where the value in the column "cust_country" is 'UK' OR the value in the column "cust_city" is 'London'
AND grade <> 3;
-- And the value in the column "grade" is not equal to 3

Explanation:

  • SELECT cust_code, cust_name, cust_city, cust_country, grade: This specifies that we want to retrieve specific columns (cust_code, cust_name, cust_city, cust_country, and grade) from the table.

  • FROM customer: This indicates the table from which we want to retrieve the data. In this case, the table is named "customer".

  • WHERE (cust_country = 'UK' OR cust_city = 'London') AND grade <> 3: This is a conditional clause that filters the rows returned by the query. It specifies that only rows where either the value in the "cust_country" column is 'UK' or the value in the "cust_city" column is 'London', and the value in the "grade" column is not equal to 3 should be included in the result set.

Output:

CUST_CODE       CUST_NAME       CUST_CITY       CUST_COUNTRY              GRADE
--------------- --------------- --------------- -------------------- ----------
C00013          Holmes          London          UK                            2
C00024          Cook            London          UK                            2
C00015          Stuart          London          UK                            1
C00023          Karl            London          UK                            0

Relational Algebra Expression:

Relational Algebra Expression: SQL Logical AND OR comparison operator.

Relational Algebra Tree:

Relational Algebra Tree: SQL Logical AND OR comparison operator.

SQL Logical NOT AND operator

In the following example, NOT, AND operator along with the SQL SELECT STATEMENT have used.

Example:

To get data of 'cust_code', 'cust_name', 'cust_city', 'cust_country' and 'grade' from the 'customer' table with following conditions -

1. 'cust_country' must be 'India',

2. and 'grade' of the 'customer' must be other than 3,

the following SQL statement can be used :

SQL Code:


SELECT cust_code, cust_name, cust_city, cust_country, grade
-- Selecting specific columns: cust_code, cust_name, cust_city, cust_country, and grade
FROM customer
-- From the table named "customer"
WHERE cust_country = 'India'
-- Where the value in the column "cust_country" is 'India'
AND NOT grade = 3;
-- And the value in the column "grade" is not equal to 3

Explanation:

  • SELECT cust_code, cust_name, cust_city, cust_country, grade: This specifies that we want to retrieve specific columns (cust_code, cust_name, cust_city, cust_country, and grade) from the table.

  • FROM customer: This indicates the table from which we want to retrieve the data. In this case, the table is named "customer".

  • WHERE cust_country = 'India' AND NOT grade = 3: This is a conditional clause that filters the rows returned by the query. It specifies that only rows where the value in the "cust_country" column is 'India' and the value in the "grade" column is not equal to 3 should be included in the result set.

Output:

CUST_CODE       CUST_NAME       CUST_CITY       CUST_COUNTRY              GRADE
--------------- --------------- --------------- -------------------- ----------
C00025          Ravindran       Bangalore       India                         2
C00017          Srinivas        Bangalore       India                         2
C00014          Rangarappa      Bangalore       India                         2
C00016          Venkatpati      Bangalore       India                         2
C00019          Yearannaidu     Chennai         India                         1
C00007          Ramanathan      Chennai         India                         1
C00005          Sasikant        Mumbai          India                         1
C00022          Avinash         Mumbai          India                         2

Relational Algebra Expression:

Relational Algebra Expression: SQL Logical NOT AND operator.

Relational Algebra Tree:

Relational Algebra Tree: SQL Logical NOT AND operator.

SQL Logical NOT AND comparison operator

In the following example, we are going to discuss the usage of NOT and AND comparison operator along with the SQL SELECT STATEMENT.

Example:

To get data of 'cust_code', 'cust_name', 'cust_city', 'cust_country' and 'grade' from the 'customer' table with following conditions -

1.'cust_country' is other than 'India',

2.and 'grade' of the 'customer' must be 3,

the following SQL statement can be used :

SQL Code:


SELECT cust_code, cust_name, cust_city, cust_country, grade
-- Selecting specific columns: cust_code, cust_name, cust_city, cust_country, and grade
FROM customer
-- From the table named "customer"
WHERE NOT cust_country = 'India' AND grade = 3;
-- Where the value in the column "cust_country" is NOT 'India' AND the value in the column "grade" is 3

Explanation:

  • SELECT cust_code, cust_name, cust_city, cust_country, grade: This specifies that we want to retrieve specific columns (cust_code, cust_name, cust_city, cust_country, and grade) from the table.

  • FROM customer: This indicates the table from which we want to retrieve the data. In this case, the table is named "customer".

  • WHERE NOT cust_country = 'India' AND grade = 3: This is a conditional clause that filters the rows returned by the query. It specifies that only rows where the value in the "cust_country" column is NOT 'India' and the value in the "grade" column is 3 should be included in the result set.

Output:

CUST_CODE       CUST_NAME       CUST_CITY       CUST_COUNTRY              GRADE
--------------- --------------- --------------- -------------------- ----------
C00020          Albert          New York        USA                           3
C00002          Bolt            New York        USA                           3
C00010          Charles         Hampshair       UK                            3

Relational Algebra Expression:

Relational Algebra Expression: SQL Logical NOT AND comparison operator.

Relational Algebra Tree:

Relational Algebra Tree: SQL Logical NOT AND comparison operator.

SQL Logical multiple NOT operator

In the following topics, we are discussing the usage of multiple NOT operator.

In the following example, more than one NOT operators with the SQL SELECT STATEMENT have used.

Example:

To get data of 'cust_code', 'cust_name', 'cust_city', 'cust_country' and 'grade' from the 'customer' table with following conditions -

1. 'cust_country' is other than 'India',

2. and 'cust_city' must be other than 'London',

3. and 'grade' of the 'customer' must be other than 1,

the following SQL statement can be used :

SQL Code:


SELECT cust_code, cust_name, cust_city, cust_country, grade
-- Selecting specific columns: cust_code, cust_name, cust_city, cust_country, and grade
FROM customer
-- From the table named "customer"
WHERE NOT cust_country = 'India'
-- Where the value in the column "cust_country" is NOT 'India'
AND NOT cust_city = 'London'
-- And the value in the column "cust_city" is NOT 'London'
AND NOT grade = 1;
-- And the value in the column "grade" is NOT 1

Explanation:

  • SELECT cust_code, cust_name, cust_city, cust_country, grade: This specifies that we want to retrieve specific columns (cust_code, cust_name, cust_city, cust_country, and grade) from the table.

  • FROM customer: This indicates the table from which we want to retrieve the data. In this case, the table is named "customer".

  • WHERE NOT cust_country = 'India': This is a conditional clause that filters the rows returned by the query. It specifies that only rows where the value in the "cust_country" column is NOT 'India' should be included in the result set.

  • AND NOT cust_city = 'London': This further narrows down the results by excluding rows where the value in the "cust_city" column is NOT 'London'.

  • AND NOT grade = 1: This adds another condition to the query, ensuring that rows where the value in the "grade" column is NOT 1 are also included.

Output:

CUST_CODE       CUST_NAME       CUST_CITY       CUST_COUNTRY              GRADE
--------------- --------------- --------------- -------------------- ----------
C00001          Micheal         New York        USA                           2
C00020          Albert          New York        USA                           3
C00002          Bolt            New York        USA                           3
C00018          Fleming         Brisban         Australia                     2
C00010          Charles         Hampshair       UK                            3
C00003          Martin          Torento         Canada                        2

Relational Algebra Expression:

Relational Algebra Expression: SQL Logical multiple NOT operator.

Relational Algebra Tree:

Relational Algebra Tree: SQL Logical multiple NOT operator.

SQL Logical multiple NOT with equal to (=) operator

In the following topic, we are discussing the usage of multiple NOT operator with EQUAL TO operator.

In the following example, more than one Not operators and comparison operator equal to ( = ) with the SQL SELECT STATEMENT have used.

Example:

To get data of 'cust_code', 'cust_name', 'cust_city', 'cust_country' and 'grade' from the 'customer' table with following conditions -

1. 'cust_country' is other than 'India',

2. and 'cust_city' must be other than 'London',

3. and 'grade' of the 'customer' must be 1 ,

the following SQL statement can be used :

SQL Code:


SELECT cust_code, cust_name, cust_city, cust_country, grade
-- Selecting specific columns: cust_code, cust_name, cust_city, cust_country, and grade
FROM customer
-- From the table named "customer"
WHERE NOT cust_country = 'India'
-- Where the value in the column "cust_country" is NOT 'India'
AND NOT cust_city = 'London'
-- And the value in the column "cust_city" is NOT 'London'
AND grade = 1;
-- And the value in the column "grade" is 1

Explanation:

  • SELECT cust_code, cust_name, cust_city, cust_country, grade: This specifies that we want to retrieve specific columns (cust_code, cust_name, cust_city, cust_country, and grade) from the table.

  • FROM customer: This indicates the table from which we want to retrieve the data. In this case, the table is named "customer".

  • WHERE NOT cust_country = 'India': This is a conditional clause that filters the rows returned by the query. It specifies that only rows where the value in the "cust_country" column is NOT 'India' should be included in the result set.

  • AND NOT cust_city = 'London': This further narrows down the results by excluding rows where the value in the "cust_city" column is NOT 'London'.

  • AND grade = 1: This adds another condition to the query, ensuring that rows where the value in the "grade" column is 1 are also included.

Output:

CUST_CODE       CUST_NAME       CUST_CITY       CUST_COUNTRY              GRADE
--------------- --------------- --------------- -------------------- ----------
C00021          Jacks           Brisban         Australia                     1
C00004          Winston         Brisban         Australia                     1
C00006          Shilton         Torento         Canada                        1
C00012          Steven          San Jose        USA                           1
C00008          Karolina        Torento         Canada                        1

Relational Algebra Expression:

Relational Algebra Expression: SQL Logical multiple NOT with equal to (=) operator.

Relational Algebra Tree:

Relational Algebra Tree: SQL Logical multiple NOT with equal to (=) operator.

SQL Logical multiple NOT with not equal to operator

In the following topic, we are discussing the usage of multiple NOT operator with NOT EQUAL TO operator.

In the following example, 'NOT' operator and comparison operator 'not equal to' ( < > ) along with the SQL SELECT STATEMENT have used.

Example:

To get data of 'cust_code', 'cust_name', 'cust_city', 'cust_country' and 'grade' from the 'customer' table with following conditions -

1. 'cust_country' is other than 'India',S

2. and 'cust_city' must be other than 'London' ,

3. and 'grade' of the 'customer' must be not equal to other than 1,

the following SQL statement can be used :

SQL Code:


SELECT cust_code, cust_name, cust_city, cust_country, grade 
-- Selecting specific columns: cust_code, cust_name, cust_city, cust_country, and grade 
FROM customer 
-- From the table named "customer" 
WHERE NOT cust_country = 'India' 
-- Where the value in the column "cust_country" is NOT 'India' 
AND NOT cust_city = 'London' 
-- And the value in the column "cust_city" is NOT 'London' 
AND NOT grade <> 1;
-- And the value in the column "grade" is NOT NOT equal to 1

Explanation:

  • SELECT cust_code, cust_name, cust_city, cust_country, grade: This specifies that we want to retrieve specific columns (cust_code, cust_name, cust_city, cust_country, and grade) from the table.

  • FROM customer: This indicates the table from which we want to retrieve the data. In this case, the table is named "customer".

  • WHERE NOT cust_country = 'India': This is a conditional clause that filters the rows returned by the query. It specifies that only rows where the value in the "cust_country" column is NOT 'India' should be included in the result set.

  • AND NOT cust_city = 'London': This further narrows down the results by excluding rows where the value in the "cust_city" column is NOT 'London'.

  • AND NOT grade <> 1: This condition seems to be incorrectly formulated. NOT grade <> 1 essentially means "grade is not not equal to 1," which is equivalent to "grade is equal to 1." So, this part of the query contradicts the intended logic of selecting only rows where the grade is not equal to 1.

Output:

CUST_CODE       CUST_NAME       CUST_CITY       CUST_COUNTRY              GRADE
--------------- --------------- --------------- -------------------- ----------
C00021          Jacks           Brisban         Australia                     1
C00004          Winston         Brisban         Australia                     1
C00006          Shilton         Torento         Canada                        1
C00012          Steven          San Jose        USA                           1
C00008          Karolina        Torento         Canada                        1

Relational Algebra Expression:

Relational Algebra Expression: SQL Logical multiple NOT with not equal to operator.

Relational Algebra Tree:

Relational Algebra Tree: SQL Logical multiple NOT with not equal to operator.

SQL Logical NOT AND OR operator

In the example 'NOT' 'AND' 'OR' operator along with the SQL SELECT STATEMENT have used.

Example - 1:

To get data of 'cust_code',  'cust_name',  ' cust_city',  'cust_country' and 'grade' from the 'customer' table with following conditions -

1. 'cust_country' is not other than 'UK',

2. or 'cust_city' must be other than 'Bangalore' ,

3. and 'grade' of the 'customer' must be greater than 1,

the following SQL statement can be used :

SQL Code:


SELECT cust_code, cust_name, cust_city, cust_country, grade 
-- Selecting specific columns: cust_code, cust_name, cust_city, cust_country, and grade 
FROM customer 
-- From the table named "customer" 
WHERE NOT (cust_country = 'UK' OR cust_city = 'Bangalore') 
-- Where the value in the column "cust_country" is NOT 'UK' OR the value in the column "cust_city" is NOT 'Bangalore' 
AND grade > 1;
-- And the value in the column "grade" is greater than 1

Explanation:

  • SELECT cust_code, cust_name, cust_city, cust_country, grade: This specifies that we want to retrieve specific columns (cust_code, cust_name, cust_city, cust_country, and grade) from the table.

  • FROM customer: This indicates the table from which we want to retrieve the data. In this case, the table is named "customer".

  • WHERE NOT (cust_country = 'UK' OR cust_city = 'Bangalore'): This is a conditional clause that filters the rows returned by the query. It specifies that only rows where the value in the "cust_country" column is NOT 'UK' or the value in the "cust_city" column is NOT 'Bangalore' should be included in the result set.

  • AND grade > 1: This further narrows down the results by including only rows where the value in the "grade" column is greater than 1.

Output:

CUST_CODE       CUST_NAME       CUST_CITY       CUST_COUNTRY              GRADE
--------------- --------------- --------------- -------------------- ----------
C00001          Micheal         New York        USA                           2
C00020          Albert          New York        USA                           3
C00002          Bolt            New York        USA                           3
C00018          Fleming         Brisban         Australia                     2
C00022          Avinash         Mumbai          India                         2
C00003          Martin          Torento         Canada                        2
C00009          Ramesh          Mumbai          India                         3
C00011          Sundariya       Chennai         India                         3

Relational Algebra Expression:

Relational Algebra Expression: SQL Logical NOT AND OR operator.

Relational Algebra Tree:

Relational Algebra Tree: SQL Logical NOT AND OR operator.

Example - 2:

To get data data of all 'cust_code', 'cust_name', 'cust_city', 'cust_country' and 'grade' from the 'customer' table with following conditions -

1. grade is 1 or 'agent_code' is A003 will not come,

2. and 'cust_country' is 'India' will not come,

here is the SQL statement can be used :

SQL Code:


SELECT cust_code, cust_name, cust_city, cust_country, grade
-- Selecting specific columns: cust_code, cust_name, cust_city, cust_country, and grade
FROM customer
-- From the table named "customer"
WHERE NOT((grade = 1 OR agent_code = 'A003')
-- Where the value in the column "grade" is equal to 1 OR the value in the column "agent_code" is equal to 'A003'
AND cust_country = 'India');
-- And the value in the column "cust_country" is 'India'

Explanation:

  • SELECT cust_code, cust_name, cust_city, cust_country, grade: This specifies that we want to retrieve specific columns (cust_code, cust_name, cust_city, cust_country, and grade) from the table.

  • FROM customer: This indicates the table from which we want to retrieve the data. In this case, the table is named "customer".

  • WHERE NOT((grade = 1 OR agent_code = 'A003') AND cust_country = 'India'): This is a conditional clause that filters the rows returned by the query. It specifies that only rows where the value in the "grade" column is not equal to 1 or the value in the "agent_code" column is not equal to 'A003' and the value in the "cust_country" column is not 'India' should be included in the result set.

Output:

CUST_CODE       CUST_NAME       CUST_CITY       CUST_COUNTRY              GRADE
--------------- --------------- --------------- -------------------- ----------
C00013          Holmes          London          UK                            2
C00001          Micheal         New York        USA                           2
C00020          Albert          New York        USA                           3
C00025          Ravindran       Bangalore       India                         2
C00024          Cook            London          UK                            2
C00015          Stuart          London          UK                            1
C00002          Bolt            New York        USA                           3
C00018          Fleming         Brisban         Australia                     2
C00021          Jacks           Brisban         Australia                     1
C00022          Avinash         Mumbai          India                         2
C00004          Winston         Brisban         Australia                     1
C00023          Karl            London          UK                            0
C00006          Shilton         Torento         Canada                        1
C00010          Charles         Hampshair       UK                            3
C00017          Srinivas        Bangalore       India                         2
C00012          Steven          San Jose        USA                           1
C00008          Karolina        Torento         Canada                        1
C00003          Martin          Torento         Canada                        2
C00009          Ramesh          Mumbai          India                         3
C00014          Rangarappa      Bangalore       India                         2
C00016          Venkatpati      Bangalore       India                         2
C00011          Sundariya       Chennai         India                         3

Relational Algebra Expression:

Relational Algebra Expression: SQL Logical NOT AND OR operator.

Relational Algebra Tree:

Relational Algebra Tree: SQL Logical NOT AND OR operator.

SQL Logical AND NOT OR with EQUAL TO ( = ) operator

In the following topic, we are discussing the usage of logical AND, NOT, OR and comparison operator EQUAL TO (=) in a select statement.

Example:

To get data of 'cust_code', 'cust_name', 'cust_city', 'cust_country' and 'grade' from the 'customer' table with following conditions -

1. 'cust_country' is not other than 'UK' ,

2. or 'cust_city' must be not other than 'Bangalore' ,

3. and 'grade' of the 'customer' must be greater than 1 and other than 3,

the following SQL statement can be used :

SQL Code:


SELECT cust_code, cust_name, cust_city, cust_country, grade 
-- Selecting specific columns: cust_code, cust_name, cust_city, cust_country, and grade 
FROM customer 
-- From the table named "customer" 
WHERE NOT (cust_country = 'UK' OR cust_city = 'Bangalore') 
-- Where the value in the column "cust_country" is NOT 'UK' AND the value in the column "cust_city" is NOT 'Bangalore' 
AND grade > 1 
-- And the value in the column "grade" is greater than 1 
AND NOT grade = 3;
-- And the value in the column "grade" is NOT 3

Explanation:

  • SELECT cust_code, cust_name, cust_city, cust_country, grade: This specifies that we want to retrieve specific columns (cust_code, cust_name, cust_city, cust_country, and grade) from the table.

  • FROM customer: This indicates the table from which we want to retrieve the data. In this case, the table is named "customer".

  • WHERE NOT (cust_country = 'UK' OR cust_city = 'Bangalore'): This is a conditional clause that filters the rows returned by the query. It specifies that only rows where the value in the "cust_country" column is NOT 'UK' and the value in the "cust_city" column is NOT 'Bangalore' should be included in the result set.

  • AND grade > 1: This further narrows down the results by including only rows where the value in the "grade" column is greater than 1.

  • AND NOT grade = 3: This adds another condition to the query, ensuring that rows where the value in the "grade" column is NOT 3 are also included.

Output:

CUST_CODE       CUST_NAME       CUST_CITY       CUST_COUNTRY              GRADE
--------------- --------------- --------------- -------------------- ----------
C00001          Micheal         New York        USA                           2
C00018          Fleming         Brisban         Australia                     2
C00022          Avinash         Mumbai          India                         2
C00003          Martin          Torento         Canada                        2

Relational Algebra Expression:

Relational Algebra Expression: SQL Logical AND NOT OR with EQUAL TO ( = ) operator.

Relational Algebra Tree:

Relational Algebra Tree: SQL Logical AND NOT OR with EQUAL TO ( = ) operator.

SQL Logical AND NOT OR with LESS THAN, GREATER THAN operator

In the following topic, we are discussing the usage of logical AND NOT OR with LESS THAN (< ) GREATER THAN (>) operator.

Example:

To get data of 'cust_code', 'cust_name', 'cust_city', 'cust_country' and 'grade' from the 'customer' table with following conditions -

1. 'cust_country' is not other than 'UK',

2. or 'cust_city' must be not other than 'Bangalore',

3. and 'grade' of the customer must be within the range 1 to 3,

the following SQL statement can be used :

SQL Code:


SELECT cust_code, cust_name, cust_city, cust_country, grade 
-- Selecting specific columns: cust_code, cust_name, cust_city, cust_country, and grade 
FROM customer 
-- From the table named "customer" 
WHERE NOT (cust_country = 'UK' OR cust_city = 'Bangalore') 
-- Where the value in the column "cust_country" is NOT 'UK' AND the value in the column "cust_city" is NOT 'Bangalore' 
AND grade > 1 
-- And the value in the column "grade" is greater than 1 
AND grade < 3;
-- And the value in the column "grade" is less than 3

Explanation:

  • SELECT cust_code, cust_name, cust_city, cust_country, grade: This specifies that we want to retrieve specific columns (cust_code, cust_name, cust_city, cust_country, and grade) from the table.

  • FROM customer: This indicates the table from which we want to retrieve the data. In this case, the table is named "customer".

  • WHERE NOT (cust_country = 'UK' OR cust_city = 'Bangalore'): This is a conditional clause that filters the rows returned by the query. It specifies that only rows where the value in the "cust_country" column is NOT 'UK' and the value in the "cust_city" column is NOT 'Bangalore' should be included in the result set.

  • AND grade > 1: This further narrows down the results by including only rows where the value in the "grade" column is greater than 1.

  • AND grade < 3: This adds another condition to the query, ensuring that rows where the value in the "grade" column is less than 3 are also included.

Output:

CUST_CODE  CUST_NAME         CUST_CITY           CUST_COUNTRY      GRADE
---------- ----------------- ------------------ ---------------- ------------
C00001     Micheal           New York            USA                   2
C00018     Fleming           Brisban             Australia             2
C00022     Avinash           Mumbai              India                 2
C00003     Martin            Torento             Canada                2

Relational Algebra Expression:

Relational Algebra Expression: SQL Logical AND NOT OR with EQUAL TO ( = ) operator.

Relational Algebra Tree:

Relational Algebra Tree: SQL Logical AND NOT OR with EQUAL TO ( = ) operator.

SQL Logical AND OR NOT with date value

In the following topic, we are discussing the usage of three operators 'AND', 'OR' and 'NOT' with date value.

Using AND , OR, NOT and comparison operator with the select statement an example have shown

Example - 1:

Sample table: orders
   ORD_NUM ORD_AMOUNT ADVANCE_AMOUNT ORD_DATE  CUST_CODE       AGENT_CODE      ORD_DESCRIPTION
---------- ---------- -------------- --------- --------------- --------------- -----------------
    200114       3500           2000 15-AUG-08 C00002          A008
    200122       2500            400 16-SEP-08 C00003          A004
    200118        500            100 20-JUL-08 C00023          A006
    200119       4000            700 16-SEP-08 C00007          A010
    200121       1500            600 23-SEP-08 C00008          A004
    200130       2500            400 30-JUL-08 C00025          A011
    200134       4200           1800 25-SEP-08 C00004          A005
    200108       4000            600 15-FEB-08 C00008          A004
    200103       1500            700 15-MAY-08 C00021          A005
    200105       2500            500 18-JUL-08 C00025          A011
    200109       3500            800 30-JUL-08 C00011          A010
    200101       3000           1000 15-JUL-08 C00001          A008
    200111       1000            300 10-JUL-08 C00020          A008
    200104       1500            500 13-MAR-08 C00006          A004
    200106       2500            700 20-APR-08 C00005          A002
    200125       2000            600 10-OCT-08 C00018          A005
    200117        800            200 20-OCT-08 C00014          A001
    200123        500            100 16-SEP-08 C00022          A002
    200120        500            100 20-JUL-08 C00009          A002
    200116        500            100 13-JUL-08 C00010          A009
    200124        500            100 20-JUN-08 C00017          A007
    200126        500            100 24-JUN-08 C00022          A002
    200129       2500            500 20-JUL-08 C00024          A006
    200127       2500            400 20-JUL-08 C00015          A003
    200128       3500           1500 20-JUL-08 C00009          A002
    200135       2000            800 16-SEP-08 C00007          A010
    200131        900            150 26-AUG-08 C00012          A012
    200133       1200            400 29-JUN-08 C00009          A002
    200100       1000            600 08-JAN-08 C00015          A003
    200110       3000            500 15-APR-08 C00019          A010
    200107       4500            900 30-AUG-08 C00007          A010
    200112       2000            400 30-MAY-08 C00016          A007
    200113       4000            600 10-JUN-08 C00022          A002
    200102       2000            300 25-MAY-08 C00012          A012

To get data of 'ord_num',  'ord_amount',  'advance_amount',  'ord_date', 'cust_code', 'agent_code' from the 'orders' table with following conditions -

1. combination of 'ord_date'  is '20-Jul-08' and 'ord_num' is greater than 200120 will not appear,

2. or 'ord_amount' must be greater than or equal to 4000,

the following SQL statement can be used :

SQL Code:


SELECT ord_num, ord_amount, advance_amount, ord_date, cust_code, agent_code 
-- Selecting specific columns: ord_num, ord_amount, advance_amount, ord_date, cust_code, and agent_code 
FROM orders 
-- From the table named "orders" 
WHERE NOT ((ord_date = '20-Jul-08' AND ord_num > 200120) 
-- Where the value in the column "ord_date" is '20-Jul-08' AND the value in the column "ord_num" is greater than 200120 
OR ord_amount < 4000);
-- OR the value in the column "ord_amount" is less than 4000

Explanation:

  • SELECT ord_num, ord_amount, advance_amount, ord_date, cust_code, agent_code: This specifies that we want to retrieve specific columns (ord_num, ord_amount, advance_amount, ord_date, cust_code, and agent_code) from the table.

  • FROM orders: This indicates the table from which we want to retrieve the data. In this case, the table is named "orders".

  • WHERE NOT ((ord_date = '20-Jul-08' AND ord_num > 200120) OR ord_amount < 4000): This is a conditional clause that filters the rows returned by the query. It specifies that only rows where the value in the "ord_date" column is not '20-Jul-08' and the value in the "ord_num" column is not greater than 200120 or the value in the "ord_amount" column is not less than 4000 should be included in the result set.

Output:

   ORD_NUM ORD_AMOUNT ADVANCE_AMOUNT ORD_DATE  CUST_CODE  AGENT_CODE
---------- ---------- -------------- --------- ---------- ----------
    200119       4000            700 16-SEP-08 C00007     A010
    200134       4200           1800 25-SEP-08 C00004     A005
    200108       4000            600 15-FEB-08 C00008     A004
    200107       4500            900 30-AUG-08 C00007     A010
    200113       4000            600 10-JUN-08 C00022     A002

Relational Algebra Expression:

Relational Algebra Expression: SQL Logical AND OR NOT with date value.

Relational Algebra Tree:

Relational Algebra Tree: SQL Logical AND OR NOT with date value.

Example - 2:

To retrieve data of 'ord_num', 'ord_amount', 'advance_amount', 'ord_date', 'cust_code', and 'agent_code' from the 'orders' table with the following conditions:

1. 'ord_amount' must be below 1000,

2. The combination where 'ord_date' is '20-Jul-08' and 'ord_num' is greater than 200108 will not appear,

the following SQL statement can be used :

SQL Code:


SELECT ord_num, ord_amount, advance_amount, ord_date, cust_code, agent_code 
-- Selecting specific columns: ord_num, ord_amount, advance_amount, ord_date, cust_code, and agent_code 
FROM orders
-- From the table named "orders"
WHERE (ord_amount < 1000 AND NOT (ord_date = '20-Jul-08' AND ord_num > 200108));
-- Where the value in the column "ord_amount" is less than 1000 
-- AND NOT ((the value in the column "ord_date" is '20-Jul-08' AND the value in the column "ord_num" is greater than 200108))

Explanation:

  • SELECT ord_num, ord_amount, advance_amount, ord_date, cust_code, agent_code: This specifies that we want to retrieve specific columns (ord_num, ord_amount, advance_amount, ord_date, cust_code, and agent_code) from the table.

  • FROM orders: This indicates the table from which we want to retrieve the data. In this case, the table is named "orders".

  • WHERE (ord_amount < 1000 AND NOT (ord_date = '20-Jul-08' AND ord_num > 200108)): This is a conditional clause that filters the rows returned by the query. It specifies that only rows where the value in the "ord_amount" column is less than 1000 and where the value in the "ord_date" column is not '20-Jul-08' or the value in the "ord_num" column is not greater than 200108 should be included in the result set.

Output:

ORD_NUM    ORD_AMOUNT ADVANCE_AMOUNT ORD_DATE  CUST_CODE  AGENT_CODE
---------- ---------- -------------- --------- ---------- ----------
    200117        800            200 20-OCT-08 C00014     A001
    200123        500            100 16-SEP-08 C00022     A002
    200116        500            100 13-JUL-08 C00010     A009
    200124        500            100 20-JUN-08 C00017     A007
    200126        500            100 24-JUN-08 C00022     A002
    200131        900            150 26-AUG-08 C00012     A012

Relational Algebra Expression:

Relational Algebra Expression: SQL Logical AND OR NOT with date value.

Relational Algebra Tree:

Relational Algebra Tree: SQL Logical AND OR NOT with date value.

See our Model Database;

Check out our 1000+ SQL Exercises with solution and explanation to improve your skills.



Follow us on Facebook and Twitter for latest update.