Mysql NULL和"的问题

本文对比了MySQL中两种主要的存储引擎:MyISAM与InnoDB。详细探讨了这两种存储引擎对于NULL值的处理方式及其对存储空间的影响。MyISAM无论对于定长还是不定长字段,NULL值都会占用一定的存储空间;而InnoDB对于不定长字段的NULL值则不会占用空间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

只讨论MyIsam和Innodb存储引擎.

Myisam

从官网文档中可以看到

1.定长

这里写图片描述

NULL值是占用内存空间的.

2.不定长

这里写图片描述

NULL值也是占空空间的.
“占一个位图,不存储到磁盘

Innodb

定长和不定长:
这里写图片描述

不定长的column,NULL值是不占用空间的,”也是不占用空间的,但是定长的仍然是占空空间的.

innodb存储测试innodb存储

### MySQL 中 SUM 函数处理 NULL空字符串 在 MySQL 数据库中,`SUM()` 函数用于计算数值列的总。当遇到 `NULL` 值时,`SUM()` 函数会自动跳过这些值而不将其纳入计算范围[^2]。 然而,对于空字符串 (`''`) 的情况有所不同。由于空字符串代表的是长度为零的有效字符序列而非缺失的数据表示形式,因此不会被当作 `NULL` 来对待,在求操作里会被视作数值 0 进行累加运算[^4]。 为了更好地理解这一点,可以考虑如下 SQL 查询例子: 假设存在一张名为 `sales` 的销售记录表,其中有一列表示销售额 `amount` 可能含有 `NULL` 或者 `' '`(即由空格组成的空白串)。下面展示了一个简单的查询来说明如何利用 `IFNULL()` `COALESCE()` 函数将可能存在的 `NULL` 转换成特定值以便于后续的操作: ```sql SELECT -- 将 amount 列里的 null 替换为 0 后再做 sum 计算 SUM(IFNULL(amount, 0)) AS total_sales, -- 使用 COALESCE 实现相同功能 SUM(COALESCE(amount, 0)) as coalesce_total FROM sales; ``` 上述代码片段展示了两种方法——通过内置函数 `IFNULL()` 或者更通用的标准SQL函数 `COALESCE()` ——都可以有效地把可能出现的 `NULL` 映射成实际可参与数学运算的具体数值,从而确保最终得出正确的汇总金额[^1]。 值得注意的是,如果希望进一步区分真正的零元交易其他类型的异常输入,则可以在应用层面上采取额外措施验证数据质量;而在数据库层面也可以设置合理的约束条件防止无效数据进入系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值