2012-10-09 2 views
2

테이블 이름 뒤에 나는의 효과에 대한 SQL 문을 발견? 나는 전에 이것을 본 적이 없다.SQL 서버 추가 텍스트 SELECT

감사합니다.

+1

한 가지가 가독성 이득이 매우 과대 평가 것입니다. 조사하는 동안과 같이 단기 쿼리를 작성하는 경우 유용하지만 영구 코드에서 별칭을 사용하지 않는 것이 좋습니다. 누군가가 나중에 코드를 유지 관리하면 C.ID가 Customer.ID, Currency.ID 또는 CostCode.ID를 참조하는지 여부를 알 수 없습니다. 반면 전체 테이블 이름이 주어지면 어떤 데이터가 사용되는지 명확 해집니다. – Tobsey

답변

3

별칭입니다. AS 키워드는 선택 사항이며 탈락되었지만, 그것은과 동일합니다 :

SELECT * FROM Users AS x 

이것은 당신이 x를 사용 (SQL의 일부 구현에서, SQL 서버는 반드시 그들 중 하나, 인) 수 있다는 것을 의미합니다 나머지 쿼리는 여기서 Users 테이블을 참조합니다. 예를 들어 :

  1. 가독성 :

    SELECT x.MyColumn 
    FROM Users x 
    WHERE x.AnotherColumn = 42 
    

    별명 세 가지 일반적으로 사용하는 경우가 있습니다. 테이블 이름이 길거나 이름이 여러 번 사용되는 경우에는 가독성을 높일 수 있습니다. 예를 들어, 별칭없이 다음과 같은 상상 :

    SELECT x.SomeColumn, x.SomeOtherColumn, x.AThirdColumn 
    FROM [my crAzy Table Name with spaces in it] x 
    WHERE x.AnotherColumn = 42 
    
  2. 동음. 종종 자체 조인에 사용되며 같은 테이블을 두 번 사용합니다.당신은 Users 테이블의 두 인스턴스를 구별 할 때의 별명을 사용해야합니다에서에

    SELECT x.SomeColumn, COUNT(y.SomeColumn) 
    FROM Users x 
    INNER JOIN Users y ON x.SomeOtherColumn < y.SomeOtherColumn 
    GROUP BY x.SomeColumn 
    
  3. 하위 쿼리 또는 JOIN 절을 는 이름이 있어야합니다 (파생 테이블이라고합니다). 이는 별칭을 지정하여 수행됩니다 명심하기

    SELECT x.SomeColumn 
    FROM 
    (
        SELECT SomeColumn 
        FROM Users 
    ) x 
    
+0

빠른 답변 주셔서 감사합니다! – user807566

+0

@HLGEM 고마워요. –

5

xUsers 테이블의 별칭입니다.

Using Table Aliases

SELECT 문의 가독성

는 테이블을 또한 상관 관계 이름 또는 범위 변수로 알려진 별칭을 제공함으로써 개선 될 수있다. 테이블 별칭을 사용하거나 AS 키워드가없는 중 하나를 할당 할 수 있습니다 :

SELECT * FROM Users x 

SELECT * FROM Users AS x 
+0

빠른 응답과 링크를 가져 주셔서 감사합니다. – user807566

1

그냥 쿼리에서 사용할 수있는 사용자에 대한 별칭이다.

상상 :

당신이이 ID를 검색 싶다면 당신은 모두

의 ID 열로,이 개 테이블에서 datas를 검색 할

, 당신은 혼동을 피하기 위해 열 이름을 접두사해야합니다. 별칭으로

:

select t1.Id, t2.Id 
from mytableWithAReallyComplicatedName t1 
inner join mySecondtableWithAReallyComplicatedName t2 on t1.Id = t2.Id 

select mytableWithAReallyComplicatedName.Id, mySecondtableWithAReallyComplicatedName.Id 
from mytableWithAReallyComplicatedName 
inner join mySecondtableWithAReallyComplicatedName on mytableWithAReallyComplicatedName.Id = mySecondtableWithAReallyComplicatedName .Id 

테이블 이름이 긴이 별명

없이, 쿼리는 두 번째 버전으로, 읽기 빠른 실용성 수 있습니다.

+0

답변과 훌륭한 예를 보내 주셔서 감사합니다. – user807566