首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL字段nullnot null学习思考

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接本声明。...最后的理解是:mysql所有字段尽可能使用not null。最终时间默认值设为1970-01-01 08:00:00,使用这个的原因是该时间对应的时间戳是0。...除非有特别的原因使用NULL值,应该总是让字段保持not null。 空值跟NULL是两个概念 (1)空值不占用空间 (2)MYSQLNULL其实是占用空间的。...你应该用0、一个特殊值或者一个空串代替NULL。(影响索引效率的原因:NULL不是空值,而是要占用空间,所以MYSQL进行比较的时候,NULL会参与字段比较,所以对效率有一部分影响。...MYSQL NULL特殊的影响使用:https://opensource.actionsky.com/20190710-mysql/

2.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL中IS NULL、IS NOT NULL、!=不能用索引?胡扯!

    来源:我们都是小青蛙 作者:小孩子4919 不知道从什么时候开始,网上流传着这么一个说法: MySQL的WHERE子句中包含 IS NULL、IS NOT NULL、!...NULL值是怎么在记录中存储的 在MySQL中,每一条记录都有它固定的格式,我们以InnoDB存储引擎的Compact行格式为例,来看一下NULL值是怎样存储的。...有3个值允许为NULL的列,所以这3个列二进制位的对应关系就是这样: ?...再一次强调,二进制位按照列的顺序逆序排列,所以第一个列c1最后一个二进制位对应。 二进制位的值为1时,代表该列的值为NULL。 二进制位的值为0时,代表该列的值不为NULL。..., NULL); 这条记录的c1、c3、c4这3个列中c3c4的值都为NULL,所以这3个列对应的二进制位的情况就是: ?

    4.4K30

    MySQLNULL空值的区别?

    01 小木的故事 作为后台开发,在日常工作中如果要接触Mysql数据库,那么不可避免会遇到Mysql中的NULL空值。那你知道它们有什么区别吗? 学不动了,也不想知道它们有什么区别。...---- 面试官:你有用过MySQL吗? 小木:有! 面试官:那你能大概说一下MysqlNULL空值的区别吗?...02 NULL空值 NULL也就是在字段中存储NULL值,空值也就是字段中存储空字符(’’)。...4、索引字段说明 看到网上有一些人说: MySql中如果某一列中含有NULL,那么包含该列的索引就无效了。 给one two 字段分别加上普通索引。...使用EXPLAIN 来进行演示说明,EXPLAIN 的使用说明:Mysql中explain用法结果字段的含义介绍 复合索引 普通索引 发现查询two字段 是可以正常使用索引的。

    2.6K10

    MySQL NULL值特性

    NULL是一种“没有类型”的值,通常表示“无值”,“未知值”,“缺失值”,“超界”,“不在其中”等,我们在日常运用中很容易NULL字符串混淆,这里大致整理了下NULL值的一些特性,以便能够正确使用NULL...NULL字符时,就很难区别NULLNULL值还是NULL字符串了,这时需要用到NULL值的判断,NULL值的判断只有is NULLis not NULL 通过肉眼很难区别,这里通过NULL值的判断...(expr1,expr2)(如果expr1 is null则返回expr2,否则返回expr1) 6,NULL值的比较运算算术运算,结果仍为NULL值,但是运算符时,NULLNULL为真...7,NULL值的逻辑运算,is NULL运算只有null is null为真返回数字1,is not NULL运算只有 null is not null为假返回数字0 8,MySQL会把单独的...\N(区分大小写)当作NULL值 9,NULL空字符’’不一样,查询字段为空字符时,可以用等号,不考虑长度,都显示为空,但是长度不一样 10,空字符其他字符做算术运算时当作0处理,但是当做分母时运算结果为

    2.7K10

    MySQL中IS NULL、IS NOT NULL、!=不能用索引?胡扯!

    不知道从什么时候开始,网上流传着这么一个说法: MySQL的WHERE子句中包含 IS NULL、IS NOT NULL、!= 这些条件时便不能使用索引查询,只能使用全表扫描。...NULL值是怎么在记录中存储的 在MySQL中,每一条记录都有它固定的格式,我们以InnoDB存储引擎的Compact行格式为例,来看一下NULL值是怎样存储的。...有3个值允许为NULL的列,所以这3个列二进制位的对应关系就是这样: ?...再一次强调,二进制位按照列的顺序逆序排列,所以第一个列c1最后一个二进制位对应。 二进制位的值为1时,代表该列的值为NULL。 二进制位的值为0时,代表该列的值不为NULL。..., NULL); 这条记录的c1、c3、c4这3个列中c3c4的值都为NULL,所以这3个列对应的二进制位的情况就是: ?

    2.4K30

    MySQL中IS NULL、IS NOT NULL、!=不能用索引?胡扯!

    不知道从什么时候开始,网上流传着这么一个说法: MySQL的WHERE子句中包含 IS NULL、IS NOT NULL、!= 这些条件时便不能使用索引查询,只能使用全表扫描。...NULL值是怎么在记录中存储的 在MySQL中,每一条记录都有它固定的格式,我们以InnoDB存储引擎的Compact行格式为例,来看一下NULL值是怎样存储的。...有3个值允许为NULL的列,所以这3个列二进制位的对应关系就是这样: ?...再一次强调,二进制位按照列的顺序逆序排列,所以第一个列c1最后一个二进制位对应。 二进制位的值为1时,代表该列的值为NULL。 二进制位的值为0时,代表该列的值不为NULL。..., NULL); 这条记录的c1、c3、c4这3个列中c3c4的值都为NULL,所以这3个列对应的二进制位的情况就是: ?

    2.1K20

    null出发-看看为何mysql这么排斥null

    mysql null的空间表现 nullmysql中是一种特殊的“占位符”,用来表示不确定性,但是实际上它也是需要占用一部分内存空间的,比不是所想的会省内存。...(这个是问题,但忽略不计) 某些情况可以省,但是相对于它带来的其他影响,这点优势啥都不是,继续往下看 mysql null对索引的影响 Mysql难以优化引用可空列查询,它会使索引、索引统计值更加复杂...--《高性能mysql》 1、虽然mysql会对null字段也进行索引,但是只有is null的方式会使用上索引,所以一旦使用不好,索引就无效了。...2、如果null列做了唯一索引,那就尴尬了:唯一索引字段允许插入多条null的记录 3、null一定程度上会是key_len变长(key_len 的计算规则三个因素有关:数据类型、字符编码、是否为null...总结 1、使用上容易出错 2、很容易导致索引不可用或者效率下降 3、很多情况下会增加存储 4、提升表的维护成本 所有使用NULL值的情况,都可以通过一个有意义的值的表示,这样有利于代码的可读性可维护性

    1.4K20
    领券