【重学 MySQL】六十二、非空约束的使用
- 定义
- 目的
- 关键字
- 特点
- 作用
- 创建非空约束
- 删除非空约束
- 注意事项
在MySQL中,非空约束(NOT NULL Constraint)是一种用于确保表中某列不允许为空值的数据库约束。
定义
非空约束(NOT NULL Constraint)是一种数据库约束,用于限制表中某列的值不能为空。当对该列进行插入或更新操作时,如果未提供值或提供的值为NULL
,数据库系统将拒绝这些操作并返回错误。
目的
- 维护数据完整性:非空约束确保特定列的数据始终存在,防止因空值而导致的数据不完整问题。
- 提高数据质量:通过限制空值的输入,非空约束有助于提高整个数据库的数据质量。
- 简化数据维护:非空约束能够减少数据清洗和验证的工作量,因为数据库会自动执行这些检查。
- 支持业务逻辑:在某些业务场景中,某些字段的值必须是必填的,非空约束能够确保这一点。
关键字
not null
特点
- 默认,所有类型的值都可以是
null
,包括int
,float
等数据类型 - 非空约束只出现在表对象的列上,只能某个列单独限定非空,不能组合非空
- 一个表可以有很多列都分别限定为非空
- 空字符串
''
不等于null
,0
也不等于`n
作用
非空约束的作用是保证特定列的数据始终包含有效值,防止在插入或更新操作时出现空值,从而维护数据的完整性和一致性。
`
创建非空约束
-
在创建表时设置非空约束
- 可以在创建表时使用
NOT NULL
关键字来设置非空约束。 - 语法格式:
CREATE TABLE table_name ( column1 data_type NOT NULL, column2 data_type, ... );
- 示例:
CREATE TABLE students ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, age INT, gender VARCHAR(10) );
在上面的示例中,
name
列被定义为非空约束,因此在插入数据时,name
列不能为空。 - 可以在创建表时使用
-
在修改表时添加非空约束
- 如果在创建表时忘记了为字段设置非空约束,也可以通过修改表来添加非空约束。
- 语法格式:
ALTER TABLE table_name MODIFY column_name data_type NOT NULL;
或者:
ALTER TABLE table_name CHANGE COLUMN column_name column_name data_type NOT NULL;
- 示例:
ALTER TABLE students MODIFY name VARCHAR(50) NOT NULL;
或者:
ALTER TABLE students CHANGE COLUMN name name VARCHAR(50) NOT NULL;
删除非空约束
-
在修改表时删除非空约束
- 如果需要删除非空约束,可以使用
ALTER TABLE
语句。 - 语法格式:
ALTER TABLE table_name MODIFY column_name data_type NULL;
或者:
ALTER TABLE table_name CHANGE COLUMN column_name column_name data_type NULL;
- 示例:
ALTER TABLE students MODIFY name VARCHAR(50) NULL;
或者:
ALTER TABLE students CHANGE COLUMN name name VARCHAR(50) NULL;
- 如果需要删除非空约束,可以使用
注意事项
- 合理使用非空约束:非空约束有助于保证数据的完整性、提高查询效率,并规范数据录入的过程。但在应用非空约束时需要谨慎考虑业务需求,确保其在特定场景下的合理性和有效性。过度使用非空约束可能会限制数据录入的灵活性。
- 与默认值约束的配合使用:有时为了确保数据的完整性,可以同时使用非空约束和默认值约束。这样,在插入数据时如果未指定非空列的值,数据库将自动使用默认值。
总之,非空约束是MySQL中确保表中列值不能为空的重要约束。通过合理使用非空约束,可以有效地维护数据的完整性和一致性。