Mysql 数据库默认值选 ‘’" 、Null和Empty String的区别

1:空值(’’)是不占用空间的
2: MySQL中的NULL其实是占用空间的。官方文档说明:
“NULL columns require additional space in the row to record whether their values are NULL. For MyISAM tables, each NULL column takes one bit extra, rounded up to the nearest byte.”
所以 mysql设计表时 建议不要用default NULL

string类型 建议用 ‘’" 或者 Empty String

int类型 建议默认给 0

另外一点,从不同的项目开发去分析这个问题:

以前单纯做web网页端,对这个默认值设定问题选用null 还是empty string。但是后来在另外一个团队开发app的时候,这个null和empty string的问题就尤为突出,因为我是用php做接口开发,如果一旦出现null的数据类型,没有处理直接返回去前端,那么无论是ios还是Android端,如果没有处理好这个空的判断,要么就直接输出null,要么程序直接报错。所有建议设计数据库的时候默认值尽量少用null.

两者的查询方式不一样:NULL值查询使用is null/is not null查询,而empty string可以使用=或者!=、<、>等算术运算符,这点算是最主要的区别了。
对于myisam引擎,null值占用额外的存储空间(1bit),空字符串则完全不占用空间。

Mysql 数据库默认值选 ‘‘“ 、Null和Empty String的区别相关推荐

  1. ThinkPHP5.1关于调用setInc方法数据库默认值为NULL时情况

    ThinkPHP5.1关于调用setInc方法数据库默认值为NULL时情况 只有当数据库的默认值为 0 的情况下,setInc 方法才能正确添加.否则当数据库默认值为 NULL 时,数据无法正确插入而 ...

  2. mysql建表语句非空约束默认_Navicat mysql 建表字段 默认值 空白、NULL 、empty string的区别...

    总结在最后,没啥干货 新建一张用户表CREATE TABLE `user` ( `id` bigint(20) DEFAULT NULL COMMENT '编号', `name` varchar(64 ...

  3. mysql int 默认值 为ull_mysql的 约束 数据库设计 数据库 存储 触发器 mysql 权限问题...

    今天的目标: mysql的 约束 数据库设计 数据库 存储 触发器 mysql 权限问题 先讲约束: 要他唯一 不能重复 不能空值 : 什么是 mysql的约束: 对mysql 进行约束 2.2  默 ...

  4. python mysql 的默认值_python--MySQL 库,表的详细操作

    一 库操作 数据库命名规则 可以由数字,字母,下划线,@, #, $ 区分大小写 唯一性 不能使用关键字如 create  select 不能单独使用数字 最长128位 # 这些是对上次的补充. 二 ...

  5. mysql数据类型默认值_MySQL数据类型 - 数据类型默认值

    数据类型默认值 数据类型规范可以有显式或隐式的默认值. 数据类型规范中的DEFAULT值子句显式指示列的默认值.示例: SERIAL DEFAULT VALUE是一种特殊情况.在整数列的定义中,它是N ...

  6. MySQL 字段默认值该如何设置

    MySQL 字段默认值该如何设置 前言: 在 MySQL 中,我们可以为表字段设置默认值,在表中插入一条新记录时,如果没有为某个字段赋值,系统就会自动为这个字段插入默认值.关于默认值,有些知识还是需要 ...

  7. MySQL增加默认值

    MySQL里面的表同一列里要填的若大多是同一个值,这时候就可以设置默认值了. 方便快捷的填充. 例如 存在jxgl里的students表性别列要填的大多是:男. 则可以使用ALTER命令修改. 详细命 ...

  8. mysql字段默认值不生效的问题解决(上)

    mysql字段默认值不生效的问题解决(上) 参考文章: (1)mysql字段默认值不生效的问题解决(上) (2)https://www.cnblogs.com/yuhuameng/p/10703931 ...

  9. int默认值为0,Integer默认值为null

    前提概要 Java为每个原始类型提供了封装类,Integer是java为int提供的封装类.         int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和 ...

最新文章

  1. 基础设计模式:单例模式+工厂模式+注册树模式
  2. 【java】兴唐第12-14节笔记整理
  3. 运维基础-文件权限管理
  4. MFC单文档的背景上绘制一个可以自动显示文字的长方形
  5. 洛谷 P1843 奶牛晒衣服
  6. (004)RN开发VSCode调试ReactNative项目
  7. W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915
  8. akka与neety_Akka STM –与STM Ref和Agent一起打乒乓球
  9. 【李宏毅机器学习】Convolutiona Neural Network 卷积神经网络(p17) 学习笔记
  10. python json传参数可以传对象吗_廖雪峰的python系列教程(52)——IO编程之序列化...
  11. Pytorch中Tensor和numpy数组的互相转化
  12. c语言for语句用法和例子
  13. 我的世界服务器自动刷矿机,我的世界服务器钻石大陆怎么做自动刷矿机 | 手游网游页游攻略大全...
  14. CiscoCUCM配置网关协议
  15. springcloud整合nacos启动时报错‘com.netflix.client.config.IClientConfig‘ that could not be found
  16. 掌握赚钱最快的方法 其实赚钱很有意思 你可以什么都不会
  17. 网上在线培训平台哪家好?
  18. 根据微信返回的头像url选择所需尺寸图片
  19. Burp Macros功能实现token验证爆破
  20. 【javaScript】学完js基础,顺便把js高级语法学了(尚硅谷视频学习笔记)

热门文章

  1. java searchterm_elasticsearch – 弹性搜索:“Term”,“Match Phrase”和“Query String”之间的差异...
  2. php二分查找算法时间复杂度,一个运用二分查找算法的程序的时间复杂度是什么...
  3. php中如何存储多个文本框,php-如何将每个字符的文本框拆分为多个子文本框
  4. [转载] Python京东抢购
  5. 线性代数分块矩阵求逆矩阵_单位矩阵属性(AI = A)| 使用Python的线性代数
  6. Java StreamTokenizer nextToken()方法与示例
  7. 英特尔核芯显卡控制面板没有了_核显和独显、集成显卡有什么区别
  8. python文本词频统计是什么_python 大批量文本分词 以及词频统计 (高效处理案例)...
  9. python库有什么用_Python程序员必知什么 常用的Python库有哪些
  10. 字符串乘一个数_【思维拓展】三位数乘两位数,构造最大积和最小积