在Oracle
數據庫的表中的每一行數據都有一個惟一的標識符,稱爲rowid
,在Oracle
內部一般就是使用它來訪問數據的。php
而在MySQL
中也有一個相似的隱藏列_rowid
來標記惟一的標識。可是須要注意_rowid
並非一個真實存在的列,其本質是一個非空惟一列的別名。html
PS:本文是基於MySQL 5.7
進行研究的mysql
在前文提到了_rowid
並非一個真實存在的列,其本質是一個非空惟一列的別名。爲何會這麼說呢?sql
由於在某些狀況下_rowid
是不存在的,其只存在於如下狀況:數據庫
_rowid
其實就是指的是這個主鍵列_rowid
其實就是指的是對應非空惟一列。須要注意如下狀況是不存在_rowid
的ui
詳情能夠參考MySQL
官方文檔內容:code
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:htm
- _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.