• MySQL字段属性应该尽量设置为NOT NULL


    除非你有一个很特别的原因去使用 NULL 值,你应该总是让你的字段保持 NOT NULL。这看起来好像有点争议,请往下看。

    1、首先,我们要搞清楚空值("") 和 “NULL” 的概念:
           1)空值是不占用空间的
      2)MySQL中的NULL其实是占用空间的

    所谓的NULL就是什么都没有,连都没有,在字符串中是结束符,但是在物理内存是占空间的,等于一个字节,而NULL就是连这一个字节都没有。

    2、其次,在数据库里是严格区分的,任何数跟NULL进行运算都是NULL, 判断值是否等于NULL,不能简单用=,而要用IS NULL关键字。

    3、数据库的字段col1设为NOT NULL, 仅仅说明该字段不能为NULL, 也就是说只有在

    INSERT INTO table1(col1) VALUES(NULL);

    这种情况下数据库会报错,而

    INSERT INTO table1(col1) VALUES(‘’);

    不会报错。

    (如果字段是自增ID,第一句不会报错,这不能说明是可以为NULL,而是 数据库系统会根据ID设的缺省值填充,或者如果是自增字段就自动加一等缺省操作。)


    4、含有空值的列很难进行查询优化,而且对表索引时不会存储NULL值的,所以如果索引的字段可以为NULL,索引的效率会下降很多。因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。

    5、联表查询的时候,例如LEFT JOIN table2,若没有记录,则查找出的table2字段都是null。假如table2有些字段本身可以是null,那么除非把table2中not null的字段查出来,否则就难以区分到底是没有关联记录还是其他情况

  • 相关阅读:
    Python--初识函数
    Python中的文件操作
    Python中的集合
    Python中的编码和解码
    Python的关键字is和==
    Python中的字典
    Python中的列表和元组
    Python中几种数据的常用内置方法
    Python的编码
    python_while
  • 原文地址:https://www.cnblogs.com/liaokaichang/p/7879010.html
Copyright © 2020-2023  润新知