【MySQL】基础篇【约束概述 NOT NULL】

1.1 为什么需要约束 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中 存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。 为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。

1.2 什么是约束 约束是表级的强制规定。 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后通过 ALTER TABLE 语句规定 约束。

1.3 约束的分类 根据约束数据列的限制,约束可分为:

单列约束:每个约束只约束一列    {今天先介绍单列约束}、

2. NOT NULL 非空约束:(限定某个字段(列)的值不允许为空)

2.1特点:

默认,所有的类型的值都可以是NULL,包括INT、FLOAT等数据类型

非空约束只能出现在表对象的列上,只能某个列单独限定非空,不能组合非空

一个表可以有很多列都分别限定了非空

空字符串''不等于NULL,0也不等于NULL

2.2 添加非空约束: (1)建表时

CREATE TABLE test1(
 id INT NOT NULL,
 last_name VARCHAR(15) NOT NULL ,
 email VARCHAR(25),
 salary DECIMAL (10,2)
 )

测试 给不允许非空的内容 id 插入null 值


 -- 错误提示:Column 'id' cannot be null    # id 列不能为空
INSERT INTO test1 (id,last_name,email,salary) 
VALUES(NULL,'qiaodan','Jordan@126.com',3400);
 

 2.3 修改表结构

修改表结构方法修改列的约束和删除列的约束是一致的。

alter table 表名称 modify 字段名 数据类型  not / not null 

ALTER TABLE test1   # 修改就是删除 ,删除就是修改,将非空 not null 改为 null 是不是等于删除了not null 

MODIFY id int   NULL

将字段 id非空约束 删除掉,设置为允许为空 not ,在前面测试阶段 给不允许非空的内容 id 插入null 值不是不能成功吗,因为当时 id 的约束是 not null 不能是空值 现在修改为了空值 not 应该可以修改成功了吧。

INSERT INTO test1 (id,last_name,email,salary) 
VALUES(NULL,'qiaodan','Jordan@126.com',3400);

总结:

在数据库 约束的NULL 值不等于 0, 也不是 “ ” 

空字符串“ ”的长度是0,是不占用空间的;而的NULL的长度为NULL,其实它是占用空间的

你设置了那个字段的约束为 null 你在插入时,你插入的是null 值,而不是空字符串 ,空字符串不占用空间,而null占用5个字节空间,因为还有一个字节空间用来记录 这个字段是否为null 值

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值