<b>MySQL中处理Null时要注意两大陷</b>[MySQL防范]
本文“<b>MySQL中处理Null时要注意两大陷</b>[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
MySQL数据库是一个基于构造化数据的开源数据库.SQL语句是MySQL数据库中核心语言.不过在MySQL数据库中履行SQL语句,需求当心两个陷阱.
陷阱一:空值不一定为空
空值是一个对比特别的字段.在MySQL数据库中,在差别的情形下,空值常常代表差别的含义.这是MySQL数据库的一种特点.如在普通的字段中(字符型的数据),空值就是表示空值.但是假如将一个空值的数据插入到TimesTamp范例的字段中,空值就不一定为空.此时为呈现什么情形呢(以下图)?
我先成立了一个表.在这个表中有两个字段:User_id(其数据范例是int)、Date(其数据范例是TimesTamp).目前往这个表中插入一条记录,此中往Date字段中插入的是一个NULL空值.但是当我们查询时,后来果显示的倒是插入记录的当前时间.这是怎么一回事呢?其实这就是在MySQL数据库中履行SQL语句经常常会碰到的一个陷阱:空值不一定为空.在操作时,明显插入的是一个空值的数据,但是最后查询得到的却不是一个空值.
在MySQL数据库中,NULL关于一些特别范例的列来说,其代表了一种特别的含义,而不但仅是一个空值.关于这些特别范例的列,各位读者主如果要记着两个.一个就是笔者上面举的TimesTamp数据范例.假如往这个数据范例的列中插入Null值,则其代表的就是系统的当前时间.别的一个是具有auto_increment属性的列.假如往这属性的列中插入Null值的话,则系统会插入一个正整数序列.而假如在其他数据范例中,如字符型数据的列中插入Null的数据,则其插入的就是一个空值.
陷阱二:空值不一定等于空字符
在MySQL中,空值(Null)与空字符(’’)相同吗?答案能否定的.请大家先来看下图的演示.
在同一个数据库表中,同时插入一个Null值的数据和一个’’空字符的数据,然后操纵Select语句举行查询.最后显示的后果如上图所示.明显其显示的后果是不相同的.从这个后果中便可以看出,空值不等于空字符.这就是在MySQL中履行SQL语句碰到的第二个陷阱.在实际工作中,空值数据与空字符常常表示差别的含义.数据库管理员可以按照实际的需求来举行挑选.如关于电话号码等字段,可以默许设置为空值(表示根本不知道对方的电话号码)大概设置为空字符(表示后来撤消了这个号码)等等.由于他们在数据库中会有差别的表现情势,所以数据库管理员需求辨别对待.笔者越发喜好利用空值,而不是空字符.这主如果因为针对空值这个数据范例有几个对比特别的运算字符.假如某个字段是空字符,数据库中是操纵字段名称来替换.相反,假如插入的是空值,则直接显示的是NULL.这跟其他数据库的显示方法也是差别的.
一是IS NULL 和IS NOT NULL关键字.假如要判断某个字段能否含用空值的数据,需求利用特别的关键字.此中前者表示这个字段为空,后者表示这个字段为非空.在Select语句的查询条件中这两个关键字非常的有效.如需求查询全部电话号码为空的用户(需求他们增补电话号码信息),便可以在查询条件中加入is not null关键字.
二是Count等统计函数,在空值上也有特别的利用.如目前需求统计用户信息表中有电话号码的用户数目,此时便可以利用count函数、同时将电话号码作为参数来利用.因为在统计历程中,这个函数会自动忽视空值的数据.此时统计出来的就是有电话号码的用户信息.假如采取的是空字符的数据,则这个函数会将其统计进去.以下图所示,统计方才成立的两条记录时,系通通计的后果是1,而不是2.可见系统自动将Null值的数据忽视掉了.
以上是“<b>MySQL中处理Null时要注意两大陷</b>[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |