我有一个包含以下字段的MySQL表:
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(255) NOT NULL UNIQUE,
ReleaseDate DATETIME(6) NOT NULL DEFAULT "1970-01-01"
此表的默认顺序是Id
,因为它是主键。当我删除Id
列并使Name
成为主键时,表按字母顺序排序,这就是我想要的。
以Id
作为主键,Name
是UNIQUE
索引,表继续按照Id
的增加顺序排列。我知道我可以在显示表时使用ORDER BY Name
,但有没有办法将表本身配置为始终按字母顺序排列,并完全忽略Id列的顺序?
答案 0 :(得分:4)
在SQL中没有理由依赖数据库的物理顺序。关系表在概念上更像是无序集而不是有序列表。假设某种物理秩序可能导致不可预测的结果。
如果您总是想要提供表格的订购版本,则可以使用视图。
CREATE VIEW orderedView AS
SELECT * FROM myTable ORDER BY myColumn
答案 1 :(得分:1)
在关系数据库中,表通常由PRIMARY KEY物理排序。这样,查询的性能就会提高。因此,如果您希望表格按照" name"订购,则必须声明" name"喜欢你的主键。如果没有必要,你应该创建一个视图。