如何设置字段非空_mysql not null约束
发布时间 - 2025-12-26 00:00:00 点击率:次MySQL中设置字段为NOT NULL需在建表时直接定义或通过ALTER TABLE的MODIFY/CHANGE修改,已存NULL值须先清理;可配合DEFAULT提升易用性,是保障数据完整性的基础约束。
在 MySQL 中,设置字段为非空(NOT NULL)是通过在创建表或修改表结构时添加 NOT NULL 约束实现的。它能确保该字段必须有值,不能插入 NULL,是保障数据完整性最基础的约束之一。
建表时直接定义 NOT NULL
这是最常用的方式,在 CREATE TABLE 语句中为字段明确指定 NOT NULL:
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMEN
T,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
age INT
);说明:
- username 和 email 字段被设为 NOT NULL,插入数据时必须提供值;
- age 没加 NOT NULL,允许为 NULL(除非有其他默认行为,如严格模式下可能报错);
- 主键字段(如 id)默认隐式具备 NOT NULL 属性,无需重复写。
修改已有字段为 NOT NULL
对已存在的表,用 ALTER TABLE + MODIFY 或 CHANGE 实现:
- 使用 MODIFY(不改字段名):
ALTER TABLE users MODIFY email VARCHAR(100) NOT NULL;
- 使用 CHANGE(可同时改名和属性):
ALTER TABLE users CHANGE email email VARCHAR(100) NOT NULL;
注意:
- 若原字段已有 NULL 值,执行会失败;需先更新数据,把 NULL 改为有效值;
- 修改前建议备份,尤其在线上环境;
- 非空约束不可单独“添加”,必须配合字段类型重定义(即 MODIFY/CHANGE)。
取消 NOT NULL 约束(设为允许 NULL)
如果需要放宽限制,可将字段改回允许 NULL:
ALTER TABLE users MODIFY username VARCHAR(50) NULL;
或更明确地写成:
ALTER TABLE users MODIFY username VARCHAR(50); -- 不写 NULL 也默认允许 NULL
说明:
- 显式写 NULL 更清晰,但不是必须;
- 取消约束不会影响已有数据,只是放开插入/更新时的校验。
NOT NULL 和 DEFAULT 的配合使用
常与 DEFAULT 结合,避免插入时漏填又不想让应用层强校验:
CREATE TABLE logs (
id INT PRIMARY KEY AUTO_INCREMENT,
message TEXT NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);说明:
- message 必须显式提供;
- created_at 允许不填,自动补当前时间,但仍保持非空;
- 这种组合既保证字段不为空,又降低使用门槛。
不复杂但容易忽略:NOT NULL 是 DDL 层的数据规则,MySQL 在插入或更新时实时校验,违反会直接报错(如 “Column 'xxx' cannot be null”),所以设计阶段就合理设定,比后期修复更高效。
# mysql
# ai
# NULL
# default
# 严格模式
# column
# table
# 已有
# 设为
# 报错
# 这是
# 有效值
# 线上
# 又不
# 想让
# 可将
# 它能
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速搭建自助建站会员专属系统?
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
如何快速打造个性化非模板自助建站?
网站制作免费,什么网站能看正片电影?
如何在腾讯云服务器上快速搭建个人网站?
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
Laravel如何使用Blade模板引擎?(完整语法和示例)
PHP 500报错的快速解决方法
如何注册花生壳免费域名并搭建个人网站?
js实现获取鼠标当前的位置
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
如何在阿里云虚拟服务器快速搭建网站?
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
如何用狗爹虚拟主机快速搭建网站?
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
Laravel如何生成URL和重定向?(路由助手函数)
简单实现jsp分页
Laravel API资源类怎么用_Laravel API Resource数据转换
Java类加载基本过程详细介绍
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
如何快速完成中国万网建站详细流程?
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何实现javascript表单验证_正则表达式有哪些实用技巧
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
如何实现建站之星域名转发设置?
非常酷的网站设计制作软件,酷培ai教育官方网站?
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
Laravel Session怎么存储_Laravel Session驱动配置详解
bing浏览器学术搜索入口_bing学术文献检索地址
如何在云主机上快速搭建网站?
,交易猫的商品怎么发布到网站上去?
如何在 React 中条件性地遍历数组并渲染元素
黑客如何利用漏洞与弱口令入侵网站服务器?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
Python文本处理实践_日志清洗解析【指导】
浅述节点的创建及常见功能的实现
微信小程序 require机制详解及实例代码
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
如何在阿里云高效完成企业建站全流程?


T,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
age INT
);