MYSQL约束 -- not null 非空约束

2、not null 非空约束

  用于确保当前列的值不为空;在创建表时,如果不指定是否可以为空,字段默认可以为NULL。

-- 这是上一篇默认约束创建的表
CREATE TABLE `test`.`user`(
  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT ‘id‘,
  `name` VARCHAR(225) NOT NULL COMMENT ‘姓名‘, -- 这里添加了NOT NULL
  `sex` TINYINT(1) DEFAULT 1 COMMENT ‘性别 1男 0女‘,
  PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_c

给字段添加非空约束:

/*
在创建表时,直接在字段类型后面添加 NOT NULL 即可。
如果已经存在了表,那么直接修改表的字段为非空
*/
ALTER TABLE `user`  MODIFY  `name` VARCHAR(255) NOT NULL;DESC `user`; -- DESC 查看表结构

结果:Field   Type          Null    Key     Default  Extra           -----------------------------------------------------------------id      int(11)       NO      PRI     (NULL)   auto_increment  name    varchar(225)  NO              (NULL)                   sex     tinyint(1)    YES             1                       

删除非空约束:

/*
删除非空约束和添加非空约束一样,都是修改表字段的结构;
直接删除 NOT NULL,这样就把非空删除了。
*/
ALTER TABLE `user` MODIFY `name` VARCHAR(255);
DESC `user`;

结果:
Field   Type          Null    Key     Default  Extra
---------------------------------------------------------------
id      int(11)       NO      PRI     (NULL)   auto_increment
name    varchar(255)  YES             (NULL)
sex     tinyint(1)    YES             1                        

向非空约束中添加数据:

-- 添加一条记录,直接设置name字段为 ‘‘ ,可以添加成功。
INSERT INTO `user`(`name`,`sex`) VALUES(‘‘,0);

结果:
共 1 行受到影响

-- 添加一个‘null‘或者‘(NULL)‘字符串,添加成功
INSERT INTO `user`(`name`,`sex`) VALUES(‘null‘,0);
INSERT INTO `user`(`name`,`sex`) VALUES(‘(NULL)‘,0);

结果:
共 2 行受到影响

-- 设置name字段为null,添加失败
INSERT INTO `user`(`name`,`sex`) VALUES(NULL,0);

结果:
错误代码: 1048
COLUMN ‘name‘ cannot be NULL

-- 不设置name字段的值,直接添加,添加失败-- 如果在name字段上再加上默认约束,那么就可以添加,添加的值为默认的值INSERT INTO `user`(`sex`) VALUES(0);

结果:
错误代码: 1364
FIELD ‘name‘ doesn‘t have a default value

有关的null的查询:

-- 查询name字段为NULL的记录
SELECT * FROM `user` WHERE `name` IS NULL;

-- 查询name字段为不为NULL的记录
SELECT * FROM `user` WHERE `name` IS NOT NULL;

-- 查询空字符串‘‘
SELECT * FROM `user` WHERE `name` = ‘‘;

-- 查询全是空的字符串,使用 LENGTH 和 TRIM 函数组合
SELECT * FROM `user` WHERE LENGTH(TRIM(`name`)) = 0;
时间: 2024-10-21 17:37:36

MYSQL约束 -- not null 非空约束的相关文章

not null 非空约束

例子:create table tb1(     id int,     name varchar(20) not null); 注意  空字符不等于null #手动,添加非空约束 (必须这个字段,没有NULL值)mysql> alter table tb1    -> modify id int not null; # 取消非空约束mysql> alter table tb1    -> modify id int ; 原文地址:https://www.cnblogs.com/m

MySQL之非空约束(NOT NULL)

定义: MySQL非空约束(NOT NULL)可以通过 CREATE TABLE 或 ALTER TABLE 语句实现.在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能为空.非空约束(Not Null Constraint)指字段的值不能为空.对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错. 设置非空约束: 1.在创建数据表时设置非空约束 语法规则如下: CREATE TABLE <数据表名> <字段名><数据类

mySQL 约束 (Constraints):一、非空约束 NOT NULL 约束

非空约束 NOT NULL 约束: 强制列不能为 NULL 值,约束强制字段始终包含值.这意味着,如果不向字段添加值,就无法插入新记录或者更新记录. 1.在 "Persons" 表创建时在 Id列.name列创建 not null 约束: create table Persons(id int not NULL,p_name varchar(20) not null, deparment varchar(20),address varchar(20),telNum varchar(20

使用非空约束

非空约束指字段的值不能为空,如果为空则报错 mysql> CREATE TABLE tb_emp6    -> (    -> id INT(11) PRIMARY KEY,    -> name VARCHAR(25) NOT NULL,   # 指定员工的名称不能为空    -> deptId INT(11),    -> salary FLOAT    -> );

非空约束

在定义数据表的时候,默认情况下所有字段都是允许为空值的,如果需要禁止字段为空,那么就需要在创建表的时候显示指定.指定一个字段为空的方式就是在字段定义后增加NOT NULL,比如下面的SQL语句创建了表T_Person,并且设置FNumber 字段不允许为空: MYSQL,MSSQLServer,DB2: CREATE TABLE T_Person (FNumber VARCHAR(20) NOT NULL ,FName VARCHAR(20),FAge INT) Oracle: CREATE T

oracle添加,修改非空约束

NOT NULL约束就是非空约束,经常会在创建表的时候添加非空约束以保证字段必须要输入值 (1)创建表时添加NOT NULL约束 语法: CREATE TABLE 表名( 字段   类型  NOT NULL ........ ); 实例:  CREATE TABLE MANAGERINFO( MANAGERID VARCHAR2(10), LOGINNAME VARCHAR2(10) NOT NULL, PASSWORD VARCHAR2(10) NOT NULL, NAME VARCHAR2(

非空约束对数据插入的影响

正如“非空约束”表达的意思,如果对一个字段添加了非空约束,那么我们是不能向这个字段中插入NULL值的.T_Debt表的FAmount字段是有非空约束的,如果我们执行下面SQL: INSERT INTO T_Debt (FNumber, FPerson) VALUES ("1", "Jim") 这句SQL中没有为字段FAmount赋值,也就是说FAmount为空值.我们执行这句SQL以后数据库系统会报出类似如下的错误信息: 不能将值NULL 插入列"FAmo

非空约束对数据更新的影响

正如“非空约束”表达的意思,如果对一个字段添加了非空约束,那么我们是不能将这个字段中的值更新为NULL的.T_Debt表的FAmount字段是有非空约束的,如果我们执行下面SQL: UPDATE T_Debt set FAmount = NULLWHERE FPerson="Tom" 这句SQL为FAmount 设置空值.我们执行这句SQL以后数据库系统会报出类似如下的错误信息: 不能将值NULL 插入列"FAmount",表"demo.dbo.T_Deb

Oracle数据库,非空约束、主键约束、外键约束、唯一约束

非空约束:设置列时,可为空默认可为空,去掉对号之后设置数据不可为空: 唯一约束:在键中设置,唯一约束名称.类型Unique.列名:设置应用完成之后,此列数据具有唯一性:即数据不可重复 主键约束:主键列自动具有非空约束和唯一约束,一个表只能有一个主键约束(自动生成索引,提高查询效率)