MySQL 中 DEFAULT NULL 与 DEFAULT '' 的区别

Mysql 中经常看到很多字段类型的设计成 

DEFAULT NULL 与 DEFAULT ''

所以有时候很不好区别

概念对比

image

 

-- 1. 可选的联系方式
CREATE TABLE contacts (
    id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    mobile_phone VARCHAR(20) DEFAULT NULL,  -- 手机号可选
    home_phone VARCHAR(20) DEFAULT NULL,    -- 家庭电话可选
    wechat_id VARCHAR(50) DEFAULT NULL      -- 微信号可选
);

-- 2. 时间戳(未发生事件)
CREATE TABLE orders (
    id INT PRIMARY KEY,
    order_date DATETIME NOT NULL,
    paid_date DATETIME DEFAULT NULL,        -- 未支付时为NULL
    shipped_date DATETIME DEFAULT NULL,     -- 未发货时为NULL
    delivered_date DATETIME DEFAULT NULL    -- 未送达时为NULL
);

-- 3. 外键关联(可选关联)
CREATE TABLE articles (
    id INT PRIMARY KEY,
    title VARCHAR(200) NOT NULL,
    author_id INT DEFAULT NULL,             -- 可能匿名发表
    category_id INT DEFAULT NULL,           -- 可能未分类
    FOREIGN KEY (author_id) REFERENCES users(id),
    FOREIGN KEY (category_id) REFERENCES categories(id)
);

 

-- 1. 文本描述字段
CREATE TABLE products (
    id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    description TEXT DEFAULT '',            -- 描述默认为空,不是NULL
    specifications TEXT DEFAULT ''          -- 规格参数默认为空
);

-- 2. 代码或标识字段
CREATE TABLE system_config (
    id INT PRIMARY KEY,
    config_key VARCHAR(50) NOT NULL UNIQUE,
    config_value VARCHAR(200) DEFAULT '',   -- 配置值默认为空字符串
    remarks VARCHAR(500) DEFAULT ''         -- 备注信息
);

-- 3. 路径或URL字段
CREATE TABLE resources (
    id INT PRIMARY KEY,
    resource_name VARCHAR(100) NOT NULL,
    file_path VARCHAR(500) DEFAULT '',      -- 文件路径默认为空
    thumbnail_url VARCHAR(500) DEFAULT ''   -- 缩略图URL默认为空
);

 

 

总结:

image

 

posted @ 2025-11-04 09:06  方达达  阅读(12)  评论(0)    收藏  举报