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

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

    某天开发火急火燎找来,说是给表字段时,出现 ERROR 1062 (23000):Duplicate entry …… key …… 报错,怀疑是 MySQL 出了问题。 我正准备大肆谴责开发,字打完一半才发现逻辑有些不通, 疑点:如果是新增字段,怎么会报数据重复(又不是给字段唯一索引)? 生产环境能给大家看的就只有这么多了,但相信对各位 “彦祖” 来说足够看出问题了: 这就是个普通的字段操作 字段和报重复值的字段不一样 但对我来说,乍一看就只看到了 duplicate key,第一反应就是看该字段是否有重复值 (k,pad) values(,'h'); ERROR 1062 (23000): Duplicate entry 'h' for key 'pad' 3.5 随后添加字段的 DDL 报错 mysql # 新增字段 mysql> alter table sbtest1 add column home varchar(); # 插入数据 mysql> insert into sbtest1(id,k)

    53100编辑于 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 中记录新增列的基本信息即可。 对比看来 8.0 版本的快速列功能确实非常实用! 总结: 虽然快速列存在一些限制, 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字段默认是有符号的。 如果我们对 TIMESTAMP 类型的字段没有明确赋值,或是被赋与了 null 值。MySQL 会自动使用系统当前的日期和时间来填充它。 ENUM 类型字段可以从集合中取得一个值或使用 null 值,除此之外的输入将会使 MySQL 在这个字段中插入一个空字符串。 并且与 ENUM 类型相同的是任何试图在 SET 类型字段中插入非预定义的值都会使 MySQL 插入一个空字符串。

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

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

    同时,MySQL 是支持前缀索引的,也就是说,你可以定义字符串的一部分作为索引。默认地,如果你创建索引的语句不指定前缀长度,那么索引就会包含整个字符串。 第二种方式是使用 hash 字段。你可以在表上再创建一个整数字段,来保存身份证的校验码,同时在这个字段上创建索引。 倒序存储的字段上创建的索引是按照倒序字符串的方式排序的,已经没有办法利用索引方式查出身份证号码在[ID_X, ID_Y]的所有市民了。同样地,hash 字段的方式也只能支持等值查询。 从占用的额外空间来看,倒序存储方式在主键索引上,不会消耗额外的存储空间,而 hash 字段方法需要增加一个字段。 因为维护的只是一个学校的,因此前面 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 字段添加默认值 <表名> alter 字段名 drop default; desc <表名>; 5.删除字段 (drop) alter table <表名> drop 字段名; desc <表名>; 二、字段约束 约束是对字段中的数据进行限制 约束字段默认值 UNIQUE KEY 约束字段的值唯一 PRIMARY KEY 约束字段为主键,唯一标识 AUTO_INCREMENT 字段值自动增加 1.

    12.9K30发布于 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) 唯一限制条件的索引 index emp_name; 5) 增加字段 mysql> ALTER TABLE table_name ADD field_name field_type; 6) 修改原字段名称及类型

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

    MySQL字段类型

    MySQL字段类型 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。 北京时间 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) 。 char 类型是定长的,MySQL 总是根据定义的字符串长度分配足够的空间。当保存 char 值时,在它们的右边填充空格以达到指定的长度,当检索到 char 值时,尾部的空格被删除掉。 3.日期时间类型 MySQL支持的日期和时间类型有 YEAR 、TIME 、DATE 、DATETIME 、TIMESTAMP,几种类型比较如下: 涉及到日期和时间字段类型选择时,根据存储需求选择合适的类型即可 总结: 本篇文章主要介绍了 MySQL 中常用的字段类型,平时用到的字段类型基本都在这里了,以一张思维导图总结如下: 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

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

    Mysql 字段常用字段类型

    特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!

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

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

    同时,MySQL 是支持前缀索引的,也就是说,你可以定义字符串的一部分作为索引。默认地,如果你创建索引的语句不指定前缀长度,那么索引就会包含整个字符串。 第二种方式是使用 hash 字段。你可以在表上再创建一个整数字段,来保存身份证的校验码,同时在这个字段上创建索引。 倒序存储的字段上创建的索引是按照倒序字符串的方式排序的,已经没有办法利用索引方式查出身份证号码在[ID_X, ID_Y]的所有市民了。同样地,hash 字段的方式也只能支持等值查询。 从占用的额外空间来看,倒序存储方式在主键索引上,不会消耗额外的存储空间,而 hash 字段方法需要增加一个字段。 因为维护的只是一个学校的,因此前面 6 位(其中,前三位是所在城市编号、第四到第六位是学校编号)其实是固定的,邮箱后缀都是 @gamil.com,因此可以只存入学年份顺序编号,它们的长度是 9 位。

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

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

    MysqL必读MysqL 增加修改字段类型及删除字段类型》要点: 本文介绍了MysqL必读MysqL 增加修改字段类型及删除字段类型,希望对您有用。如果有疑问,可以联系我们。 索引名 (字段名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 field_type;修改原字段名称及类型: MysqL> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type ;删除字段MysqL> ALTER TABLE table_name DROP field_name; 总结 如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

    13.2K10编辑于 2022-09-01
  • 来自专栏十月梦想

    mysql字段

    字段类型之后,用于对当前字段进行一系列的约束的内容(现在内容的情况) 字段属性:null/not null,primary key,auto_increment,unique key,comment, 主键字段不能为空 如何给表添加主键? 1. 在创建表的时候,直接在某个字段后添加主键 2. 在表后面增加primary key语句,来包含对应的主键字段 使用该方式,可以使用复合主键(可以使用多个字段共同组成主键) 3. 字段必须是整型 2. 必须保证使用自动增长的字段首先满足的一个条件:是一个索引字段 3. 一个表只能有一个自动增长 4. 在字段之后直接跟unique key 2. 在表的所有字段之后,使用unique key(字段列表) 3.

    7.1K20发布于 2018-08-29
  • 来自专栏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
  • 来自专栏JavaEdge

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

    修改字段 类型、名、注释、类型长度、默认值 ALTER TABLE 表名 MODIFY [COLUMN] 字段名 新类型 新类型长度 新默认值 新注释; -- COLUMN关键字可以省略不写 '注释'; 修改字段名 -- 字段名称未改变,修改字段类型、类型长度、默认值、注释 ALTER TABLE 表名 CHANGE [column] 旧字段名 新字段名 新数据类型; alter column1 decimal(10,1) DEFAULT NULL COMMENT '注释' alter table table1 change column1 column2; -- 报错 mysql 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.6K32发布于 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 表名 ADD [COLUMN] 字段字段类型 是否可为空 COMMENT '注释' AFTER 指定某字段 ; --COLUMN关键字可以省略不写 mysql> alter erp字段 mysql> show create table white_user_new ; CREATE TABLE `white_user_new` ( `id` bigint(20) NOT mobile字段,不能使用before关键字 5 删除字段 ALTER TABLE 表名 DROP [COLUMN] 字段名 ; --COLUMN关键字可以省略不写 mysql> alter table

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