Rumah  >  Artikel  >  pangkalan data  >  MySQL的空值和NULL有什么区别?(附示例)

MySQL的空值和NULL有什么区别?(附示例)

不言
不言ke hadapan
2019-02-14 13:11:474950semak imbas


本篇文章给大家带来的内容是关于MySQL的空值和NULL有什么区别?(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

从本质上区别

1、空值不占空间

2、null值占空间

通俗的讲:

空值就像是一个真空转态杯子,什么都没有,而null值就是一个装满空气的杯子,虽然看起来都是一样的,但是有着本质的区别。

(推荐课程:MySQL教程

例子:

创建一个test表,colA是不可以存放null值的,colB是能存放null值的。

CREATE TABLE `test` (
   `colA` varchar(255) NOT NULL,
   `colB` varchar(255) DEFAULT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入一个null值试试,会发生什么情况?

INSERT INTO `test`(`colA`, `colB`) VALUES (NULL, NULL);

//出现报错,原因是colA是不能插入null值。

那么如果两个字段同时插入空值,会怎么样。

INSERT INTO `test`(`colA`, `colB`) VALUES ('', '');

插入成功,说明字段即使设置为null值的时候,是可以插入空值的

 

---------------------------------------------------------------查询---------------------------------------------------------

现在表里有三条数据

 

接下来我们使用 is not null 和 a8093152e673feb7aba1828c43532094 检索数据表里的数据

1、使用IS NOT NULL 的查询

1 SELECT * FROM `test` WHERE colA IS NOT NULL

1 SELECT * FROM `test` WHERE colB IS NOT NULL

结论:使用 IS NOT NULL 查询不会过滤空值,但是会过滤掉NULL。

2、使用 a8093152e673feb7aba1828c43532094 的查询

1 SELECT * FROM `test` WHERE colA <> &#39;&#39;;


1 SELECT * FROM `test` WHERE colA <> &#39;&#39;;

结论:使用 a8093152e673feb7aba1828c43532094 会过滤掉NULL和空值。

3、使用 count 查询

1 SELECT COUNT(colA) FROM `test`;

1 SELECT COUNT(colB) FROM `test`;

结论:使用 count 会过滤掉 NULL 值,但是不会过滤掉空值。

总结

1、空值不占空间,NULL值占空间(占用一个字节)。

2、当字段不为NULL时,也可以插入空值。

3、当使用 IS NOT NULL 或者 IS NULL 时,只能查出字段中没有不为NULL的或者为 NULL 的,不能查出空值。

4、使用 a8093152e673feb7aba1828c43532094 查询时,会筛选掉空值和NULL值。

5、使用 count 统计时会过滤掉 NULL 值,但是不会过滤掉空值。

Atas ialah kandungan terperinci MySQL的空值和NULL有什么区别?(附示例). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:cnblogs.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam