首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL字段null和not null学习思考

最后的理解是:mysql所有字段尽可能使用not null。最终时间默认值设为1970-01-01 08:00:00,使用这个的原因是该时间对应的时间戳是0。...除非有特别的原因使用NULL值,应该总是让字段保持not null。 空值跟NULL是两个概念 (1)空值不占用空间 (2)MYSQLNULL其实是占用空间的。...你应该用0、一个特殊值或者一个空串代替NULL。(影响索引效率的原因:NULL不是空值,而是要占用空间,所以MYSQL进行比较的时候,NULL会参与字段比较,所以对效率有一部分影响。...联表查询的时候,例如LEFT JOIN table2,如果没有记录,则查找出的table2字段都是NULL,加入table2有些字段本身可以是null,那么除非把table2中not null中的字段查出来...MYSQL NULL特殊的影响和使用:https://opensource.actionsky.com/20190710-mysql/

2.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL中的字段约束 null、not null、default、auto_increment

今天我们来看一下MySQL字段约束:NULL和NOT NULL修饰符、DEFAULT修饰符,AUTO_INCREMENT修饰符。...MySQL默认情况下指定字段NULL修饰符,如果一个字段指定为NOT NULLMySQL则不允许向该字段插入空值(这里面说的空值都为NULL),因为这是“规定”。...如果一个字段中没有指定DEFAULT修饰符,MySQL会依据这个字段NULL还是NOT NULL自动设置默认值。如果指定字段可以为NULL,则MySQL为其设置默认值为NULL。...如果是NOT NULL字段MySQL对于数值类型插入0,字符串类型插入空字符串,时间戳类型插入当前日期和时间,ENUM类型插入枚举组的第一条。...修饰符只适用于INT字段,表明MySQL应该自动为该字段生成一个数(每次在上一次生成的数值上面加1)。

5.3K20

Mybatis-plus 在不修改全局策略和字段注解的情况下将字段更新为null

mybatis-plus 以下简称mp,目前应该也算是主流的一款数据访问层应用框架。...源于其对mybatis 的近乎完美的封装,让我们在使用的时候无比的顺滑, 几乎提供了所有单表操作的方法,大大提升了效率。并且这款框架还是国产的哦,没了解过的可以去了解一下。...回归正题,我们这次来讲一下,怎么样通过mp将数据库中的一个字段更新为null. 可能很多人会觉得奇怪,更新为null, 直接set field = null 不就可以了。...,如果他的策略是空更新,那么执行之后,表里就只有id 和del_flag有值,其余的字段都是Null,很明显这不是我们想要的结果,这就是默认的空不更新策略。...这两种方式都是我极力不推荐的,大家也尽量不要使用这两种方法,真的非常危险,有可能导致别人在调用更新方法的时候不小心就把你的某些字段置为null 了。

1.2K10

MySQL 字段NULL 的5大坑,99%人踩过

数据库字段允许空值(null)的问题,你遇到过吗?在验证问题之前,我们先建一张测试表及测试数据。...1.count 数据丢失我们都知道,count是用来计数的,当表中某个字段存在NULL 值时,就会造成count计算出来的数据丢失,如下 SQL 所示:查询执行结果如下:从上述结果可以看出,count(...2.distinct 数据丢失当使用语句count(distinct column1,column2)时,如果有一个字段值为空,即使另一列有不同的值,那么查询的结果也会将数据丢失, SQL如下所示:查询执行结果如下...4.导致空指针异常当我们使用一些函数,比如求和函数sum(column) 或者平均值之类的函数,如果所求的字段中有空值,所求的值就会为空而非0。...解决空指针异常可以使用ifnull()对空值进行处理来避免空指针异常:查询执行结果如下:5.增加了查询难度当字段中有了空值,对于null值或者非null值的查询难度就增加了,必须使用与null匹配的查询方法

39640

hive 分区表添加字段后,字段结果为null

但是发现涉及以前的分区,新增字段的值都是null。图片开始的时候,以为是老分区文件中没有该字段的值导致的,重新跑批生成数据,发现老分区中的字段还是为null。...图片查看表结构,发现也是有新添加的字段,也就是表的元数据中有新增字段。图片问题原因新增字段后,之前的分区没有同步到新的字段结构,使用的还是之前的元数据信息。而新生成的分区使用的新字段结构的元数据。...hive在select分区表的数据时,会根据分区元数据字段去hdfs文件中读取对应字段值。而老分区中没有新字段的元数据,所以没有取到相关值,显示为null 。解决方案同步老分区的元数据字段结构。...图片后续添加字段的时候,命令里面加cascade就行了,例如:alter table partition_test add columns(col1 string) cascade 。...就能同步老分区的字段了。该问题就是hive的联级问题。

2.4K20

Springboot+Mybatis+MySql下,mysql使用json类型字段存取的处理

1、mysql5.7开始支持json类型字段; 2、mybatis暂不支持json类型字段的处理,需要自己做处理 项目使用到了这个,网上查了一些资料,实践成功,做记录。...null : rules; } 至此,所有相关修改都已经修改完了,按照正常的步骤进行开发即可~ 参考链接: 1、SpringBoot中MyBatis 处理 MySQL5.7 的json字段数据...2、MyBatis针对Mysql中json字段的类型处理 SpringBoot中MyBatis 处理 MySQL5.7 的json字段数据 最近学习过程中遇到一个需要将订单数据存入数据库需求,项目是使用...到这里,MyBatis 就能向普通的字段一样 对MySQL 的 json 字段数据进行增删查改了,例子如下: resultMap 中引用自定义转换 ?  ...到此为止,MyBatis 自定义转化类后就能自如的对 MySQL 的 json 字段进行处理了。

17.1K51

mysql sum函数中对两字段做运算时有null时的情况

背景 在针对一些数据进行统计汇总的时候,有时会对表中的某些字段进行逻辑运算,如加减乘除,如果要求和的话还可能会用到sum函数,如果两者结合起来应该怎么处理,如果参与运算的字段中出现null值的时候会出现一些什么情况...问题 CREATE TABLE `user` ( `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '自增ID', `name` varchar(20)...NOT NULL COMMENT '名称', `total_amount` int(11) DEFAULT NULL COMMENT '账户总金额', `freeze_amount` int(11...utf8mb4 COLLATE=utf8mb4_0900_ai_ci 数据如下 如上表所示,用户信息表中有账户总金额和冻结金额字段,我们现在想要计算可用金额,根据业务场景可用金额 = total_amount...) = 3800  因为1000 - null的结果不是1000而是null,因为null与任何值比较和运算的结果都是null,所以我们应该针对null做特殊处理。

92410

MySQL中IS NULL、IS NOT NULL、!=不能用索引?胡扯!

来源:我们都是小青蛙 作者:小孩子4919 不知道从什么时候开始,网上流传着这么一个说法: MySQL的WHERE子句中包含 IS NULL、IS NOT NULL、!...KEY idx_key_part(key_part1, key_part2, key_part3) ) Engine=InnoDB CHARSET=utf8; 这个表里有10000条记录: mysql...NULL值是怎么在记录中存储的 在MySQL中,每一条记录都有它固定的格式,我们以InnoDB存储引擎的Compact行格式为例,来看一下NULL值是怎样存储的。...所以MySQL优化器在真正执行查询之前,对于每个可能使用到的索引来说,都会预先计算一下需要扫描的二级索引记录的数量,比方说对于下边这个查询: SELECT * FROM s1 WHERE key1 IS...不信谣,不传谣 大家可以看到,MySQL中决定使不使用某个索引执行查询的依据很简单:就是成本够不够小。而不是是否在WHERE子句中用了IS NULL、IS NOT NULL、!=这些条件。

4.3K30

MySQL NULL值特性

1,创建表时字段时若未添加默认值,则默认为NULL值 2,NULL值和NULL字符串的区别 1)NULL值不区分大小写,查询时都显示为大写NULL,而NULL字符串则显示为插入时候的大小写,查询的时候根据字符集是否区分大小写筛选...NULL字符时,就很难区别NULLNULL值还是NULL字符串了,这时需要用到NULL值的判断,NULL值的判断只有is NULL和is not NULL 通过肉眼很难区别,这里通过NULL值的判断...7,和NULL值的逻辑运算,is NULL运算只有null is null为真返回数字1,is not NULL运算只有 null is not null为假返回数字0 8,MySQL会把单独的...\N(区分大小写)当作NULL值 9,NULL值和空字符’’不一样,查询字段为空字符时,可以用等号,不考虑长度,都显示为空,但是长度不一样 10,空字符和其他字符做算术运算时当作0处理,但是当做分母时运算结果为...NULL 11,NULL值会被count(字段)函数过滤,但是在count(*)中不会被过滤 12,在group by函数中NULL会当作同一个值放在最最小值前 13,其他一些函数中如果有NULL

2.6K10
领券