Я думаю, что вопрос в руководстве по сертификации сформулирован плохо. Вы можете давать явные имена столбцам при выборе из представления, и это работает:
CREATE VIEW MyView AS SELECT a, b, c FROM MyTable;
SELECT a AS d, b AS e, c AS f FROM MyView;
Проблема не в том, чтобы явно давать псевдонимы столбцам. Вот проблема: если вы полагаетесь на это вместо определения представления с разными именами столбцов, а представление состоит из соединения, так что имена столбцов неоднозначны, вы столкнетесь с проблемами:
CREATE VIEW MyView AS
SELECT m.a, m.b, m.c, o.a, o.b, o.c
FROM MyTable m JOIN OtherTable o;
Это недопустимое представление, поскольку в определении представления все имена столбцов должны быть разными. Например, вы получите неоднозначные результаты при запросе к представлению:
SELECT a FROM MyView;
Выбирает ли это первый a
столбец или второй a
столбец?
Таким образом, у вас должен быть отдельный набор имен столбцов в определении представления , этого недостаточно, чтобы сделать их отличимыми при запросе представления.
По этой причине, я думаю, вопрос к руководству по сертификации был сформулирован плохо. Речь идет не о явном переименовании столбцов, а о том, чтобы столбцы представления имели разные имена. Это обычная причина для переименования столбцов, поэтому, вероятно, поэтому человек, пишущий вопрос, написал это так.
Любой из других методов, упомянутых в этом вопросе, может устранить неоднозначность:
CREATE VIEW MyView (a, b, c, d, e, f) AS
SELECT m.a, m.b, m.c, o.a, o.b, o.c
FROM MyTable m JOIN OtherTable o;
или
CREATE VIEW MyView AS
SELECT m.a, m.b, m.c, o.a AS d, o.b AS e, o.c AS f
FROM MyTable m JOIN OtherTable o;
В любом случае вы получаете псевдонимы столбцов:
SELECT * FROM MyView; -- returns result with columns a, b, c, d, e, f