登录
首页 >  数据库 >  MySQL

mysql中的_rowid

来源:SegmentFault

时间:2023-02-16 15:18:48 138浏览 收藏

积累知识,胜过积蓄金银!毕竟在##column_title##开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《mysql中的_rowid》,就带大家讲解一下MySQL知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

而在

MySQL
中也有一个类似的隐藏列
_rowid
来标记唯一的标识。但是需要注意
_rowid
并不是一个真实存在的列,其本质是一个非空唯一列的别名。

PS:本文是基于

MySQL 5.7
进行研究的

_rowid到底是什么

在前文提到了

_rowid
并不是一个真实存在的列,其本质是一个非空唯一列的别名。为什么会这么说呢?

因为在某些情况下

_rowid
是不存在的,其只存在于以下情况:
  1. 当表中存在一个数字类型的单列主键时,
    _rowid
    其实就是指的是这个主键列
  2. 当表中不存在主键但存在一个数字类型非空唯一列时,
    _rowid
    其实就是指的是对应非空唯一列

需要注意以下情况是不存在

_rowid
  1. 主键列或者非空唯一列的类型不是数字类型
  2. 主键是联合主键
  3. 唯一列不是非空的。

详情可以参考

MySQL
官方文档内容:

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.

参考资料

  1. 13.1.14 CREATE INDEX Syntax
  2. Re: Oracle ROWID equivalent in MySQL

本篇关于《mysql中的_rowid》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于数据库的相关知识,请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>