MySQL 中 DEFAULT NULL 与 DEFAULT '' 的区别
Mysql 中经常看到很多字段类型的设计成
DEFAULT NULL 与 DEFAULT ''
所以有时候很不好区别
概念对比

-- 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默认为空
);
总结:


浙公网安备 33010602011771号