在包括 MySQL、SQL Server、Oracle 和其他数据库在内的关系数据库中,ORDINAL_POSITION 指的是表或查询输出中一列在排序顺序中的位置。在今天的冲章中,我们将使用 Navicat Premium 作为数据库客户端,学习如何使用序号位置以我们想要的顺序显示列。
ORDINAL_POSITION 如何影响查询输出
以网格格式查看表时,列从左到右排序。例如,以下是在 Navicat 的网格视图中显示的订单详细信息表的列:
同时,在表设计器中,你可以看到上面的从左到右的列顺序对应于从上到下的顺序:
默认情况下,列采用与创建时相同的顺序。列顺序很重要,因为它确定数据库中每个表、视图和 SELECT 查询的列的顺序。稍后我们将看到,如果我们不喜欢表中列的顺序,我们可以将它更改。
获取表的序号位置
由于你可以创建可以掩盖表的真实序号位置的视图,因此关系数据库提供了一种查明真实序号位置的方法。ORDINAL_POSITION 是 INFORMATION_SCHEMA.COLUMNS 表中的一列。这样,你可以像以下一样通过查询表来查找表中列的序号位置:
更改表的序号位置
那么,如果你希望列以与创建时不同的顺序出现,该怎么办?正如我之前提到的,你不必保留列的原始 ORDINAL_POSITION。你可以使用以下其中一句语句更改它:
ALTER TABLE orderdetails MODIFY COLUMN orderLineNumber smallint(6) AFTER quantityOrdered;
或者:
ALTER TABLE orderdetails CHANGE COLUMN orderLineNumber smallint(6) AFTER quantityOrdered;
上面的语句将 orderLineNumber 列从最后一位移到倒数第二位。
在 Navicat 中,表设计器具有“上移”和“下移”按钮,可快速更改列顺序:
选择 orderLineNumber 列后,每次单击“上移”按钮都会将其 ORDINAL_POSITION 更改一个位置:
保存表设计后,orderLineNumber 现在位于 priceEach 之前:
在 SELECT 查询中引用 ORDINAL_POSITION
序号位置不仅与默认列顺序有关,还可以在 SELECT 查询中作为列名的快捷方式进行引用。为了说明这一点,以下的查询引用了 ORDER BY 子句中的几列:
与其在 ORDER BY 子句中列出每个列的名称,我们只需在表中引用该列的 ORDINAL_POSITION 即可:
较短的 SQL,相同的结果!
总结
在今天的文章中,我们了解了 ORDINAL_POSITION 如何在表或查询输出中的排序方面影响列的位置,以及如何使用序号位置以我们想要的顺序显示列。
I如果你对 Navicat Premium 感兴趣,可以免费试用 14 天!