首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏爱可生开源社区

    MySQL 字段,我竟然遇史诗级 Bug?

    某天开发火急火燎找来,说是给表字段时,出现 ERROR 1062 (23000):Duplicate entry …… key …… 报错,怀疑是 MySQL 出了问题。 我正准备大肆谴责开发,字打完一半才发现逻辑有些不通, 疑点:如果是新增字段,怎么会报数据重复(又不是给字段唯一索引)? 生产环境能给大家看的就只有这么多了,但相信对各位 “彦祖” 来说足够看出问题了: 这就是个普通的字段操作 字段和报重复值的字段不一样 但对我来说,乍一看就只看到了 duplicate key,第一反应就是看该字段是否有重复值 2. 原因是什么? #sysvar_innodb_online_alter_log_max_size [2]  bug#76895: https://bugs.mysql.com/bug.php?

    56400编辑于 2025-06-12
  • 来自专栏MySQL技术

    MySQL8.0大表秒字段,是真的吗?

    前言: 很早就听说 MySQL8.0 支持快速列,可以实现大表秒级字段。笔者自己本地也有8.0环境,但一直未进行测试。本篇文章我们就一起来看下 MySQL8.0 快速列到底要如何操作。 查阅官方文档得知,快速列即 Instant Add Column ,该功能自 MySQL 8.0.12 版本引入,是由腾讯游戏DBA团队贡献。注意一下,此功能只适用于 InnoDB 表。 2.快速列测试 快速列采用的是 instant 算法,使得添加列时不再需要 rebuild 整个表,只需要在表的 metadata 中记录新增列的基本信息即可。 > alter table sbtest1 add column col2 varchar(20); Query OK, 0 rows affected (0.55 sec) Records: 0 Duplicates 总结: 虽然快速列存在一些限制, instant 算法也只适用于部分 DDL 操作,但 8.0 的这项新功能已经足以令人兴奋,很大程度上解决了大表字段的大难题。

    3.6K70发布于 2020-09-19
  • 来自专栏码农架构

    MySQL8.0大表秒字段,是真的吗?

    很早就听说 MySQL8.0 支持快速列,可以实现大表秒级字段。笔者自己本地也有8.0环境,但一直未进行测试。本篇文章我们就一起来看下 MySQL8.0 快速列到底要如何操作。 MySQL 5.7 支持 Online DDL,大部分 DDL 不影响对表的读取和写入,但是依然会消耗非常多的时间,且占用额外的磁盘空间,并会造成主从延迟。 听闻 MySQL 8.0 解决了这件令 DBA 头痛的事,那让我们来详细了解下吧。想了解新功能,最简单的方法就是查阅官方文档。 查阅官方文档得知,快速列即 Instant Add Column ,该功能自 MySQL 8.0.12 版本引入,是由腾讯游戏DBA团队贡献。注意一下,此功能只适用于 InnoDB 表。 总结 虽然快速列存在一些限制, instant 算法也只适用于部分 DDL 操作,但 8.0 的这项新功能已经足以令人兴奋,很大程度上解决了大表字段的大难题。

    4.6K20发布于 2021-03-21
  • 来自专栏快乐阿超

    mysql一次给数据库所有表字段

    s_tablename IS NOT NULL ) DO SET @MyQuery = CONCAT( "alter table `", s_tablename, "` add COLUMN `字段

    7.1K20编辑于 2022-08-16
  • 来自专栏全栈程序员必看

    mysql密码字段类型_MySQL 字段类型

    万一我们需要对一个字段存储一个超出许可范围的数字,MySQL 会根据允许范围最接近它的一端截短后再进行存储。还有一个比较特别的地方是,MySQL 会在不合规定的值插入表前自动修改为 0。 unsigned 和 zerofill UNSIGNED 修饰符规定字段只保存正值,即无符号,而mysql字段默认是有符号的。 FLOAT 类型在长度比较高比如 float(10,2)和 decimal(10,2)同时插入一个符合(10,2)宽度的数值,float 就会出现最后小数点出现一些出入; UNSIGNED 和 ZEROFILL MySQL 试图将 2 个数字的年份转换为 4 个数字的值。把在 00-69 范围内的值转换到 2000-2069 范围内。把 70-99 范围内的值转换到 1970-1979 之内。 ENUM 类型字段可以从集合中取得一个值或使用 null 值,除此之外的输入将会使 MySQL 在这个字段中插入一个空字符串。

    19.7K20编辑于 2022-11-17
  • 来自专栏大前端(横向跨端 & 纵向全栈)

    MySQL实战第十一讲-怎么给字符串字段索引?

    同时,MySQL 是支持前缀索引的,也就是说,你可以定义字符串的一部分作为索引。默认地,如果你创建索引的语句不指定前缀长度,那么索引就会包含整个字符串。 而如果使用 index2(即 email(6) 索引结构)的话,就不得不回到 ID 索引再去判断 email 字段的值。 当然,倒序存储方式使用 4 个字节的前缀长度应该是不够的,如果再长一点,这个消耗跟额外这个 hash 字段也差不多抵消了。 2.  小结 在今天这篇文章中,我跟你聊了聊字符串字段创建索引的场景。我们来回顾一下,你可以使用的方式有: 1. 直接创建完整索引,这样可能比较占用空间; 2.  因为维护的只是一个学校的,因此前面 6 位(其中,前三位是所在城市编号、第四到第六位是学校编号)其实是固定的,邮箱后缀都是 @gamil.com,因此可以只存入学年份顺序编号,它们的长度是 9 位。

    2.7K30编辑于 2022-05-06
  • 来自专栏Java项目实战

    order by 字段到底要不要索引?

    10:08的索引,10.20报的错,生产服务卡死图片运维定位SQL,就妥妥定位在我周一申请的sql优化部分,明明就加了个索引,为何导致生产服务直接挂掉? 猜测:由于数据量较大,在执行索引操作时,进程正在进行索引操作,此时刷新造成查询时不走任何索引,导致所有索引失效,或者前期进程有阻塞,造成索引操作未完成那么条件是根据用户来查询的,极端情况下理应查出最多数据在几百条 by 索引,索引命中,物理扫描行数急剧减少图片https://blog.csdn.net/asdasdasd123123123/article/details/106783196/order by 字段到底要不要索引 从这个实验看,在order by字段建索引是非常划算的,而且order by字段并不一定非要加入到where条件中也可以生效。 ,如果最终的结果集是以order by字段为条件筛选的,将order by字段加入索引,并放在索引中正确的位置,会有明显的性能提升。

    11.7K20编辑于 2023-02-09
  • 来自专栏MySQL 笔记

    MySQL 字段操作

    字段是怎么插入并修改呢? 字段又有哪些约束条件? 看完本文,你能够优雅地设计一张有意义的表; 一、字段操作 1.添加字段 (add) alter table <表名> add 字段名 数据类型; desc <表名>; 2.修改字段数据类型 (modify <字段名> <新字段名> <字段类型> ; #可用来修改字段数据类型 #也可以在修改数据类型后添加默认值或其它约束条件 #可以在最后修改字段位置[first | after] 4 字段添加默认值 约束字段默认值 UNIQUE KEY 约束字段的值唯一 PRIMARY KEY 约束字段为主键,唯一标识 AUTO_INCREMENT 字段值自动增加 1. 非空约束 (not null) 非空约束即字段的数据不能为空; CREATE TABLE <表名>(字段名 数据类型 NOT NULL); #修改数据类型时也可添加约束 2.默认约束(default)

    13K30发布于 2020-04-15
  • 来自专栏centosDai

    mysql增加字段

    alter add命令格式:alter table 表名 add字段 类型 其他; 例如,在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0: mysql> alter table MyClass add passtest int(4) default '0'; 1) 索引 mysql> alter table 表名 add index 索引名 (字段名1[ ,字段2 …]); 例子: mysql> alter table employee add index emp_name (name); 2) 主关键字的索引 mysql> alter table 表名 add primary key (字段名); 例子: mysql> alter table employee add primary key(id); 3) 唯一限制条件的索引 mysql> alter table 表名 add unique 索引名 (字段名); 例子: mysql> alter table employee add unique emp_name2(

    16.3K30发布于 2021-05-26
  • 来自专栏全栈程序员必看

    MySQL字段类型

    MySQL字段类型 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。 2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用 varchar和text: 1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。 2.text类型不能有默认值。 3.varchar可直接创建索引,text创建索引要指定前多少个字符。 北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS 混合日期和时间值,时间戳 数据类型的属性 MySQL

    12.9K10编辑于 2022-08-04
  • 来自专栏ops技术分享

    mysql字段管理

    字段 1.增 添加字段 alter table 表名 add 字段 类型(宽度) 约束条件; 添加固定为值,最后添加first,将会放到第一个字段 `alter table 表名 add 字段 类型(宽度 ) 约束条件 after 上一个字段名; 2.删 删除字段 alter table 表名 drop 字段名; 删除表分区 alter table tlog_rsp drop PARTITION TLOG_RSP _20190901; 3.改 将s2表的age字段修改为char类型,最大字符数为4。 alter table s2 modify age char(4); 将字段放到最前面 alter table 表名 modify 字段 int(3) first; 修改字段名,若类型修改则修改,原先则默认 alter table 表名 change 原名 新名 类型(宽度); 修改字段类型 alter table 表名 modify 字段 char(20);

    9.6K10发布于 2021-06-15
  • 来自专栏全栈程序员必看

    MySQL字段类型_mysql数据库字段类型

    MySQL 支持大量的字段类型,其中常用的也有很多。 定点型字段类型有 DECIMAL 一个,主要用于存储有精度要求的小数。 DECIMAL 从 MySQL 5.1 引入,列的声明语法是 DECIMAL(M,D) 。 例如字段 salary DECIMAL(5,2),能够存储具有五位数字和两位小数的任何值,因此可以存储在salary列中的值的范围是从-999.99到999.99。 2.字符串类型 字符串类型也经常用到,常用的几个类型如下表: 其中 char 和 varchar 是最常用到的。char 类型是定长的,MySQL 总是根据定义的字符串长度分配足够的空间。 总结: 本篇文章主要介绍了 MySQL 中常用的字段类型,平时用到的字段类型基本都在这里了,以一张思维导图总结如下: 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    24.8K10编辑于 2022-10-04
  • 来自专栏Java实战博客

    Mysql 字段常用字段类型

    毕竟内存占用 总空间 =位数 x 此编码格式每字符所占用的字节数) char是定长,如果你长度定位4,你填写"a" 其他3位填充空字符,也是占用4个字符位 varchar是"a" 会使用2个字符位

    10.5K30编辑于 2022-01-25
  • 来自专栏大前端(横向跨端 & 纵向全栈)

    MySQL深入学习第十一篇-怎么给字符串字段索引?

    同时,MySQL 是支持前缀索引的,也就是说,你可以定义字符串的一部分作为索引。默认地,如果你创建索引的语句不指定前缀长度,那么索引就会包含整个字符串。 而如果使用 index2(即 email(6) 索引结构)的话,就不得不回到 ID 索引再去判断 email 字段的值。 当然,倒序存储方式使用 4 个字节的前缀长度应该是不够的,如果再长一点,这个消耗跟额外这个 hash 字段也差不多抵消了。 2. 小结 在今天这篇文章中,我跟你聊了聊字符串字段创建索引的场景。我们来回顾一下,你可以使用的方式有: 1. 直接创建完整索引,这样可能比较占用空间; 2. 因为维护的只是一个学校的,因此前面 6 位(其中,前三位是所在城市编号、第四到第六位是学校编号)其实是固定的,邮箱后缀都是 @gamil.com,因此可以只存入学年份顺序编号,它们的长度是 9 位。

    2.3K10发布于 2020-11-26
  • 来自专栏全栈程序员必看

    mysql alter 修改字段类型_Mysql必读mysql 增加修改字段类型及删除字段类型「建议收藏」

    MysqL必读MysqL 增加修改字段类型及删除字段类型》要点: 本文介绍了MysqL必读MysqL 增加修改字段类型及删除字段类型,希望对您有用。如果有疑问,可以联系我们。 索引 MysqL> alter table tablename change depno depno int(5) not null; MysqL> alter table tablename add index 索引名 (字段名1[,字段2 …]); MysqL> alter table tablename add index emp_name (name);主关键字的索引 MysqL> alter table tablename add primary key(id);唯一限制条件的索引 MysqL> alter table tablename add unique emp_name2(cardnumber ;删除字段MysqL> ALTER TABLE table_name DROP field_name; 总结 如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

    13.2K10编辑于 2022-09-01
  • 来自专栏IT开发技术与工作效率

    MySQL #{驼峰字段} for MyBatis

    # 查找在那个表并生成 字段名 SQL SELECT TABLE_SCHEMA, TABLE_NAME, concat('SELECT ', group_concat(COLUMN_NAME ORDER TABLE_NAME like 'job_depend' GROUP BY TABLE_SCHEMA, TABLE_NAME ORDER BY length(TABLE_SCHEMA); # #{驼峰字段 information_schema.COLUMNS WHERE 1=1 AND TABLE_NAME like 'job_depend' GROUP BY TABLE_SCHEMA, TABLE_NAME; # 字段名 =#{驼峰字段} SQL (创建存储函数snakeToCamel后使用) SELECT TABLE_SCHEMA, TABLE_NAME, concat('UPDATE ', TABLE_NAME, ' information_schema.COLUMNS WHERE 1=1 AND TABLE_NAME like 'job_depend' GROUP BY TABLE_SCHEMA, TABLE_NAME; # 打开 MySQL8

    6.1K20发布于 2018-08-02
  • 来自专栏十月梦想

    mysql字段

    使用default关键字来显示使用系统的默认值 Primary key 主键,主要的键,用主键修饰的字段,该字段具有唯一性(不能重复) 1. 一张表最多只能一个主键 2. 主键字段不能为空 如何给表添加主键? 1. 在创建表的时候,直接在某个字段后添加主键 2. 字段必须是整型 2. 必须保证使用自动增长的字段首先满足的一个条件:是一个索引字段 3. 一个表只能有一个自动增长 4. 一张表唯一键可以有多个 2. 唯一键不对null进行处理 如果添加唯一键? 跟主键的添加方式基本相同 1. 在字段之后直接跟unique key 2. 该唯一键不能为空 2.

    7.1K20发布于 2018-08-29
  • 来自专栏JavaEdge

    MySQL修改字段名、修改字段类型

    '注释'; -- 能修改字段类型、类型长度、默认值、注释 alter table table1 modify column1 decimal(10,2) DEFAULT NULL COMMENT alter table table1 change column1 column2 decimal(10,1) DEFAULT NULL COMMENT '注释' -- 正常,能修改字段名、字段类型 table table1 change column1 column2; -- 报错 mysql> alter table white_user change column name nick_name Duplicates: 0 Warnings: 0 更改表名 Table 从 db_a 要搬到 db_b RENAME TABLE db_a.old_table TO db_b.new_table; MySQL Table 改名字(重命名) RENAME TABLE old_table TO new_table; MySQL 两个 Table 互换名 RENAME TABLE old_table TO tmp_table

    36.7K32发布于 2021-03-04
  • 来自专栏全栈开发那些事

    mysql字段分组

    文章目录 mysql字段分组 group by 语法 多字段分组 GROUP BY与ORDER BY一起使用(分组排序) 使用having过滤分组 mysql字段分组 group by 语法 分组查询是对数据按照某个或多个字段进行分组 ,MYSQL中使用group by关键字对数据进行分组,基本语法形式为: [GROUP BY 字段][HAVING <条件表达式>] 多字段分组 使用GROUP BY可以对多个字段进行分组,GROUP BY关键字后面跟需要分组的字段MYSQL根据多字段的值来进行层次分组,分组层次从左到右,即先按照第1个字段分组,然后在第1个字段值相同的记录中,再根据第2字段的值进行分组,以此类推。

    9.6K10编辑于 2023-02-25
  • 来自专栏全栈程序员必看

    Mysql修改字段名、修改字段类型

    1 修改字段类型、字段名、字段注释、类型长度、字段默认值 mysql修改字段类型: --能修改字段类型、类型长度、默认值、注释 --对某字段进行修改 ALTER TABLE 表名 MODIFY [ decimal(10,2) DEFAULT NULL COMMENT '注释'; -- 正常,能修改字段类型、类型长度、默认值、注释 mysql修改字段名: ALTER TABLE 表名 CHANGE '注释'; -- 正常,此时字段名称没有改变,能修改字段类型、类型长度、默认值、注释 alter table table1 change column1 column2 decimal(10,1) DEFAULT NULL COMMENT '注释' -- 正常,能修改字段名、字段类型、类型长度、默认值、注释 alter table table1 change column2 column1 decimal (10,1) DEFAULT NULL COMMENT '注释' -- 正常,能修改字段名、字段类型、类型长度、默认值、注释 alter table table1 change column1 column2

    9.7K10编辑于 2022-08-10
领券