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('',); 结果:
共 1 行受到影响

-- 添加一个'null'或者'(NULL)'字符串,添加成功
INSERT INTO `user`(`name`,`sex`) VALUES('null',0);
INSERT INTO `user`(`name`,`sex`) VALUES('(NULL)',); 结果:
共 2 行受到影响

-- 设置name字段为null,添加失败
INSERT INTO `user`(`name`,`sex`) VALUES(NULL,); 结果:
错误代码: 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;

最新文章

  1. Android SQLiteOpenHelper(一)
  2. Sublime Text 2 (for OS X )配置成可以运行基于python3解释器的 .py文件
  3. node.js express的安装过程
  4. div滚动条演示
  5. Hadoop有关的网站
  6. mvc actionresult 判断是否回发?
  7. 多线程爬坑之路-J.U.C.atomic包下的AtomicInteger,AtomicLong等类的源码解析
  8. Python基础_函数2
  9. MySQL 各类日志文件介绍
  10. 第三次上机,ADO接口的使用
  11. crm 数据展示 和分页思想(一)
  12. lombok踩坑与思考
  13. Altera 在线资源使用
  14. [国家集训队] calc
  15. 20155228 实验二 Java面向对象程序设计
  16. CSS3设置Table奇数行和偶数行样式
  17. python 模块之hashlib
  18. C编译相关
  19. 汇编指令lodsb和stosb、lodsd和stosd
  20. Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request"

热门文章

  1. Wannafly Winter Camp 2020 Day 6I 变大! - dp
  2. Vue的H5页面唤起支付宝支付
  3. th:object、th:field、th:value 和 #dates.format 的冲突问题处理
  4. Xamarin.Forms弹出对话框插件
  5. laravel 解决 sql mode only_full_group_by
  6. collection和map集合类知识点总结
  7. Hdu1042 N! (阶乘高精度模板)
  8. Chrome 浏览器相关
  9. 利用GRC进行安全研究和审计 – 将无线电信号转换为数据包(转)
  10. c#快速热身