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值的数据忽略掉了。

判断NULL用is null  或者 is not null。 sql语句里可以用ifnull函数来处理
判断空字符串‘’,要用 ='' 或者 <>''。sql语句里可以用if(col,col,0)处理,即:当col为true时(非null,及非'')显示,否则打印0

Mysql的空值与NULL的区别相关推荐

  1. mysql两个空值相同吗_你知道mysql中空值和null值的区别吗

    前言 最近发现带的小伙伴写sql对于空值的判断方法不正确,导致程序里面的数据产生错误,在此进行一下整理,方便大家以后正确的判断空值.以下带来示例给大家进行讲解. 建表 create table tes ...

  2. mysql设置空值显示null_mysql的空值与NULL的区别

    Mysql数据库是一个基于结构化数据的开源数据库.SQL语句是MySQL数据库中核心语言.不过在MySQL数据库中执行SQL语句,需要小心两个陷阱. 陷阱一:空值不一定为空 空值是一个比较特殊的字段. ...

  3. 【MySQL】空值(Null)和空字符串(‘’)的区别

    一. NULL,空值,数字,汉字,字母 根据上边的实操可以清楚看出: 空值(Null)的长度是 Null,不确定占用了多少存储空间,但是占用存储空间的 空字符串('')的长度是0,是不占用空间的 字母 ...

  4. 你还不知道mysql中空值和null值的区别吗?

    前言 最近发现带的小伙伴写sql对于空值的判断方法不正确,导致程序里面的数据产生错误,在此进行一下整理,方便大家以后正确的判断空值.以下带来示例给大家进行讲解. 建表 create table tes ...

  5. mysql group by 区分null 值和非null_你知道mysql中空值和null值的区别吗

    前言 最近发现带的小伙伴写sql对于空值的判断方法不正确,导致程序里面的数据产生错误,在此进行一下整理,方便大家以后正确的判断空值.以下带来示例给大家进行讲解. 建表 create table tes ...

  6. mysql null 0 空,MySQL的空值和NULL区别

    从本质上区别: 1.空值不占空间 2.null值占空间 通俗的讲: 空值就像是一个真空转态杯子,什么都没有,而null值就是一个装满空气的杯子,虽然看起来都是一样的,但是有着本质的区别. 例子: 创建 ...

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

    展开全部 数据库里面的"32313133353236313431303231363533e59b9ee7ad9431333363393632空值"有两种:空字符("&qu ...

  8. MySQL中空字符串与null的区别:计数 判断 时间

    1.在进行count()统计某列的记录数的时候,如果采用的NULL值,系统会自动忽略掉,但是空值是会进行统计到其中的. 2.判断NULL 用IS NULL 或者 IS NOT NULL, SQL语句函 ...

  9. mysql 删除id为null的数据_mysql删除字段为空的数据详解

    在mysql中空与空值是两码事的,也就是大家说null或""这种了,下面我总结了一些关于在mysql null与""值的删除与理解方法与大家分享. 空值与NUL ...

最新文章

  1. Net混淆与用de4dot工具破解
  2. 《Microsoft Sql server 2008 Internals》读书笔记--第五章Table(4)
  3. C语言实现hash/DJB2算法(附完整源码)
  4. java在dos中如何测试_[求助]怎么在java中模拟dos命令行
  5. python连接中控考勤机分析数据
  6. 以HANA为核心 SAP实时数据平台详解
  7. java填充线缺口,在geom_freqpoly线下填充区域的最简单方法是什么?
  8. html背景动起来,CSS+HTML 循环滚动背景效果
  9. HDU2022 海选女主角【入门】
  10. Hibernate框架核心组件
  11. 优化设计-内点惩罚函数法-MATLAB编程
  12. STA静态时序分析/Formality形式化验证
  13. systemverilog:always_comb、always_latch、always_ff区别
  14. 我家乡的春夏(原创)
  15. testcenter
  16. 华为b199usb计算机连接,华为B199如何打开USB调试的方法
  17. 3.1 mocha使用allure报告
  18. seo专员日常工作内容是什么?
  19. python成语接龙代码_实现成语接龙(Python)
  20. python高分书籍推荐_如果只推荐一本 Python 书,我要 Pick 它!

热门文章

  1. MER: 基于ITS区域marker扩增真菌群落的准确性
  2. 使用ComplexHeatmap包绘制个性化热图
  3. 机洗内裤容易得暗病?这个锅我们袜子不背!
  4. 扩增子统计绘图6韦恩图:比较组间共有和特有OTU或分类单元
  5. R语言使用party包中的ctree函数构建条件推理决策树的流程和步骤、条件推理决策树是传统决策树的一个重要变体、条件推理树的分裂是基于显著性测试而不是熵/纯度/同质性度量来选择分裂
  6. R语言ggplot2可视化:可视化斜率图、对比同一数据对象随着时间推移多个状态的差异(Slope Chart)、例如、对比不同癌症5年期、10年期、15年期存活率的差异
  7. R语言ggplot2可视化:使用scale_shape_identity函数显示pch点形状、使用geom_text函数为pch形状添加标(plot characters)
  8. R语言使用caret包对GBM模型自定义参数调优:自定义参数优化网格
  9. R语言ggplot2可视化:应用pivot_longer函数将数据从宽格式转换为长格式、为dataframe的每一列绘制密度图和直方图(堆叠)
  10. R语言使用ggplot2包使用geom_density()函数绘制分组密度图(自定义调色板填充色、brewer调色板填充、灰度比例填充)实战(density plot)