数据库中的空值与NULL的区别以及python中的NaN和None

数据库中的空值与NULL的区别以及python中的NaN和None,第1张

数据库里面的”空值”有两种:空字符(“”)、空值(NULL)。 

两种存储方式在数据库中都很常见,实际中根据业务或者个人习惯可以用这两种方式来存储“空值”。那这两种到底有什么区别,下面通过例子直接来展示:

-- 创建表testcreate table `test` (`id`  int not null ,`name`  varchar(255) null ,`date`  timestamp null ,`class`  varchar(255) null );insert into test (id,name,date,class) values (1,'张三','2017-03-01','a班');insert into test (id,name,date,class) values (2,'李四','2017-03-02','');insert into test (id,name,class) values (3,'王五','c班');select from test;1234567891011

select count(date),count(class) from test;1

看到这里应该明白了,直观看空字符和NULL的区别在于,在做count计算的时候,空字符也会被计算在里面,而NULL不会。有些同学在使用where is null 和is not null 的时候也要注意数据库中的“空值”是空字符还是NULL。不然统计结果可能并不是你想要的。

平时有些数据是需要借助python 来处理的,我们来看看python获取数据的时候有哪些需要注意的。 

python有两种方式获取数据: 

1 一种是把数据从MYSQL 中导出到txt或者csv,然后本地读取; 

2 另一种是python直接链接数据库,读取数据; 

先看第一种:导出到csv,python 读取

 

第二种: 

两种方式读取的数据居然不一样!

第一种把数据从MYSQL导出后,python读取时,空值即为NULL;

第二种链接数据库后,python能读取表结构,数据库的NULL对应列表中的None以及pandas中的NaN(如果字段类型是时间,则为NaT)。而数据库中的空字符,则被识别为空字符。

个人理解的等式

NULL(数据库)=None(python列表)=NaN(pandas)

空字符(数据库)=空字符(python列表)=空字符(pandas)

从csv中获取数据时:空值(csv)=NULL(数据库)=NaN(pandas)

转为csv数据时:数据库中的NULL\空字符和pandas中的NaN\空字符,都变成csv中的空值

在python处理完数据后,往数据库写数据的时候也一样。注意注意!

关于null是否占空间是这样的:

当为null的字段在一条记录的最后,就是说他后边没有非null的字段值时,是不占空间的

当为null的字段在一条记录的中间,就是说他后边还有非null的字段值时,他占一个字节

所以oracle建议在设计表结构时尽量把可空的字段放到最后!

oracle文档中有说明的

NULL是有值的,在MYSQL中有它自己的表示方法,而且在逻辑运算的时候,比如2 AND NULL 结果为NULL

可是空值代表没有这项,运算的时候不考虑

所以PHP读出来的时候是不一样的NULL不知道是什么数值(我忘记了),空串会显示没有这项(为空,要不就是会出错,我忘记了)`~

所以编程的时候自己要注意自己数据库里存了什么记得的话,应该不再会遇到这种问题了

分类: 电脑/网络 >> 程序设计 >> 其他编程语言

问题描述:

请问mysql中的NULL记录和空值有什么区别?用php读出来输出到变量中是不是都是空串?

解析:

NULL是有值的,在MYSQL中有它自己的表示方法,而且在逻辑运算的时候,比如2 AND NULL 结果为NULL

可是空值代表没有这项,运算的时候不考虑

所以PHP读出来的时候是不一样的NULL不知道是什么数值(我忘记了),空串会显示没有这项(为空,要不就是会出错,我忘记了)`~

所以编程的时候自己要注意自己数据库里存了什么记得的话,应该不再会遇到这种问题了

以上就是关于数据库中的空值与NULL的区别以及python中的NaN和None全部的内容,包括:数据库中的空值与NULL的区别以及python中的NaN和None、数据库中,空值(null)占空间吗、数据库空值和null的区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10211070.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存