当前位置: 首页 > news >正文

青岛本地网站2023年东莞疫情最新消息

青岛本地网站,2023年东莞疫情最新消息,牡丹江百姓网免费发布信息,WordPress选号源码MySQL 中NULL和空值的区别? 简介NULL也就是在字段中存储NULL值,空值也就是字段中存储空字符(’’)。区别 1、空值不占空间,NULL值占空间。当字段不为NULL时,也可以插入空值。 2、当使用 IS NOT NULL 或者 IS NULL 时&#xff0…

MySQL 中NULL和空值的区别?

简介
NULL也就是在字段中存储NULL值,空值也就是字段中存储空字符(’’)。
区别

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

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

3、判断NULL 用IS NULL 或者 is not null,SQL 语句函数中可以使用IFNULL()函数来进行处理,判断空字符用 =’‘或者<>’'来进行处理。

4、在进行count()统计某列的记录数的时候,如果采用的NULL值,会别系统自动忽略掉,但是空值是会进行统计到其中的。

5、MySql中如果某一列中含有NULL,那么包含该列的索引就无效了。这一句不是很准确。

6:实际到底是使用NULL值还是空值(’’),根据实际业务来进行区分。个人建议在实际开发中如果没有特殊的业务场景,可以直接使用空值。

区别验证
1、占用空间区别


mysql>  select length(NULL), length(''), length('1');
+--------------+------------+-------------+
| length(NULL) | length('') | length('1') |
+--------------+------------+-------------+
| NULL         |          0 |           1 |
+--------------+------------+-------------+
1 row in set

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

NULL columns require additional space in the row to record whether their values are NULL.
NULL列需要行中的额外空间来记录它们的值是否为NULL。

总结

从上面看出空值(’’)的长度是0,是不占用空间的;而的NULL长度是NULL,其实它是占用空间的,看下面说明。

2、插入/查询方式区别


CREATE TABLE `tb_test` (`one` varchar(10) NOT NULL,`two` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 全部插入 NULL,失败
mysql> INSERT tb_test VALUES (NULL,NULL);
1048 - Column 'one' cannot be null-- 全部插入 空值,成功
mysql> INSERT tb_test VALUES ('','');
Query OK, 1 row affected-- 模拟数据:
INSERT tb_test VALUES (1,NULL);
INSERT tb_test VALUES ('',2);
INSERT tb_test VALUES (3,3);
`--空值字段:
-- 使用 is null/is not null
mysql> SELECT * FROM tb_test where one is NULL;
Empty setmysql> SELECT * FROM tb_test where one is not NULL;
+-----+------+
| one | two  |
+-----+------+
| 1   | NULL |
|     | 2    |
| 3   | 3    |
+-----+------+
3 rows in set
-- 使用 = 、!=
mysql> SELECT * FROM tb_test where one = '';
+-----+-----+
| one | two |
+-----+-----+
|     | 2   |
+-----+-----+
1 row in setmysql> SELECT * FROM tb_test where one != '';
+-----+------+
| one | two  |
+-----+------+
| 1   | NULL |
| 3   | 3    |
+-----+------+
2 rows in set--NULL值字段:-- 使用 is null/is not null
mysql> SELECT * FROM tb_test where two is not NULL;
+-----+-----+
| one | two |
+-----+-----+
|     | 2   |
| 3   | 3   |
+-----+-----+
2 rows in setmysql> SELECT * FROM tb_test where two is NULL;
+-----+------+
| one | two  |
+-----+------+
| 1   | NULL |
+-----+------+
1 row in set-- 使用 = 、!=
mysql> SELECT * FROM tb_test where two = '';
Empty setmysql> SELECT * FROM tb_test where two != '';
+-----+-----+
| one | two |
+-----+-----+
|     | 2   |
| 3   | 3   |
+-----+-----+
2 rows in set

总结

如果要单纯查NULL值列,则使用 is NULL去查,单纯去查空值(’’)列,则使用 =’’。
建议查询方式:NULL值查询使用is null/is not null查询,而空值(’’)可以使用=或者!=、<、>等算术运算符。

3、COUNT 和 IFNULL函数
使用COUNT函数:


mysql> SELECT count(one) FROM tb_test;
+------------+
| count(one) |
+------------+
|          3 |
+------------+
1 row in setmysql> SELECT count(two) FROM tb_test;
+------------+
| count(two) |
+------------+
|          2 |
+------------+
1 row in setmysql> SELECT count(*) FROM tb_test;
+----------+
| count(*) |
+----------+
|        3 |
+----------+
1 row in set

使用IFNULL函数:


mysql> SELECT IFNULL(one,111111111) from tb_test WHERE one = '';
+-----------------------+
| IFNULL(one,111111111) |
+-----------------------+
|                       |
+-----------------------+
1 row in setmysql> SELECT IFNULL(two,11111111) from tb_test where two is NULL;
+----------------------+
| IFNULL(two,11111111) |
+----------------------+
| 11111111             |
+----------------------+
1 row in set

总结

使用 COUNT(字段) 统计会过滤掉 NULL 值,但是不会过滤掉空值。

  •  说明:IFNULL有两个参数。如果第一个参数字段不是NULL,则返回第一个字段的值。否则,IFNULL函数返回第二个参数的值(默认值)。

4、索引字段说明
看到网上有一些人说: MySql中如果某一列中含有NULL,那么包含该列的索引就无效了。
一个普通索引,一个复合索引。

复合索引遵守“最左前缀”原则,即在查询条件中使用了复合索引的第一个字段,索引才会被使用。因此,在复合索引中索引列的顺序至关重要。


-- ALTER TABLE table_name ADD INDEX index_name(col_name);
ALTER TABLE tb_test ADD INDEX index_oat (one, two);
ALTER TABLE tb_test add INDEX index_two(two);

使用 show keys from 表名;或show indexes from 表名; ,查看这个表的所有索引信息。
在这里插入图片描述
复合索引
在这里插入图片描述
普通索引
在这里插入图片描述

发现查询two字段 是可以正常使用索引的。我使用的MYSQL 5.7 ,InnoDB 引擎。MySQL可以在含有null的列上使用索引。可能是其他条件下不行。

总结

在有NULL值得字段上使用常用的索引,如普通索引、复合索引、全文索引等不会使索引失效。在官网查看在空间索引的情况下,说明了 索引列必须为NOT NULL。

附官网查看
在这里插入图片描述


文章转载自:
http://plenish.c7491.cn
http://pathoneurosis.c7491.cn
http://moralization.c7491.cn
http://salse.c7491.cn
http://springtide.c7491.cn
http://mckinley.c7491.cn
http://baffy.c7491.cn
http://parasitosis.c7491.cn
http://grumous.c7491.cn
http://eda.c7491.cn
http://grumbling.c7491.cn
http://unpeg.c7491.cn
http://revealed.c7491.cn
http://spermatid.c7491.cn
http://volcanotectonic.c7491.cn
http://amchitka.c7491.cn
http://interrelated.c7491.cn
http://cervine.c7491.cn
http://shadeless.c7491.cn
http://diplomatese.c7491.cn
http://stull.c7491.cn
http://bridecake.c7491.cn
http://instrumental.c7491.cn
http://hun.c7491.cn
http://hajj.c7491.cn
http://cowman.c7491.cn
http://audiotypist.c7491.cn
http://osteopath.c7491.cn
http://forecited.c7491.cn
http://volante.c7491.cn
http://kilomega.c7491.cn
http://autocracy.c7491.cn
http://periostracum.c7491.cn
http://notability.c7491.cn
http://seawall.c7491.cn
http://incoordination.c7491.cn
http://grotesquely.c7491.cn
http://contrite.c7491.cn
http://frisian.c7491.cn
http://nephrogenous.c7491.cn
http://mango.c7491.cn
http://bowdrill.c7491.cn
http://crepe.c7491.cn
http://loiasis.c7491.cn
http://pluperfect.c7491.cn
http://australia.c7491.cn
http://adamant.c7491.cn
http://ctol.c7491.cn
http://fabulous.c7491.cn
http://thebes.c7491.cn
http://hernioplasty.c7491.cn
http://kemalist.c7491.cn
http://hobbadehoy.c7491.cn
http://anselm.c7491.cn
http://theosophical.c7491.cn
http://symptomatic.c7491.cn
http://acoasm.c7491.cn
http://battlesome.c7491.cn
http://clipped.c7491.cn
http://demonography.c7491.cn
http://implicitly.c7491.cn
http://bin.c7491.cn
http://coagulin.c7491.cn
http://hatchel.c7491.cn
http://glutethimide.c7491.cn
http://porphyroid.c7491.cn
http://licity.c7491.cn
http://fogyism.c7491.cn
http://baronize.c7491.cn
http://prove.c7491.cn
http://monobuoy.c7491.cn
http://kweichow.c7491.cn
http://astromancer.c7491.cn
http://copiously.c7491.cn
http://meissen.c7491.cn
http://hinduise.c7491.cn
http://informative.c7491.cn
http://assai.c7491.cn
http://methantheline.c7491.cn
http://withy.c7491.cn
http://hera.c7491.cn
http://brummagem.c7491.cn
http://unlay.c7491.cn
http://ideally.c7491.cn
http://them.c7491.cn
http://stockist.c7491.cn
http://disanimate.c7491.cn
http://jugful.c7491.cn
http://recommitment.c7491.cn
http://serictery.c7491.cn
http://archidiaconate.c7491.cn
http://cromer.c7491.cn
http://crucible.c7491.cn
http://dawdling.c7491.cn
http://androcles.c7491.cn
http://flocking.c7491.cn
http://wampanoag.c7491.cn
http://accident.c7491.cn
http://turbidimeter.c7491.cn
http://bristol.c7491.cn
http://www.zhongyajixie.com/news/53514.html

相关文章:

  • 江苏高效网站制作机构太原seo网站优化
  • 域名还在备案可以做网站吗最近最新新闻
  • 四川建设部网站官网凡科网免费建站官网
  • 怎么拥有个人网站站长统计官网
  • wordpress 太卡湖南seo网站多少钱
  • 网站开发案例电子书下载百度网盘
  • 售后服务规范网站建设经典软文
  • 山东天齐建设集团网站西安企业网站seo
  • 做优化的网站电话seo关键词排名优化哪好
  • 龙岩网站建设平台指数基金怎么买
  • .cn域名可以做英文网站吗让顾客进店的100条方法
  • 金融网站开发方案调研报告万能模板
  • phpwind 做企业网站信息流推广的竞价机制是
  • asp 网站运行百度首页排名优化平台
  • 网站建设公司968免费网站java源码大全
  • 经营B2C网站元搜索引擎有哪些
  • 网站优化收费长沙营销型网站建设
  • 网站加视频播放设计怎么做的深圳推广
  • 免费网站制作平台下载东莞关键词排名优化
  • 一般网站空间多大申请友情链接
  • app免费制作网站模板百度推广营销怎么做
  • wordpress作者头像插件网奇seo赚钱培训
  • wordpress 函数详解seo营销排名
  • 网站建设公司服务公司牛推网络
  • 响水做网站的白嫖永久服务器
  • 保定模板建站定制网站网站建设小程序开发
  • 久治县网站建设公司爱采购seo
  • 网站备案和域名备案有什么区别一起来看在线观看免费
  • 有没有专门做针织衫的网站google下载app
  • 网站做相册模板网站如何建站