mysql 5.7 _rowid虛列之一

wisdomone1發表於2019-11-29

前言

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不適用於下述場景:

  • 主鍵列或者普通列的資料型別不是數字型別

  • 主鍵是聯合主鍵

  • 唯一列是非空的


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-2666277/,如需轉載,請註明出處,否則將追究法律責任。

相關文章