为什么mysql字段要设置为not null?

为什么mysql字段要设置为not null?
现在 大师来跟大家解释解释

首先 我们创建一个表 asd字段为nullqwe字段为not null,都无默认值

CREATE TABLE `tb` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`asd` VARCHAR(45) NULL,
`qwe` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idtb`)
)

然后

insert tb(asd) values('123123123');
insert tb(qwe) values('123123123');

现在 我们来查看这个表
请输入图片描述
可以看出
not nullqwe字段 未设置的时候是个空字符串
nullasd字段 未设置的时候是个NULL

以上结果 大家应该都可以想像到的。
那么为什么要设置NOT NULL
因为 MYSQL不是PHP,NULL不等于空字符串
比如我们查询qwe为空的

select * from tb where qwe=''

可以找到
请输入图片描述
但是

select * from tb where asd=''

则什么都找不到

而我们WEB开发的时候,果然有的地方插入记录 是指定空字符串,有的地方插入记录没有指定值,如果字段没设置NOT NULL,那就是出现:
请输入图片描述

而你查找的时候,只会出现
请输入图片描述

所以 要设置 NOT NULL
这个 就不会有NULL出现了。


后记:好久以前写的一篇文章,忘记了有没有发表,今天整理网盘刚好看到,就发上来了。


王道中强流
不为繁华易匠心

在福州“土生土长”的 1986 年老程序员一枚,专注 Web 技术三十年。

1.7k 声望
44 粉丝
0 条评论
推荐阅读
Linux自动备份MySQL
首先找到你的MySQL配置文件my.cnf {代码...} 然后修改它, {代码...} 在[client]里增加三行: {代码...} 本来不需要这些操作,直接把用户名密码写到备份脚本里就可以,但是 MySQL 5.6 之后在命令行里写密码会出现...

王道中强流阅读 2k

万字长文~vue+express+mysql带你彻底搞懂项目中的权限控制(附所有源码)
所谓的权限,其实指的就是:用户是否能看到,以及是否允许其对数据进行增删改查的操作,因为现在开发项目的主流方式是前后端分离,所以整个项目的权限是后端权限控制搭配前端权限控制共同实现的

水冗水孚11阅读 1.5k

花了几个月时间把 MySQL 重新巩固了一遍,梳理了一篇几万字 “超硬核” 的保姆式学习教程!(持续更新中~)
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

民工哥11阅读 1.1k

封面图
一次偶然机会发现的MySQL“负优化”
今天要讲的这件事和上述的两个sql有关,是数年前遇到的一个关于MySQL查询性能的问题。主要是最近刷到了一些关于MySQL查询性能的文章,大部分文章中讲到的都只是一些常见的索引失效场合,于是我回想起了当初被那个...

骑牛上青山8阅读 2.3k评论 2

初学后端,如何做好表结构设计?
这篇文章介绍了设计数据库表结构应该考虑的4个方面,还有优雅设计的6个原则,举了一个例子分享了我的设计思路,为了提高性能我们也要从多方面考虑缓存问题。

王中阳Go3阅读 789评论 2

封面图
2023最新MySQL高频面试题汇总
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~

程序员大彬3阅读 1k

Mysql索引覆盖
通常情况下,我们创建索引的时候只关注where条件,不过这只是索引优化的一个方向。优秀的索引设计应该纵观整个查询,而不仅仅是where条件部分,还应该关注查询所包含的列。索引确实是一种高效的查找数据方式,但...

京东云开发者2阅读 969

封面图

在福州“土生土长”的 1986 年老程序员一枚,专注 Web 技术三十年。

1.7k 声望
44 粉丝
宣传栏