MySQL - 整数除法运算符 (DIV)



MySQL 中的整数除法运算符(DIV)表示。此运算符对两个数字进行除法运算并返回整数商,这意味着它将丢弃结果中的任何小数部分。它会将除法结果向下舍入到小于或等于实际结果的最近整数。

此除法运算符也可与 MySQL 中的 SELECT、UPDATE 和 DELETE 语句一起使用,以及 WHERE、ORDER BY 等子句。

示例

在以下示例中,让我们观察两个除法运算符“/”和“DIV”之间的区别。

首先,我们将使用除法运算符"/",如下所示:

SELECT 62555.5875/455 As Result;

如我们所见,输出中没有丢弃小数位:

结果
137.48480769

这里,我们使用"DIV",如下所示:

SELECT 62555.5875 DIV 455 As Result;

如我们所见,输出中小数位被丢弃了:

结果
137

示例

在以下查询中,我们使用 CREATE 语句创建一个名为CUSTOMERS的 MySQL 表,如下所示:

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)
);

以下查询将 7 条记录插入到上面创建的表中:

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 );

执行以下查询以获取 CUSTOMERS 表中存在的所有记录:

Select * From CUSTOMERS;

以下是 CUSTOMERS 表:

ID 姓名 年龄 地址 薪资
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

这里,我们使用 MySQL 的整数除法运算符 (DIV)来计算 CUSTOMERS 表中每个人的薪资与年龄的比率:

SELECT NAME, salary DIV age AS SALARY_TO_AGE_RATIO
FROM CUSTOMERS;

输出

这将产生以下结果:

姓名 薪资与年龄比率
Ramesh 62
Khilan 60
Kaushik 86
Chaitali 260
Hardik 314
Komal 204
Muffy 416

示例

您还可以将除法运算符与DELETE语句以及 WHERE 子句和赋值运算符一起使用。

以下查询删除薪资与年龄之比小于 250 的 CUSTOMERS 记录。

DELETE FROM CUSTOMERS
WHERE SALARY DIV AGE < 250;

输出

CUSTOMERS 表中已删除四行。

Query OK, 4 rows affected (0.01 sec)

验证

执行以下查询以验证上述记录是否已删除:

Select * From CUSTOMERS;

如我们所见,输出中,薪资与年龄之比小于 250 的客户已被删除。

ID 姓名 年龄 地址 薪资
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
7 Muffy 24 Indore 10000.00

示例

除了 SELECT 和 DELETE 语句之外,您还可以将此运算符与 UPDATE 语句一起使用。

在以下示例中,我们通过将每个人的薪资除以其年龄来更新客户的薪资:

UPDATE CUSTOMERS
SET SALARY = SALARY DIV AGE;

输出

这将产生以下结果:

Query OK, 3 rows affected, 2 warnings (0.01 sec)
Rows matched: 3  Changed: 3  Warnings: 2

验证

执行以下查询以验证 SALARY 列中的值是否已更新:

Select * From CUSTOMERS;

如我们所见,薪资的小数位被丢弃并显示为 0。

ID 姓名 年龄 地址 薪资
4 Chaitali 25 Mumbai 260.00
5 Hardik 27 Bhopal 314.00
7 Muffy 24 Indore 416.00
广告