2.1 作用

限定某个字段/某列的值不允许为空1555426972098.png

2.2 关键字

NOT NULL

2.3 特点

  • 默认,所有的类型的值都可以是NULL,包括INT、FLOAT等数据类型
  • 非空约束只能出现在表对象的列上,只能某个列单独限定非空,不能组合非空
  • 一个表可以有很多列都分别限定了非空
  • 空字符串’’不等于NULL,0也不等于NULL

2.4 添加非空约束

(1)建表时

  1. CREATE TABLE 表名称(
  2. 字段名 数据类型,
  3. 字段名 数据类型 NOT NULL,
  4. 字段名 数据类型 NOT NULL
  5. );

举例:

  1. CREATE TABLE emp(
  2. id INT(10) NOT NULL,
  3. NAME VARCHAR(20) NOT NULL,
  4. sex CHAR NULL
  5. );
  1. CREATE TABLE student(
  2. sid int,
  3. sname varchar(20) not null,
  4. tel char(11) ,
  5. cardid char(18) not null
  6. );
  1. insert into student values(1,'张三','13710011002','110222198912032545'); #成功
  2. insert into student values(2,'李四','13710011002',null);#身份证号为空
  3. ERROR 1048 (23000): Column 'cardid' cannot be null
  4. insert into student values(2,'李四',null,'110222198912032546');#成功,tel允许为空
  5. insert into student values(3,null,null,'110222198912032547');#失败
  6. ERROR 1048 (23000): Column 'sname' cannot be null

(2)建表后

  1. alter table 表名称 modify 字段名 数据类型 not null;

举例:

  1. ALTER TABLE emp
  2. MODIFY sex VARCHAR(30) NOT NULL;
  1. alter table student modify sname varchar(20) not null;

2.5 删除非空约束

  1. alter table 表名称 modify 字段名 数据类型 NULL;#去掉not null,相当于修改某个非注解字段,该字段允许为空
  2. alter table 表名称 modify 字段名 数据类型;#去掉not null,相当于修改某个非注解字段,该字段允许为空

举例:

  1. ALTER TABLE emp
  2. MODIFY sex VARCHAR(30) NULL;
  1. ALTER TABLE emp
  2. MODIFY NAME VARCHAR(15) DEFAULT 'abc' NULL;