› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
rogwan
V2EX  ›  MySQL

对于空白的 MySQL 数据,一般习惯是留 null,还是填个空字符串?

  •  
  •   rogwan · Dec 5, 2017 via Android · 9391 views
    This topic created in 3239 days ago, the information mentioned may be changed or developed.
    有的数据可能为空白,一般是:
    1 懒得管,自动 null
    2 存个 '' 空字符串
    3 留个 0 (整数 /字符)占个坑

    大家平时哪个习惯多?
    16 replies  •  2017-12-11 11:07:14 +08:00
    realpg
        1
    realpg  
       Dec 5, 2017
    基本除非特殊情况,我的 mysql 的任何列都是禁止 null 的……
    liuyao729
        2
    liuyao729  
       Dec 5, 2017
    0
    zhx1991
        3
    zhx1991  
       Dec 5, 2017   ❤️ 2
    如果是字符串类型就是空串, 如果是数字类型就是 0 或者 -1

    千万别用 null, 坑到姥姥家
    est
        4
    est  
       Dec 5, 2017
    当然是留一个字符串 "Null"
    sinv
        5
    sinv  
       Dec 5, 2017
    @est #4 +1 没毛病
    whx20202
        6
    whx20202  
       Dec 6, 2017
    在不同的数据库 /版本 /引擎下,null 经常在排序,count,索引需要额外注意,所以建议用默认值
    kunluanbudang
        7
    kunluanbudang  
       Dec 6, 2017
    可能几乎是共识了

    禁止任何 NULL, 一般留一个表示「不合法情况」的默认值, 如 "" 0 什么的
    nondanee
        8
    nondanee  
       Dec 6, 2017 via Android
    为了 AVG()会用 null,其他情况""😂
    yangqi
        9
    yangqi  
       Dec 6, 2017
    具体要根据字段含义来,空白和 Null 含义是不一样的,Null 表示该字段没有数据,空白则表示有数据,是空白。
    love2075904
        10
    love2075904  
       Dec 6, 2017
    @yangqi 同意,不过如果该列会参与排序就有点坑爹了。
    paragon
        11
    paragon  
       Dec 6, 2017
    null 和“”的语义是不一样的~
    jjx
        12
    jjx  
       Dec 6, 2017
    如果该字段要被查询, 就别用空, 否则 查询 field is null or field='' , 这个是不能走查询优化的
    gouchaoer
        13
    gouchaoer  
       Dec 6, 2017
    avg 也可以用 case when 来避免 null 吧,如果你用-1 之类的来表示没有值啥的
    eslizn
        14
    eslizn  
       Dec 6, 2017
    还是看需求,而不是一味的禁止 null,禁止 join 等等,比如某个可选的唯一字段,可为 null 是最好的选择
    Erroad
        15
    Erroad  
       Dec 6, 2017
    NOT NULL DEFAULT ""
    metrxqin
        16
    metrxqin  
       Dec 11, 2017
    取决于需求,如果业务属性存在以下三种情况:
    1,可能压根不存在;
    2,存在但为空;
    3,存在不为空,则使用 NULL 作为默认值。 比如一个人的宠物名,存在压根没有宠物的情况,有宠物但没有起名。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2579 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 69ms · UTC 15:44 · PVG 23:44 · LAX 08:44 · JFK 11:44
    ♥ Do have faith in what you're doing.