非空约束 [MySQL][数据库]

非空约束(not null)的使用

注意: 默认情况下所有的类型的值为NULL,包括INT,FLOAT等数据类型默认情况下也为null

非空约束只能出现在表对象的列上,也就是只能定义为列级约束,并且非空约束不可以定义在表对象的所有列的后面,也就是不能定义为表级约束

注意: 空字符串’'不等于null, 0也不等于null

那么如何添加非空约束?

我们可以通过两种方式添加非空约束:

方式一 : 在CREATE TABLE是添加约束

CREATE TABLE test1(
id INT NOT NULL,
last_name VARCHAR(15) NOT NULL,
    email VARCHAR(25),
    salary DECIMAL(10,3)
);
  • 这里我们给test1表中的id和last_name字段添加了非空约束

那么添加了非空约束之后有什么作用?

我们通过两个例子来说明添加了非空约束之后的作用

INSERT INTO test1(id,last_name,email,salary)
VALUES(2,NULL,'[email protected]',3400);
  • 这个时候会报错,因为这个时候我们将test1表中的last_name字段添加了非空约束,这个时候我们在添加数据的时候last_name的值就一定不能为null,这里显式的给last_name赋值为null,显然这个时候就会报错(column ‘last_name’ cannot be null)
INSERT INTO test1(id,email)
VALUES(2,'[email protected]');
  • 这里也会报错,因为我们将test1表中的last_name字段设置添加了非空约束,这个时候添加数据的时候last_name的值就一定不能为null,这里我们虽然没有显式的为last_name字段赋值,但是这个时候我们没有提供默认值约束,这个时候添加数据的时候就是赋默认值null,那么这个时候也就自然会报错了

方式二 : 在ALTER TABLE是添加约束

这里我们也是通过举例的方式来说明如何在ALTER TABLE的时候添加非空约束

ALTER TABLE test1
MODIFY email VARCHAR(15) NOT NULL;
  • 这里就是给test1表中的email字段添加非空约束
  • 注意: 如果在给email字段添加非空约束的时候发现表中email字段的值已经有为NULL的了,那么这个时候我们就要将表中为NULL的email字段内容全部改为非空(不是NULL)之后才可以添加非空约束,直接添加会出错

那么我们如何删除约束?

我们在ALTER TABLE时删除约束

ALTER TABLE test1
MODIFY email VARCHAR(25) NULL;

总结: 添加约束就是修改修改字段为NOT NULL, 删除约束就是修改字段为NULL

猜你喜欢

转载自blog.csdn.net/m0_57001006/article/details/123564418