前言
oracle有虚列rowid,mysql是否也有类似的功能呢。本文主要记录相关的知识,便于后续使用。
联系方式
微信公众号

微信
培训课件
(收费20元已共享到百度云盘便于同学们获取)

目录
查阅官方资料
测试示例
小结
查阅官方资料
13 SQL Statement Syntax 13.1 Data Definition Statements 13.1.14 CREATE INDEX Syntax
测试示例
创建测试表并插入数据
mysql> create table t_rowid(a int,b int,key(a)); Query OK, 0 rows affected (0.03 sec) mysql> insert into t_rowid select 1,1; Query OK, 1 row affected (0.00 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> insert into t_rowid select 2,2; Query OK, 1 row affected (0.00 sec) Records: 1 Duplicates: 0 Warnings: 0
显示_rowid
mysql> select _rowid from t_rowid; +--------+ | _rowid | +--------+ | 1 | | 2 | +--------+ 2 rows in set (0.00 sec) mysql> select _ROWID from t_rowid; +--------+ | _ROWID | +--------+ | 1 | | 2 | +--------+ 2 rows in set (0.00 sec)
显示_rowid及部分列
mysql> select _rowid,a from t_rowid; +--------+---+ | _rowid | a | +--------+---+ | 1 | 1 | | 2 | 2 | +--------+---+ 2 rows in set (0.00 sec)
显示_rowid及全部列
mysql> select _rowid,a,b from t_rowid; +--------+---+------+ | _rowid | a | b | +--------+---+------+ | 1 | 1 | 1 | | 2 | 2 | 2 | +--------+---+------+ 2 rows in set (0.00 sec)
不能显示_rowid及*
mysql> select _rowid,* from t_rowid; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* from t_rowid' at line 1 mysql>
小结
_rowid不适用于下述场景:
主键列或者普通列的数据类型不是数字类型
主键是联合主键
唯一列是非空的
