MySQL - Integer Division Operator (DIV)
The integer division operator in MySQL is represented by (DIV). This operator performs division between two numbers and returns the integer quotient, which means it will discard any decimal part from the result. It will round down the division result to the nearest integer that is less than or equal to the actual result.
This division operator can also be used with the SELECT, UPDATE, and DELETE statements in MySQL, along with clauses like WHERE, ORDER BY etc.
Example
In the following example, let us observe the difference between two division operators '/' and 'DIV'.
First, we will use the division operator "/" as follows −
SELECT 62555.5875/455 As Result;
As we can see the output, the decimal values are not discarded −
| Result |
|---|
| 137.48480769 |
Here, we are using the "DIV" as follows −
SELECT 62555.5875 DIV 455 As Result;
As we can see the output, the decimal values are discarded −
| Result |
|---|
| 137 |
Example
In the following query, we are creating a MySQL table named CUSTOMERS using the CREATE statement as follows −
CREATE TABLE CUSTOMERS ( ID INT AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
The following query inserts 7 records into the above created table −
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ), (2, 'Khilan', 25, 'Delhi', 1500.00 ), (3, 'Kaushik', 23, 'Kota', 2000.00 ), (4, 'Chaitali', 25, 'Mumbai', 6500.00 ), (5, 'Hardik', 27, 'Bhopal', 8500.00 ), (6, 'Komal', 22, 'Hyderabad', 4500.00 ), (7, 'Muffy', 24, 'Indore', 10000.00 );
Execute the below query to fetch all the records present in the CUSTOMERS table −
Select * From CUSTOMERS;
Following is the CUSTOMERS table −
| ID | NAME | AGE | ADDRESS | SALARY |
|---|---|---|---|---|
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | Kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | Hyderabad | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
Here, we are using the MySQL integer division operator (DIV) to calculate the ratio of SALARY to AGE for each person in the CUSTOMERS table −
SELECT NAME, salary DIV age AS SALARY_TO_AGE_RATIO FROM CUSTOMERS;
Output
This will produce the following result −
| NAME | SALARY_TO_AGE_RATIO |
|---|---|
| Ramesh | 62 |
| Khilan | 60 |
| Kaushik | 86 |
| Chaitali | 260 |
| Hardik | 314 |
| Komal | 204 |
| Muffy | 416 |
Example
You can also use the division operator with DELETE statement along with WHERE clause and assignment operators.
The following query removes the records of CUSTOMERS whose ratio of SALARY to AGE is less than 250.
DELETE FROM CUSTOMERS WHERE SALARY DIV AGE < 250;
Output
Four rows has been deleted from the CUSTOMERS table.
Query OK, 4 rows affected (0.01 sec)
Verification
Execute the below query to verify whether the above records has been deleted or not −
Select * From CUSTOMERS;
As we can see the output, the customers whose ratio of SALARY to AGE is less than 250 has been deleted.
| ID | NAME | AGE | ADDRESS | SALARY |
|---|---|---|---|---|
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
Example
Along with SELECT and DELETE statements, you can also use this operator with the UPDATE statement.
In the following example, we are updating the salaries of customers by dividing each person's salary by their age −
UPDATE CUSTOMERS SET SALARY = SALARY DIV AGE;
Output
This will produce the following result −
Query OK, 3 rows affected, 2 warnings (0.01 sec) Rows matched: 3 Changed: 3 Warnings: 2
Verification
Execute the below query to verify whether the values in SALARY column has updated or not −
Select * From CUSTOMERS;
As we can see the output, the decimal values for salaries are discarted and displayed as 0.
| ID | NAME | AGE | ADDRESS | SALARY |
|---|---|---|---|---|
| 4 | Chaitali | 25 | Mumbai | 260.00 |
| 5 | Hardik | 27 | Bhopal | 314.00 |
| 7 | Muffy | 24 | Indore | 416.00 |