MySQL - Boolean Datatype



A Boolean data type is used to represent truth values of logic and Boolean algebra. It has two possible values: either true or false.

For example, if a customer wants to see all the bikes that are black in colour, we can filter them using BOOLEAN operator, as given in the following table −

Boolean

Here, 'IS_BLACK' is the BOOLEAN column that returns either true or false values based on the colours of the bikes.

Boolean in MySQL

In MySQL, there is no built-in Boolean or Bool data type. Instead MySQL provides us with the TINYINT datatype to store the Boolean values.

MySQL considers the value 0 as FALSE and 1 as TRUE. We can also store NULL values using the TINYINT datatype.

The Boolean values (such as TRUE and FALSE) are not case-sensitive.

Syntax

Following is the syntax of the BOOLEAN operator in MySQL −

CREATE TABLE table_name (
   Column_name BOOLEAN
);

Example

In MySQL, 0 is defined as FALSE and any non-zero values are defined as TRUE −

SELECT TRUE, FALSE;

Output

As we can see in the output below, TRUE and FALSE are represented as 1 and 0 −

TRUE FALSE
1 0

Example

In MySQL, the Boolean values (TRUE and FALSE) are case-insensitive −

SELECT true, false, TRUE, FALSE, True, False;

Output

The output produced is as given below −

true false TRUE FALSE True False
1 0 1 0 1 0

Example

Now, let's create a table with the name CUSTOMERS using the following query. Here, the AVAILABILITY column specifies whether the customer is available or not. If the bit value is 0 (FALSE), the customer is not available. If it is 1(TRUE), the customer is available −

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   NAME VARCHAR(40),
   AVAILABILITY BOOLEAN
);

Following is the output produced −

Query OK, 0 rows affected (0.02 sec)

To get the information about the CUSTOMERS table, use the following query −

DESCRIBE CUSTOMERS;

If we look at the AVAILABILITY column, which has been set to BOOLEAN while creating the table, it now shows type of TINYINT −

Field Type Null Key Default Extra
ID int NO PRI NULL auto_increment
NAME varchar(40) YES NULL
AVAILABILITY tinyint(1) YES NULL

Now, let us insert some records into the CUSTOMERS table using the following INSERT query −

INSERT INTO CUSTOMERS VALUES 
(1, 'Ramesh', FALSE),
(2, 'Khilan', TRUE),
(4, 'Kaushik', NULL);

Using the below query, we can display all the values in the table −

SELECT * FROM CUSTOMERS;

We can see the values in the AVAILABILITY column are set to 0 and 1 respectively. −

ID NAME AVAILABILITY
1 Ramesh 0
2 Khilan 1
4 Kaushik NULL

Replacing BOOLEAN 0,1 with TRUE and FALSE

As we can see in the above CUSTOMERS table, the BOOLEAN data type shows 0 and 1 values instead of TRUE and FALSE. In MySQL, we can convert BOOLEAN data type to TRUE and FALSE values using the CASE statement.

The MySQL CASE statement is a conditional statement that goes through conditions and return a values when the first condition is met. Therefore, once a condition is true, it will stop reading the next piece of code and return the result.

If no conditions are true, it will return the value in the ELSE clause. If no ELSE clause is present and no conditions are true, it returns NULL.

Syntax

Following is the syntax of CASE statement in MySQL −

CASE
   WHEN condition1 THEN result1
   WHEN condition2 THEN result2
   ...
   WHEN conditionN THEN resultN
   ELSE result
END;

Example

To get a better understanding, let us consider the BIKES table created using the query below −

CREATE TABLE BIKES (
   S_NO INT AUTO_INCREMENT PRIMARY KEY,
   COMPANY VARCHAR(40) NOT NULL,
   PRICE INT NOT NULL,
   COLOUR VARCHAR(40) NOT NULL,
   IS_BLACK BOOLEAN
);

Example

Output of the above code is as follows −

Query OK, 0 rows affected (0.03 sec)

Now, let us insert values into the BIKES table using the INSERT statement as shown below −

INSERT INTO BIKES (COMPANY, PRICE, COLOUR, IS_BLACK) 
VALUES ('Royal Enfield', 300000, 'Black', 1);
INSERT INTO BIKES (COMPANY, PRICE, COLOUR, IS_BLACK) 
VALUES ('BMW', 900000, 'Blue', 0);
INSERT INTO BIKES (COMPANY, PRICE, COLOUR, IS_BLACK) 
VALUES ('Jawa', 150000, 'Black', 1);
INSERT INTO BIKES (COMPANY, PRICE, COLOUR, IS_BLACK) 
VALUES ('Triumph', 1200000, 'Red', 0);

The BIKES table obtained is as follows −

S_NO COMPANY PRICE COLOUR IS_BLACK
1 Royal Enfield 300000 Black 1
2 BMW 900000 Blue 0
3 Jawa 150000 Black 1
4 Triumph 1200000 Red 0

Now, let us display all the records from the BIKES table, where the colour BLACK is represented by either TRUE or FALSE −

SELECT *,
CASE IS_BLACK
WHEN 1 THEN 'TRUE'
WHEN 0 THEN 'FALSE'
END AS IS_BOOLEAN
FROM BIKES;

Output

The output is displayed as follows −

S_NO COMPANY PRICE COLOUR IS_BLACK IS_BOOLEAN
1 Royal Enfield 300000 Black 1 TRUE
2 BMW 900000 Blue 0 FALSE
3 Jawa 150000 Black 1 TRUE
4 Triumph 1200000 Red 0 FALSE

Example

In the following query, we are filtering the records from the BIKES table where colour black is TRUE −

SELECT * FROM BIKES WHERE IS_BLACK IS TRUE;

Output

As we can see the output below, Royal Enfield and Jawa are black in color (true) −

S_NO COMPANY PRICE COLOUR IS_BLACK
1 Royal Enfield 300000 Black 1
3 Jawa 150000 Black 1

Example

In here, we are filtering the records from the BIKES table where color black is FALSE −

SELECT * FROM BIKES WHERE IS_BLACK IS FALSE;

Output

The output says that BMW and Triumph are not black in colour(false) −

S_NO COMPANY PRICE COLOUR IS_BLACK
2 BMW 900000 Blue 0
4 Triumph 1200000 Red 0

Boolean Operator Using a Client Program

In addition to perform the Boolean Operator in MySQL table using MySQL query, we can also perform the another operation on a table using a client program.

MySQL provides various Connectors and APIs using which you can write programs (in the respective programming languages) to communicate with the MySQL database. The connectors provided are in programming languages such as, Java, PHP, Python, JavaScript, C++ etc. This section provides programs to execute Boolean Operator in MySQL Table.

Syntax

Following are the syntaxes of the MySQL Boolean Operator in various programming languages −

The MySQL PHP connector mysqli provides a function named query() to execute an SQL query in the MySQL database. Depending on the type of query, it retrieves data or performs modifications within the database.

This function accepts two parameters namely −

  • $sql: This is a string value representing the query.
  • $resultmode: This is an optional parameter which is used to specify the desired format of the result. Which can be MYSQLI_STORE_RESULT (buffered result set object) or, MYSQLI_USE_RESULT (unbuffered result set object) or, MYSQLI_ASYNC.

To perform the Boolean operation in MySQL table, we need to execute the CREATE TABLE statement using this function as −

$sql = "CREATE TABLE table_name ( Column_name BOOLEAN )";
$mysqli->query($sql);

The MySQL NodeJS connector mysql2 provides a function named query() to execute an SQL query in the MySQL database. This function accepts a string value as a parameter representing the query to be executed.

To perform the Boolean operation in MySQL table, we need to execute the CREATE TABLE statement using this function as −

sql= "CREATE TABLE table_name ( Column_name BOOLEAN )";  
con.query(sql);

We can use the JDBC type 4 driver to communicate to MySQL using Java. It provides a function named execute() to execute an SQL query in the MySQL database. This function accepts a String value as a parameter representing the query to be executed.

To perform the Boolean operation in MySQL table, we need to execute the CREATE TABLE statement using this function as −

String sql = "CREATE TABLE table_name ( Column_name BOOLEAN )";
statement.execute(sql);

The MySQL Connector/Python provides a function named execute() to execute an SQL query in the MySQL database. This function accepts a string value as a parameter representing the query to be executed.

To perform the Boolean operation in MySQL table, we need to execute the CREATE TABLE statement using this function as −

query = "CREATE TABLE table_name (Column_name BOOLEAN)"
cursorObj.execute(query);

Example

Following are the implementations of this operation in various programming languages −

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'password';
$dbname = 'TUTORIALS';
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if($mysqli->connect_errno ) {
   printf("Connect failed: %s
", $mysqli->connect_error); exit(); } //printf('Connected successfully.
'); //create table with boolean column $sql = 'CREATE TABLE CUSTOMERS ( ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(40), AVAILABILITY BOOLEAN);'; $result = $mysqli->query($sql); if($result){ printf("Table created successfully...!\n"); } //insert data into created table $q = "INSERT INTO CUSTOMERS(ID, NAME, AVAILABILITY) VALUES (1, 'Ramesh', TRUE)"; If($res = $mysqli->query($q)){ printf("Data inserted successfully...!\n"); } //now display the table records $s = "SELECT * FROM CUSTOMERS"; If($r = $mysqli->query($s)){ printf("Select query executed successfully...!\n"); printf("Table records: \n"); while($row = $r->fetch_assoc()) { printf("Id %d, Name: %s, AVAILABILITY: %s", $row["ID"], $row["NAME"], $row["AVAILABILITY"]); printf("\n"); } } else { printf('Failed'); } $mysqli->close();

Output

The output obtained is as follows −

Table created successfully...!
Data inserted successfully...!
Select query executed successfully...!
Table records:
Id 1, Name: Ramesh, AVAILABILITY: 1       
var mysql = require("mysql2");
var con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "Nr5a0204@123",
});

//Connecting to MySQL
con.connect(function (err) {
  if (err) throw err;
  console.log("Connected!");
  console.log("--------------------------");

  //Select database
  sql = "CREATE DATABASE TUTORIALS";
  con.query(sql);

  //Select database
  sql = "USE TUTORIALS";
  con.query(sql);

  //Creating CUSTOMERS table
  sql = "CREATE TABLE CUSTOMERS (ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(40), AVAILABILITY BOOLEAN);"
  con.query(sql , function(err){
    if (err) throw err;
    console.log("Table created Successfully...");
  });

  //Inserting Records
  sql = "INSERT INTO CUSTOMERS(ID, NAME, AVAILABILITY) VALUES (1, 'Ramesh', 0), (2, 'Khilan', 1), (4, 'Kaushik', NULL);"
  con.query(sql);

  //Displaying all the records of the CUSTOMERS table
  sql = "SELECT * FROM CUSTOMERS;"
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});    

Output

The output produced is as follows −

Connected!
--------------------------
Table created Successfully...
[
  { ID: 1, NAME: 'Ramesh', AVAILABILITY: 0 },
  { ID: 2, NAME: 'Khilan', AVAILABILITY: 1 },
  { ID: 4, NAME: 'Kaushik', AVAILABILITY: null }
]      
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class BooleanOperator {
  public static void main(String[] args) {
    String url = "jdbc:mysql://localhost:3306/TUTORIALS";
    String user = "root";
    String password = "password";
    ResultSet rs;
    try {
      Class.forName("com.mysql.cj.jdbc.Driver");
            Connection con = DriverManager.getConnection(url, user, password);
            Statement st = con.createStatement();
            //System.out.println("Database connected successfully...!");
            //create a table(having boolean field/column)
            String sql = "CREATE TABLE CUSTOMERS (ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,NAME VARCHAR(40),AVAILABILITY BOOLEAN)";
            st.execute(sql);
            System.out.println("Table created successfully...!");
            //now lets insert some records
            String sql1 = "INSERT INTO CUSTOMERS(ID, NAME, AVAILABILITY) VALUES (1, 'Ramesh', 0), (2, 'Khilan', 1), (4, 'Kaushik', NULL)";
            st.executeUpdate(sql1);
            System.out.println("Records inserted successfully...!");
            //lets display the records....
            String sql2 = "SELECT * FROM CUSTOMERS";
            rs = st.executeQuery(sql2);
            System.out.println("Table records are: ");
            while(rs.next()) {
              String id = rs.getString("Id");
              String name = rs.getString("Name");
              String is_available = rs.getString("AVAILABILITY");
              System.out.println("Id: " + id + ", Name: " + name + ", Is_available: " + is_available);
            }
    }catch(Exception e) {
      e.printStackTrace();
    }
  }
}                             

Output

The output obtained is as shown below −

Table created successfully...!
Records inserted successfully...!
Table records are: 
Id: 1, Name: Ramesh, Is_available: 0
Id: 2, Name: Khilan, Is_available: 1
Id: 4, Name: Kaushik, Is_available: null        
import mysql.connector
# Establishing the connection
connection = mysql.connector.connect(
    host='localhost',
    user='root',
    password='password',
    database='tut'
)
table_name = 'customer'
# Creating a cursor object 
cursorObj = connection.cursor()
# Create table with boolean column
sql = ''' CREATE TABLE CUSTOMER(
    ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    NAME VARCHAR(40),
    AVAILABILITY BOOLEAN)'''
cursorObj.execute(sql)
print("The table is created successfully!")
# Insert data into the created table
insert_query = 'INSERT INTO CUSTOMER(ID, NAME, AVAILABILITY) VALUES (1, "Ramesh", TRUE);'
cursorObj.execute(insert_query)
print("Row inserted successfully.")
# Now display the table records
select_query = "SELECT * FROM CUSTOMER"
cursorObj.execute(select_query)
result = cursorObj.fetchall()
print("Tutorial Table Data:")
for row in result:
    print(row)
cursorObj.close()
connection.close()                                

Output

Following is the output of the above code −

The table is created successfully!
Row inserted successfully.
Tutorial Table Data:
(1, 'Ramesh', 1) 
Advertisements