数据库中的空值与NULL的区别以及python中的NaN和None
数据库中的空值与NULL的区别以及python中的NaN和None
南诏国
数据库⾥⾯的”空值”有两种:空字符(“”)、空值(NULL)。
两种存储⽅式在数据库中都很常见,实际中根据业务或者个⼈习惯可以⽤这两种⽅式来存储“空值”。那这两种到底有什么区别,下⾯通过例⼦直接来展⽰:首付比例
-- 创建表test
create 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;
select count(date),count(class) from test;
名人名言的故事
数据库恢复
看到这⾥应该明⽩了,直观看空字符和NULL的区别在于,在做count计算的时候,空字符也会被计算在⾥⾯,⽽NULL不会。有些同学在使⽤where is null 和is not null 的时候也要注意数据库中的“空值”是空字符还是NULL。不然统计结果可能并不是你想要的。
平时有些数据是需要借助python 来处理的,我们来看看python获取数据的时候有哪些需要注意的。
python有两种⽅式获取数据:
1. ⼀种是把数据从MYSQL 中导出到txt或者csv,然后本地读取;
2. 另⼀种是python直接链接数据库,读取数据;
先看第⼀种:导出到csv,python 读取
第⼆种:
两种⽅式读取的数据居然不⼀样!
1. 第⼀种把数据从MYSQL导出后,python读取时,空值即为NULL;
2. 第⼆种链接数据库后,python能读取表结构,数据库的NULL对应列表中的None以及pandas中的NaN(如果字段类型是时间,则为
欧莱雅隔离NaT)。⽽数据库中的空字符,则被识别为空字符。
个⼈理解的等式
NULL(数据库)=None(python列表)=NaN(pandas)
空字符(数据库)=空字符(python列表)=空字符(pandas)
从csv中获取数据时:空值(csv)=NULL(数据库)=NaN(pandas)
转为csv数据时:数据库中的NULL\空字符和pandas中的NaN\空字符,都变成csv中的空值
在python处理完数据后,往数据库写数据的时候也⼀样。注意注意!
如果对python中的None和NaN有疑问,可以看这位博主的 。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。