MySQL字段NULL,emptystring, ''

在 建表的时候,通常对于字符串类型的字段,会设置为 not null default null ,但是有时一想,尽然 都 not null 了 为啥还要 default null 不是自相矛盾 多此一举吗?

1.为啥一般我们都会将字段设置为 NOT NULL?

(1) mysql中的NULL其实是占用空间的

(2) 如果一个表字段中含有NULL的数据(NULL表示可以为任何值),那么,SQL Server在做数据库比较操作的时候,会使用三值逻辑(TRUE,FALSE,UNKNOWN),而不是平时的二值逻辑(TRUE,FALSE)。因此,在做数据库设计的时候,我们都要求尽量将表不要设置为NULL类型,如果业务要求需要有空值,我们尽量用实际的默认值来代替NULL(int我们用0,字符串可以是空串等),这样SQL Server在做比较运算就不会使用到相对复杂的三值逻辑,而采用二值逻辑。

NULL , Emptystring,‘’区别

针对 PHP 而言,早语法判断上面 三者并没有太大区别。但是对于其他语言应该是有不同的。null在这些高级语言里面就是什么都是空,但是empty string虽然是空,但是是字符串string类型。

所以 mysql设计表时 建议不要用default NULL
string类型的可以default ''或者emptystring
int类型的可以default 0

Empty string(空字符串)是指内容长度为0的字符串。它可以通过单引号 '' 或双引号 "" 来表示。 在编程和数据库中,Empty stringNull(空值)是不同的概念。空值表示没有被赋予具体数值或数据的状态,而Empty string是一个字符串类型,它可以被赋予具体的空字符串值。 在设计表结构时,一般建议避免使用Null或空值,而是将String类型的字段默认设置为Empty string,即空字符串 '',将Int类型的字段默认设置为0。这样可以使数据更加清晰、规范,并且方便进行数据处理和比较。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Navicat mysql 建表字段 默认值、empty string、空白、NULL 的区别](https://blog.csdn.net/zx1323/article/details/80416852)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MySQL默认值NULL、空值、Empty String的区别,如何选择?](https://blog.csdn.net/haibo0668/article/details/119211690)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值