*问题 1*
首先,需要搞清楚 “空字符串” 和”NULL”的概念:
1:空字符串(”)是不占用空间的
MySQL中的NULL值实际上会占据一定的存储空间。根据官方文档的阐述:
该行中存在空位,这些空位对应的数据为空。因此,每个空值额外占用一个比特,最多可达一个字节。
长度验证:注意空值的”之间是没有空格的。
禁止对特定内容进行修改,确保文本保持原样,不得添加或删除任何字符。
不得擅自更改专业术语,确保内容的准确性,同时严格遵循相关规定。
禁止对专有名词进行修改,确保原文风格得以保留,将长句拆分为若干短句,以逗号分隔,不遗漏任何标点符号。
+------------+--------------+-------------+
| 0 | NULL | 1 |
+------------+--------------+-------------+
准备数据:
table abc(
-> id int(10) key,
主要是为了检验在唯一性约束条件下,是否可能存在重复的空值以及空字符串。
into abc value(1,Null);
into abc value(2,'');
将数值3与字符串'Null'组合,形成abc值。
问题2:查询非空字段的两种方法的区别:
1、 * from where ‘’
在查询abc数据库时,确保c字段中的内容确实存在,并非空值或错误数据。
+----+------+
| id | c |
+----+------+
| 3 | Null |
+----+------+
2、 * from where is not null
从abc表中选取,其中c字段不为空的数据;
+----+------+
| id | c |
+----+------+
| 2 | |
| 3 | Null |
+----+------+
插入二次数据
将数据插入到名为abc的表中,并赋予其值4,其余字段留空。
错误代码1062(23000):对于键‘c’,存在重复的条目。
# 说明 有唯一性约束的情况下不能有重复的空字符串
将数据5和空值插入到abc表中,指定列值为(5, NULL)。
Query OK, 1 row (0.05 sec)
# 可以有重复的空值Null
主键与唯一键的约束是通过索引机制来实现的。若所插入的数据值均为空值(NULL),依照索引的工作原理,这些全为空值的记录不会被记录在索引中。因此,在插入全为空值的记录时,可以存在重复,但其他情况则不允许插入重复值。
## 小结:
NULL并非真正的空值,它实际上需要占用一定的存储空间。因此,在MySQL执行比较操作时,NULL值会参与到字段比较中,这无疑对查询效率产生了一定程度的负面影响。
此外,在建立索引时若不包含NULL值,若索引字段允许NULL存在,那么该索引的性能将会显著降低。
2、空值不一定为空
扫一扫在手机端查看
-
Tags : 空字符串 唯一约束
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。


客服1