广告位联系
返回顶部
分享到

MySQL修改字段的默认值和空值的方法

Mysql 来源:互联网 作者:佚名 发布时间:2022-08-29 21:39:29 人浏览
摘要

MySQL修改字段的默认值和空值 修改字段默认值 修改: 1 ALTER TABLE 表名 ALTER COLUMN 字段名 SET DEFAULT 默认值 删除: 1 ALTER TABLE 表名 ALTER COLUMN 字段名 DROP DEFAULT 修改字段值是否为空 设为空:

MySQL修改字段的默认值和空值

修改字段默认值

  • 修改:

1

ALTER TABLE 表名 ALTER COLUMN 字段名 SET DEFAULT 默认值

  • 删除:

1

ALTER TABLE 表名 ALTER COLUMN 字段名 DROP DEFAULT

修改字段值是否为空

  • 设为空:

1

ALTER TABLE 表名 MODIFY 字段名 字段类型 NULL

  • 设为非空:

1

ALTER TABLE 表名 MODIFY 字段名 字段类型 NOT NULL

MySQL默认值NULL、空值、Empty String的区别

如何选择?

工作一年左右了,发现其实工作中除了需要实现业务代码外,更多的是与数据库打交道。最近因为项目需要,我也逐渐参与进入数据库的设计,从而发现了很多之前没有过多注意的问题。

回想这一年来,写博客的次数屈指可数,现在想重新拾起,所以打算从数据库方面入手,先总结一个比较简单但非常常用的知识点——mysql中字段默认值的问题。

我们可以看到,默认值的设置主要分为三种:

  • 1.空值,空白,即什么都不填,等同于NULL(设计表结构时保存空值会自动变成NULL),当然也可以手动输入默认值。
  • 2.NULL。
  • 3.Empty String,空字符串,可以理解为0字节长度的字符串,等同于单引号''和双引号""。

其中,空值 = NULL,Empty String = 空字符串 = '' = ""。

那么问题来了,当设定某一个字段的默认值的时候,是设定空值、NULL还是Empty String呢?

先说结论

建议不要使用NULL或空值,String类型的字段可以设置默认为Empty String(即空字符串''),Int类型的字段可以设置默认为0。

尤其是使用php做接口开发时,设置字段类型为not null可以避免产生很多问题,如果查询出null数据直接返回给Android或IOS,而移动端又没有进行处理的话,程序就会报错。所以为了避免这种情况,一定要在服务端数据库层面从根源上解决这个问题。

因为空值 = NULL,所以谈论区别时只比较NULL和空字符''串即可。

区别

1、NULL是占用磁盘空间的(并不是数据本身占用空间,而是存储它是否为NULL的标记占用1个字节),而空字符串''是不占用磁盘空间的(它的长度是0字节所以不占用)。

网上找到的相关资料显示NULL是占用磁盘空间的

官方文档说明:NULL columns require additional space in the row to record whether their values are NULL. For MyISAM tables, each NULL column takes one bit extra, rounded up to the nearest byte.

翻译:NULL列需要行中的额外空间来记录它们的值是否为NULL。

即:定义字段类型时,如果允许为NULL,那么就要为每条数据多分配一个字节的空间来表示字段是否为NULL。

直接在mysql中验证即可:

2、字段类型是varchar时可以默认为空字符串,字段类型是int时不可以默认为空字符串,可以设置为0。

3、当字段被设置为not null时,字段就不能是NULL但可以插入空字符串,但空字符串只能插入到字符串类型的字段中,插入其他类型的字段中会报错。而NULL可插入到任何允许为NULL的字段中。

4、SQL语句中对空字符串进行判断时可以使用=、>、<符号;但是对NULL进行判断时必须使用is null或is not null。

5、包含NULL的字段列,如果在查询条件中使用is not null会导致索引失效,但是使用is null索引不会失效。

6、使用count()函数进行统计时,会过滤掉NULL值,但不会过滤掉空字符串。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/qq_52000150/article/details/116000462
相关文章
  • 深入了解MySQL中的慢查询
    一、什么是慢查询 什么是MySQL慢查询呢?其实就是查询的SQL语句耗费较长的时间。 具体耗费多久算慢查询呢?这其实因人而异,有些公司慢
  • MySQL中with rollup的用法及说明

    MySQL中with rollup的用法及说明
    MySQL with rollup的用法 当需要对数据库数据进行分类统计的时候,往往会用上groupby进行分组。 而在groupby后面还可以加入withcube和withrollup等关
  • mysql分组统计并求出百分比的方法

    mysql分组统计并求出百分比的方法
    mysql分组统计并求出百分比 1、mysql 分组统计并列出百分比 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 SELECT point_id, pname_cn, play_
  • 30种SQL语句优化的方法总结
    1)对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2)应尽量避免在 where 子句中使用!=或操作符
  • 达梦数据库获取SQL实际执行计划的方法

    达梦数据库获取SQL实际执行计划的方法
    环境说明: 操作系统:银河麒麟V10 数据库:DM8 相关关键字:DM数据库、SQL实际执行计划 一、set autotrace trace disql下执行set autotrace trace开启
  • MySQL数据库约束的介绍

    MySQL数据库约束的介绍
    基本介绍 约束用于确保数据库的数据满足特定的商业规则 在mysql中,约束包括:not null,unique,primary key,foreign key 和check5种 1.primary key(主键
  • MySQL索引的介绍

    MySQL索引的介绍
    1. MySQL 索引的最左前缀原则 左前缀原则是联合索引在使用时要遵循的原则,查询索引可以使用联合索引的一部分,但是必须从最左侧开始。
  • windows下Mysql多实例部署的操作方法
    当存在多个项目的时候,需要同时部署时,且只有一台服务器时,哪么就需要部署Mysql多个实例,原理很简单,多个mysql服务运行使用不同的
  • MySQL客户端/服务器运行架构介绍

    MySQL客户端/服务器运行架构介绍
    之前对MySQL的认知只限于会写些SQL,本篇开始进行对MySQL进行深入的学习,记录和整理下自己对MySQL不熟悉的地方。如果有需要可以关注我的
  • mysql8.0主从复制搭建与配置方案

    mysql8.0主从复制搭建与配置方案
    mysql主从搭建 环境:ubuntu20.04.1,mysql:8.0.22。 主:192.168.87.3 备:192.168.87.6 安装数据库 1 2 3 sudo apt-get install mysql-server sudo apt-get install mysql
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计