2009-09-13 2 views
2

문제는 그들이 당신이보기에서 선택하면 열 이름을 바꿉니다 "을 의미하는 무엇 (C)에 대한MySQL의 인증 가이드 연습 QN - 뷰 '열 이름

Which of the following methods for providing explicit names for the columns in a view work? 

a. Include a column list 
b. Provide column aliases in the view SELECT statement 
c. Rename the columns when you select from the view

대답

a. Works: Include a column list 
b. Works: Provide column aliases in the view SELECT statement 
c. Does not work: Rename the columns when you select from the view

입니다 "?

+0

여기서 그 의미가 무엇인지 상상할 수 없습니다. 당신이 바라는 바에 따라 기둥을 부르는 것이 아마도 그들이 원하는 바일까요? 컬럼 이전에'ALTER VIEW' 문을 실행하고 있습니까? 나는 너만큼 호기심이 많다. – Eric

답변

1

인증 가이드의 질문에 불만이 있다고 생각합니다. 당신이보기에서 선택하면 당신은 열을 명시 적으로 이름을 부여 할 수 있으며,이 작품 :

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 열을 선택 하는가 : 뷰를 쿼리 할 때 예를 들어, 모호한 결과를 얻을 것인가?

뷰 정의의 열 이름 이 있어야합니다. 뷰를 쿼리 할 때 별개의 것으로 지정하는 것만으로는 충분하지 않습니다.

인증 가이드 질문에 대한 언급이 잘못되었다고 생각하는 이유입니다. 명시 적으로 열의 이름을 바꾸는 것이 아니라 뷰의 열에 고유 한 이름이 있는지 확인하는 것입니다. 이것이 열의 이름을 바꾸는 일반적인 이유이기 때문에 질문을 작성하는 사람이 그런 식으로 그것을 작성한 것일 수 있습니다.

SELECT * FROM MyView; -- returns result with columns a, b, c, d, e, f 
:

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; 

어느 쪽이든, 당신은 별칭 열을 얻을 :


질문에 언급 된 다른 기술 중 하나를

은 모호성을 해결할 수 있습니다
0

"선택할 때 이름을 바꿉니다"라는 말은 분명히 SELECT a AS b FROM theview과 같은 의미입니다. "열에 명시 적 이름 지정"이라는 주어진 작업에 대해 작동하지 않는 이유는 명시 적이거나 모호하지 않은 것일 수도 있습니다. a "이름 바꾸기"보기 ... 이미 (a) 또는 (b) 방법으로 불분명 한 경우가 아니라면 [ "이름 바꾸기"와 같은 방법으로이 문제를 해결할 수 있습니다. ! -)]].

+0

나는 정말로 그 부분을 얻지 못한다. "당신이"이름을 바꾸기 "위해 명백한, 모호하지 않은 것을 필요로하지 않는다는 것입니다 ..."오타가 있습니까? – iceangel89

+0

제 말은 :'CREATE VIEW ... SELECT'의 모든 열에 대해'column_list' 또는'as' 절을 제공하지 않는 한, 뷰의 실제 열의 이름은 "명백하고 모호하지 않습니다" (중복이 허용되지 않기 때문에 기술적으로 명확하지만 판독기에 반드시 명확하지는 않음). –

+0

hmm ... 그래서 theview를 AS에서 사용하는 것은 "VIEW 'S ** columns"에 대해 명시 적 이름을 제공하는 것이 아니라 "result set"의 열 – iceangel89