iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql隐藏字段rowid在什么时候是可见的
  • 338
分享到

mysql隐藏字段rowid在什么时候是可见的

2024-04-02 19:04:59 338人浏览 安东尼
摘要

今天小编给大家分享的是Mysql隐藏字段rowid在什么时候是可见的,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。通过我自己的一番实战,可以确定的是

今天小编给大家分享的是Mysql隐藏字段rowid在什么时候是可见的,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。

mysql隐藏字段rowid在什么时候是可见的

通过我自己的一番实战,可以确定的是,只要创建表,这个rowid一定是存在的,唯一区别就是显示和隐士的区别,也就是是否可以通过select _rowid from table查询出来
那么问题来了,哪些情况下rowid是显示的?
1 、当表中有主键并且是数值型的时候才是显示的
2、当表中没有主键的时候,但是表中有唯一非空并且是数值型的时候才是显示的
接下来,创建表来实战看下,是否是这样的
先创建一个带有主键并且是数值型的表
create table  z1(
id bigint(20) primary key 
)engine=innodb;

mysql隐藏字段rowid在什么时候是可见的

再创建一个带有主键不是数值型的表(虽然业务不会这样创建,只是为了证明rowid)
create table  z2(
name varchar(20) primary key 
)engine=innodb;

mysql隐藏字段rowid在什么时候是可见的

再创建一个没有主键但是有唯一键并且是数值型非空的表
create table z3(
    name int(11) not null,
    unique(name)
)engine=innodb charset=utf8

mysql隐藏字段rowid在什么时候是可见的

此时再创建一个没有主键,并且有唯一键,但是可以为空或者不是数值型的表
create table z4(
   name varchar(11) not null,
   unique(name)
)engine=innodb charset=utf8;
create table z5(
   name int(11) ,
   unique(name)
)engine=innodb charset=utf8;

mysql隐藏字段rowid在什么时候是可见的
mysql隐藏字段rowid在什么时候是可见的

再来看看官网咋说的,再理解下
官网连接:https://dev.mysql.com/doc/refman/5.7/en/create-index.html
If a table has a PRIMARY KEY or UNIQUE NOT NULL index that consists of a single column that has an integer type, you can use _rowid to refer to the indexed column in SELECT statements, as follows:

_rowid refers to the PRIMARY KEY column if there is a PRIMARY KEY consisting of a single integer column. If there is a PRIMARY KEY but it does not consist of a single integer column, _rowid cannot be used.

Otherwise, _rowid refers to the column in the first UNIQUE NOT NULL index if that index consists of a single integer column. If the first UNIQUE NOT NULL index does not consist of a single integer column, _rowid cannot be used.
此时我再创建一个表,表中只有一个字段,并且是字符串类型的,看下生成的隐式rowid,达到最大值会发生什么?(注意此时底层会默认生成一个6字节的指针,最大值为2^48 次幂)

mysql隐藏字段rowid在什么时候是可见的

此时用gdb工具让rowid达到最大值再插入看看会怎么样?
     答:先找到mysqld的进程pid,命令
      ps aux | grep mysqld
     gdb -p 你的mysql的pid -ex 'p dict_sys->row_id=1' -batch

mysql隐藏字段rowid在什么时候是可见的
mysql隐藏字段rowid在什么时候是可见的

可以看到此时插入了3条数据

mysql隐藏字段rowid在什么时候是可见的

这个时候把rowid变为2^48次幂之后,再插入看下效果
gdb -p 29410 -ex 'p dict_sys->row_id=281474976710656' -batch

mysql隐藏字段rowid在什么时候是可见的

此时再插入三条数据,此时a1 a2被覆盖了,所以在不满足上述二种情况的时候,生成的隐式rowid在用尽之后,之前的记录会被覆盖,所以创建表一定要有主键id,避免发生覆盖,虽然概率比较低,这个只是用主键的其中一个原因哈

mysql隐藏字段rowid在什么时候是可见的

所以综上所述:看我xmind那个总结,自己再理解消化下吧。

关于mysql隐藏字段rowid在什么时候是可见的就分享到这里了,希望以上内容可以对大家有一定的参考价值,可以学以致用。如果喜欢本篇文章,不妨把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: mysql隐藏字段rowid在什么时候是可见的

本文链接: https://www.lsjlt.com/news/54662.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql隐藏字段rowid在什么时候是可见的
    今天小编给大家分享的是mysql隐藏字段rowid在什么时候是可见的,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。通过我自己的一番实战,可以确定的是...
    99+
    2024-04-02
  • MySQL数据库的字段什么时候可以拆分
    这篇文章主要为大家展示了“MySQL数据库的字段什么时候可以拆分”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL数据库的字段什么时候可以拆分”这篇文章吧...
    99+
    2024-04-02
  • mysql中在一个表中新增字段的时候,使用alter table的时候,add和add column的区别是什么?
    在 MySQL 中使用 ALTER TABLE 语句来修改表结构,包括添加新的字段。**在 ALTER TABLE 语句中,可以使用 ADD 或 ADD COLUMN 关键字来添加新的字段。**它们的...
    99+
    2023-09-08
    mysql 数据库 sql
  • css隐藏文字的属性是什么
    这篇文章主要介绍了css隐藏文字的属性是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇css隐藏文字的属性是什么文章都会有所收获,下面我们一起来看看吧。首先创建一个html文件。在html文件中添加html...
    99+
    2023-07-04
  • win11可以安装的时间是什么时候
    本篇内容介绍了“win11可以安装的时间是什么时候”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!win11什么时候可以安装答:预览版现在就可...
    99+
    2023-07-01
  • PostgreSQL表中的隐含字段是什么意思
    PostgreSQL表中的隐含字段是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、PostgreSQL表存在的隐含字段oid: 行的对...
    99+
    2024-04-02
  • mysql的字段别名是什么
    这篇文章主要介绍“mysql的字段别名是什么”,在日常操作中,相信很多人在mysql的字段别名是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql的字段别名是什么”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-20
  • mysql里面字段指的是什么
    这篇文章主要介绍mysql里面字段指的是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!数据库中的字段就是指表的一列。数据表中的每一行是一个“记录”,每一个记录包含这行中的所有信息...
    99+
    2024-04-02
  • mysql中的字段选择是什么
    这篇文章主要讲解了“mysql中的字段选择是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql中的字段选择是什么”吧!说明根据实际需要,明确所需字段名称,用英文逗号分隔。获取所有字...
    99+
    2023-06-20
  • mysql添加字段的方法是什么
    要在MySQL数据库中添加字段,可以使用ALTER TABLE语句。以下是一个示例: ALTER TABLE table_name ...
    99+
    2024-04-09
    mysql
  • MySQL字段中的枚举指的是什么
    这篇文章主要讲解了“MySQL字段中的枚举指的是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL字段中的枚举指的是什么”吧!  MySQL字段中...
    99+
    2024-04-02
  • mysql修改字段值的方法是什么
    要修改数据库表中字段的值,可以使用UPDATE语句。语法如下: UPDATE 表名 SET 字段名 = 新值 WHERE 条...
    99+
    2024-04-20
    mysql
  • mysql表新增字段的方法是什么
    要向MySQL表中新增字段,可以使用ALTER TABLE语句。具体步骤如下: 打开MySQL客户端,连接到数据库。 使用以下语法...
    99+
    2024-04-09
    mysql
  • mysql创建表字段的方法是什么
    在 MySQL 中创建表的字段可以通过以下 SQL 语句实现: CREATE TABLE table_name ( colu...
    99+
    2024-04-09
    mysql
  • mysql多字段去重的方法是什么
    MySQL中多字段去重的方法可以使用GROUP BY语句来实现。具体步骤如下:1. 使用SELECT语句选择需要去重的字段,...
    99+
    2023-08-30
    mysql
  • mysql新建表字段的方法是什么
    在 MySQL 中新建表字段的方法是使用 CREATE TABLE 语句,并在其中指定表名和字段名及其数据类型、约束等信息。例如: ...
    99+
    2024-04-09
    mysql
  • mysql自定义字段的方法是什么
    在MySQL中,可以通过以下两种方法来自定义字段:1. 使用计算字段:- 计算字段是使用表中已有字段计算出来的结果。可以使用算术运算...
    99+
    2023-09-25
    mysql
  • mysql两个字段拼接的方法是什么
    在MySQL中,可以使用CONCAT()函数来将两个字段进行拼接。例如,假设有一个表employees,其中包含first_...
    99+
    2024-03-04
    mysql
  • mysql两个字段排序的方法是什么
    通过使用 ORDER BY 子句可以对MySQL查询的结果进行排序。如果想要按照多个字段进行排序,可以在ORDER BY子句中同时指...
    99+
    2024-04-17
    mysql
  • MYSQL插入数据时检查字段值是否重复的方法是什么
    这篇“MYSQL插入数据时检查字段值是否重复的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MYSQL插入数据时检...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作