MySQL中空值Null和空字符‘‘的具体使用

目录
  • 1. 空值 Null 和空字符 ''
  • 2. 空值 Null 和空字符 '' 在查询方式上的对比
    • 2.1. 创建 SQL 脚本
    • 2.2. 查询 username 列为空字符串 '' 的所有数据
    • 2.3. 查询 username 列为空值 null 的所有数据
    • 2.4. 查询 username 列不为空值 null 的所有数据
  • 3. 空值 Null 和空字符 '' 在 count() 函数查询的对比
    • 3.1. 查询 username 列数据总数
  • 4. MySQL 中的比较运算符

1. 空值 Null 和空字符 ''

日常开发中,一般都会涉及到数据库增删改查,那么不可避免会遇到 MySQL 中的 NULL 和空字符 '',二者表面上看都是空,其实存在一些差异的

  • 空值 NULL 的长度是 NULL,不确定占用了多少存储空间,它是占用存储空间的
  • 空字符串 '' 的长度是 0,是不占用空间的*

通俗的讲:空字符串 '' 就像是一个真空状态的杯子,什么都没有;而空值 NULL 就像是一个装满空气的杯子,是有东西的。二者虽然看起来都是空的、透明的,但是有着本质的区别

2. 空值 Null 和空字符 '' 在查询方式上的对比

2.1. 创建 SQL 脚本

CREATE TABLE `test_1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;

--插入数据
INSERT INTO test_1 VALUES(1,'李斯','111111');
INSERT INTO test_1 VALUES(2,'','');
INSERT INTO test_1 VALUES(3,null,'');
INSERT INTO test_1 VALUES(4,null,1);

表中的数据如下,注意 null 值与 ''

2.2. 查询 username 列为空字符串 '' 的所有数据

2.3. 查询 username 列为空值 null 的所有数据

2.3.1. 错误 SQL

2.3.2. 正确 SQL

2.4. 查询 username 列不为空值 null 的所有数据

2.4.1. 错误 SQL

2.4.2. 正确 SQL

  • 比较字符 =,>,< ,<>!= 都不能用于查询比较 null 值,如果需要查询空值 null,必须使用 is nullis not null
  • 空值 '' 可以使用 =, !=, <, > 等算术运算符来查询的

3. 空值 Null 和空字符 '' 在 count() 函数查询的对比

3.1. 查询 username 列数据总数

使用 count() 的时候,空值 null 并不会被当成有效值去统计的

空字符串 '' 是会被 count() 函数所统计的

4. MySQL 中的比较运算符

运算符 含义
= 等于
<=> 安全等于,可以比较 null
<> 或 != 不等于
>= 大于等于
<= 小于等于
> 大于
< 小于
IS NULL 判断一个值是否为 null
IS NOT NULL 判断一个值是否不为 null

到此这篇关于MySQL中空值Null和空字符‘‘的具体使用的文章就介绍到这了,更多相关MySQL 空值Null和空字符‘‘内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 区分MySQL中的空值(null)和空字符('')

    日常开发中,一般都会涉及到数据库增删改查,那么不可避免会遇到Mysql中的NULL和空字符. 空字符('')和空值(null)表面上看都是空,其实存在一些差异: 定义: 空值(NULL)的长度是NULL,不确定占用了多少存储空间,但是占用存储空间的 空字符串('')的长度是0,是不占用空间的 通俗的讲: 空字符串('')就像是一个真空转态杯子,什么都没有. 空值(NULL)就像是一个装满空气的杯子,含有东西. 二者虽然看起来都是空的.透明的,但是有着本质的区别. 区别: 在进行count()统计

  • 你知道mysql中空值和null值的区别吗

    前言 最近发现带的小伙伴写sql对于空值的判断方法不正确,导致程序里面的数据产生错误,在此进行一下整理,方便大家以后正确的判断空值.以下带来示例给大家进行讲解. 建表 create table test (colA varchar(10) not null,colB varchar(10) null); 向test表中插入数据 插入colA为null的数据 insert into test values (null,1); 此时会报错,因为colA列不能为null. 插入colB为null的数据

  • MySQL中空值Null和空字符‘‘的具体使用

    目录 1. 空值 Null 和空字符 '' 2. 空值 Null 和空字符 '' 在查询方式上的对比 2.1. 创建 SQL 脚本 2.2. 查询 username 列为空字符串 '' 的所有数据 2.3. 查询 username 列为空值 null 的所有数据 2.4. 查询 username 列不为空值 null 的所有数据 3. 空值 Null 和空字符 '' 在 count() 函数查询的对比 3.1. 查询 username 列数据总数 4. MySQL 中的比较运算符 1. 空值 N

  • MySQL中设置NULL和空白字符串的问题及解决

    目录 MySQL设置NULL和空白字符串问题 在MySQL中判断是否为NULL MySQL中空值(null)和空字符(‘‘) 长度和判空 ifnull 建议 MySQL设置NULL和空白字符串问题 今天在修改一个bug,发现了很多问题. 记录其中一个比较有意识的bug. 数据库使用的是MySQL 先不谈问题,我就是觉得同一个字段,有人存了设置为空白字符串,有人设置了NULL. 空值是不占用空间的,MySQL中的NULL其实是占用空间的. 还有啊,有时候你虽然插入了NULL,但在数据库中还是有值的

  • python 在mysql中插入null空值的操作

    python在mysql中插入null空值 sql = "INSERT INTO MROdata (MmeUeS1apId) VALUES (%s)"%'NULL' %s没有引号,可以将"null"中null写进数据库,达到NULL值效果. %s加引号 values就是字符串,导致类型错误,插入错误. sql = "INSERT INTO MROdata (MmeUeS1apId) VALUES ('%s')"%'NULL' 补充:数据库中的空值

  • 小心陷阱!MySQL中处理Null时需注意两点

    MySQL数据库是一个基于结构化数据的开源数据库.SQL语句是MySQL数据库中核心语言.不过在MySQL数据库中执行SQL语句,需要小心两个陷阱. 陷阱一:空值不一定为空 空值是一个比较特殊的字段.在MySQL数据库中,在不同的情形下,空值往往代表不同的含义.这是MySQL数据库的一种特性.如在普通的字段中(字符型的数据),空值就是表示空值.但是如果将一个空值的数据插入到TimesTamp类型的字段中,空值就不一定为空.此时为出现什么情况呢(如下图)? 我先创建了一个表.在这个表中有两个字段:

  • 一文带你探究MySQL中的NULL

    目录 前言 1 MySQL 中的NULL 2 NULL占用的长度 3 对NULL值的比较 4 SQL对NULL值进行处理 5 值为NULL 对查询条件的影响 6 值为NULL对索引的影响 7 值为NULL对排序的影响 8 NULL和空值区别 总结 前言 不知道大家有没有遇到这样的问题,当我们在对MySQL数据库进行查询操作时,条件写的是status!=1,理论上会将所有不符合条件的查询出来,但奇怪的是结果为NULL的就查不出来,必须得拼接上条件or status IS NULL.本篇文章我们就一

  • Mysql中的NULL和Empty String

    最近新接触Mysql,昨天新建一个表用于存储表结构信息: create table tablist(TABLE_SCHEMA varchar(40),TABLE_NAME varchar(40),COLUMN_NAME varchar(40),COLUMN_TYPE varchar(40), IS_NULLABLE varchar(10),COLUMN_DEFAULT varchar(40),COLUMN_COMMENT varchar(1000),REMARK varchar(2000));

  • MySQL中关于null值的一个小问题

    今天在测试null值的时候,发现了一个小问题,记录在这里,不知道大家以前遇到过没. 事情发展是这样的,在过滤一个表中的数值的时候,需要把age=2的列给剔除掉,然后查看剩余的列信息,这个操作看起来比较简单,我用一个表模拟一下过程: CREATE TABLE `test` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `age` int(11) DEFAULT NULL,   `score` varchar(20) NOT NULL DEFAULT '',

  • MySQL中对于NULL值的理解和使用教程

    NULL值的概念是造成SQL的新手的混淆的普遍原因,他们经常认为NULL是和一个空字符串''的一样的东西.不是这样的!例如,下列语句是完全不同的: mysql> INSERT INTO my_table (phone) VALUES (NULL); mysql> INSERT INTO my_table (phone) VALUES (""); 两个语句把值插入到phone列,但是第一个插入一个NULL值而第二个插入一个空字符串.第一个的含义可以认为是"电话号码不

  • mysql中替代null的IFNULL()与COALESCE()函数详解

    在MySQL中isnull()函数不能作为替代null值! 如下: 首先有个名字为business的表: SELECT ISNULL(business_name,'no business_name') AS bus_isnull FROM business WHERE id=2 直接运行就会报错: 错误代码: 1582 Incorrect parameter count in the call to native function 'isnull' 所以,isnull()函数在mysql中就行不

随机推荐