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;

 

转载于:https://www.cnblogs.com/lixingwu/p/7204377.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值