Navicat 博客

关于 ORDINAL_POSITION 的一切 2020 年 10 月 23 日,由 Robert Gravelle 撰写

在包括 MySQL、SQL Server、Oracle 和其他数据库在内的关系数据库中,ORDINAL_POSITION 指的是表或查询输出中一列在排序顺序中的位置。在今天的冲章中,我们将使用 Navicat Premium 作为数据库客户端,学习如何使用序号位置以我们想要的顺序显示列。

ORDINAL_POSITION 如何影响查询输出

以网格格式查看表时,列从左到右排序。例如,以下是在 Navicat 的网格视图中显示的订单详细信息表的列:

orderdetails_columns_in_grid_view (95K)

同时,在表设计器中,你可以看到上面的从左到右的列顺序对应于从上到下的顺序:

orderdetails_columns_in_table_designer (101K)

默认情况下,列采用与创建时相同的顺序。列顺序很重要,因为它确定数据库中每个表、视图和 SELECT 查询的列的顺序。稍后我们将看到,如果我们不喜欢表中列的顺序,我们可以将它更改。

获取表的序号位置

由于你可以创建可以掩盖表的真实序号位置的视图,因此关系数据库提供了一种查明真实序号位置的方法。ORDINAL_POSITION 是 INFORMATION_SCHEMA.COLUMNS 表中的一列。这样,你可以像以下一样通过查询表来查找表中列的序号位置:

information_schema_columns_table (39K)

更改表的序号位置

那么,如果你希望列以与创建时不同的顺序出现,该怎么办?正如我之前提到的,你不必保留列的原始 ORDINAL_POSITION。你可以使用以下其中一句语句更改它:

ALTER TABLE orderdetails MODIFY COLUMN orderLineNumber smallint(6) AFTER quantityOrdered; 

或者:

ALTER TABLE orderdetails CHANGE COLUMN orderLineNumber smallint(6) AFTER quantityOrdered; 

上面的语句将 orderLineNumber 列从最后一位移到倒数第二位。

在 Navicat 中,表设计器具有“上移”和“下移”按钮,可快速更改列顺序:

move_up_button (58K)

选择 orderLineNumber 列后,每次单击“上移”按钮都会将其 ORDINAL_POSITION 更改一个位置:

new_orderLineNumber_position (41K)

保存表设计后,orderLineNumber 现在位于 priceEach 之前:

new_orderLineNumber_position_in_grid_view (58K)

在 SELECT 查询中引用 ORDINAL_POSITION

序号位置不仅与默认列顺序有关,还可以在 SELECT 查询中作为列名的快捷方式进行引用。为了说明这一点,以下的查询引用了 ORDER BY 子句中的几列:

orderdetails_query_with_column_name (111K)

与其在 ORDER BY 子句中列出每个列的名称,我们只需在表中引用该列的 ORDINAL_POSITION 即可:

orderdetails_query (109K)

较短的 SQL,相同的结果!

总结

在今天的文章中,我们了解了 ORDINAL_POSITION 如何在表或查询输出中的排序方面影响列的位置,以及如何使用序号位置以我们想要的顺序显示列。

I如果你对 Navicat Premium 感兴趣,可以免费试用 14 天!

Navicat 文章
频道条目
分享
文章归档