非空约束是数据库设计中确保数据完整性的重要手段,它强制要求表中的特定列必须有值,不能为NULL。
非空约束的核心特性
1. 强制数据完整性:确保关键字段必须有值
2. 防止空值错误:避免应用程序因空值导致的逻辑错误
3. 与默认值约束配合:常与DEFAULT约束一起使用,确保字段始终有值
使用方法
创建表时设置非空约束
CREATE TABLE tb_dept4 ( id INT(11) PRIMARY KEY, name VARCHAR(22) NOT NULL, -- 部门名称不能为空 location VARCHAR(50) );
修改表添加非空约束
ALTER TABLE tb_dept4 CHANGE COLUMN location location VARCHAR(50) NOT NULL;
删除非空约束
ALTER TABLE tb_dept4 CHANGE COLUMN location location VARCHAR(50) NULL;
实际应用场景
1. 用户表的用户名和密码字段:必须要有值
2. 订单表的订单号和创建时间:不能为空
3. 产品表的关键信息字段:如产品名称、价格等
注意事项
1. 主键(PRIMARY KEY)自动具有非空属性,不需要额外声明NOT NULL
2. 非空约束与默认值约束常一起使用,确保字段始终有有效值
3. 添加非空约束前,应确保表中该列没有NULL值,否则操作会失败
4. 在已有数据的列上添加非空约束时,可以先设置默认值
最佳实践
推荐做法:非空约束与默认值约束配合使用
CREATE TABLE users ( user_id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL, status TINYINT NOT NULL DEFAULT 1, -- 默认激活状态 created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP );
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程