非空约束(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,'tom1@126.com',3400);
- 这个时候会报错,因为这个时候我们将test1表中的last_name字段添加了非空约束,这个时候我们在添加数据的时候last_name的值就一定不能为null,这里显式的给last_name赋值为null,显然这个时候就会报错(column ‘last_name’ cannot be null)
INSERT INTO test1(id,email)
VALUES(2,'abc@126.com');
- 这里也会报错,因为我们将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;