首页 > 数据库 >mysql使用default给列设置默认值的问题

mysql使用default给列设置默认值的问题

时间:2023-07-26 20:55:44浏览次数:40  
标签:insert null default column add mysql 默认值

add column会修改旧的默认值

add column和modify column在default的语义上处理不一样。

对于add column,会将历史为null的值刷成default指定的值。

而对于modify column,只会对新数据产生影响,历史数据仍然会保持为null。

结论:

1. add column和modify column在default的语义上存在区别,如果想修改大表历史数据的值,建议给一个新的update语句(不管是add column还是modify column,减少ddl执行的时间)

2. 即使指定了default的值,如果insert的时候强制指定字段的值为null,入库还是会为null

3. 如果仅仅是修改某一个字段的默认值,可以使用 alter table A alter column c set default 'c'; 用这种方式来替换modify,会省去重建表的操作,只修改frm文件,效率会大大提升。

insert时如何插入默认值

1. 将表test中,添加num字段,设置默认值为0:

alter table A add column num default '0' comment '数量'

此时设置为0成功。

2. 下面插入数据

insert into test values(null,"张三",18,null);

此时我们发现num字段为插入的null,而并不是我们设置的默认值0

3. 此时只插入name

insert into test (name) values("李四");

此时我们可以看到“李四”的默认值变成了0。

结论:mysql 的默认值只有在insert语句中没有这个字段时才会生效,如果insert中有插入该字段而该字段取值又为null,null值将被插入到表中,默认值此时失效。

 

本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。

首发链接:https://www.cnblogs.com/lingyejun/p/17581523.html

标签:insert,null,default,column,add,mysql,默认值
From: https://www.cnblogs.com/lingyejun/p/17581523.html

相关文章

  • MySQL存储过程
    什么是存储过程存储过程(StoredProcedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。简单理解,存储过程其实就是一堆SQL语句的合并。中间加入了一些逻辑控制。存储过程的创建方式存储过程的创建方式:创建无参存储过程创建有参存储过程1.创建无参存......
  • Mysql数据库
    Myspl数据库:数据库:数据库【按照数据结构来组织、存储和管理数据的仓库】。是一个长期储存在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据对于公司来说是最宝贵的财富,程序员工作就是对数据进行管理,包括运算、流转、存储、展示等,数据库最重要的功能就是......
  • MYSQL安装
    安装环境:Win1064位软件版本:MySQL5.7.24解压版一、下载点开下面的链接:https://downloads.mysql.com/archives/community/选择选择和自己系统位数相对应的版本点击右边的Download,此时会进到另一个页面,同样在接近页面底部的地方找到如下图所示的位置:不用理会上面的登......
  • mysql8.0 centos7 xtrabackup步骤
    mysql8.0centos7xtrabackup步骤wgethttps://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.33-28/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.33-28.1.el7.x86_64.rpmyuminstallcmakegccgcc-c++libaiolibaio-develauto......
  • 基于JSP和MySQL的银行柜员业务绩效考核系统的设计与实现
    完整资料进入【数字空间】查看——搜索"writebug"摘要当今社会己进入信息社会时代,信息己经受到社会的广泛关注,被看作社会和科学技术发展的三大支柱(材料、能源、信息)之一。信息是管理的基础,是进行决策的的基本依据。在一个组织里,信息己作为人力、物力、财力之外的第四种能源,占有重......
  • mysql5.7 centos7 xtrabackup步骤
    mysql5.7centos7xtrabackup步骤wgethttps://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.28/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpmyuminstallcmakegccgcc-c++libaiolibaio-develautomake......
  • centos7 用docker 部署 nacos集群--以mysql持久化--以nginx代理
     创建一个文件夹,把四个配置文件放进去,然后运行:dockercompose-f-dnacos.ymlupmysql-schema.sqlnacos.confnacos.envnacos.yml  mysql-schema.sql内容:/**Copyright1999-2018AlibabaGroupHoldingLtd.**LicensedundertheApacheLicense,Version2.......
  • MySql —— 死锁场景
    参考:小林coding: https://xiaolincoding.com/mysql/lock/deadlock.html出世&入世:https://blog.csdn.net/weixin_54828627/article/details/129379140 死锁的四个必要条件:互斥占有且等待不可强占用循环等待一、批量更新/删除数据-同时加锁记录多InnoDB是边扫描边加锁......
  • 转:MySQL数据库给表添加索引
    MySQL数据库给表添加索引   ......
  • 万字长文浅析配置对MySQL服务器的影响
    有很多的服务器选项会影响这MySQL服务器的性能,比如内存中临时表的大小、排序缓冲区等。有些针对特定存储引擎(如InnoDB)的选项,也会对查询优化很有用。调整服务器的配置从某种程度来说是一个影响全局的行为,因为每个修改都可能对该服务器上的每个查询造成影响。不过有些选项是针对特......