메인 콘텐츠로 건너뛰기

VillageSQL is a drop-in replacement for MySQL with extensions.

All examples on this page work on VillageSQL. Install Now →
테이블 별칭은 1개의 쿼리 동안 테이블에 붙이는 짧은 이름입니다. 조인에서 타이핑을 줄여 주고, 별칭 없이는 쿼리가 동작하지 않는 2가지 상황이 있습니다. 시작하기 전에 mysql -u root -p sakila로 클라이언트를 여세요.

테이블 별칭의 동작 방식

TABLE_NAME을 테이블로, ALIAS_NAME을 원하는 짧은 이름으로, COLUMN_NAME을 그 테이블의 열로 바꾸세요. 그 시점부터 이 쿼리에서는 별칭이 테이블의 이름이고, 그 안의 열을 가리키려면 ALIAS_NAME.COLUMN_NAME이라고 씁니다. 열 별칭과 마찬가지로 여기서도 AS는 선택 사항이므로, FROM film f는 FROM film AS f와 같은 뜻입니다. AS를 쓰면 의도가 분명해집니다.

같은 조인을 두 가지 방식으로 쓰기

별칭이 없으면 한정된 모든 열에 테이블 이름 전체가 붙습니다.
별칭을 쓰면 같은 쿼리가 더 짧아지고 형태가 더 잘 보입니다.
동일한 행입니다. 별칭은 답에 대해 아무것도 바꾸지 않습니다.

두 테이블에 모두 있는 열은 한정해야 합니다

film과 language에는 둘 다 language_id가 있습니다. 이름만 쓰면 서버가 고를 방법이 없습니다.
ERROR 1052는 서버가 그 이름이 가리킬 수 있는 것을 1개보다 많이 찾았다는 뜻입니다. 조인에서는 거의 언제나 2개의 테이블이 공유하는 열이고, 의도한 테이블이나 별칭으로 한정하면 해결됩니다. 1개의 테이블에만 있는 열 이름은 한정할 필요가 없고, 그래서 위의 쿼리에서 title과 name은 이름만으로 동작합니다.

별칭은 테이블 이름을 대체합니다

테이블에 별칭이 붙으면, 쿼리의 나머지 부분에서 원래 이름은 사라집니다.
데이터베이스에서 테이블은 여전히 film입니다. 이 쿼리 안에서는 f에만 응답하고 다른 이름에는 응답하지 않습니다. 스키마에서 볼 수 있는 이름에 ERROR 1054가 나면 보통 이것입니다.

별칭 없이는 쓸 수 없는 경우

같은 테이블의 이름을 두 번 쓰는 쿼리에는 actor라고 불리는 것이 2개 있고 둘을 구별할 방법이 없습니다. 별칭이 그 쿼리를 가능하게 하는 것이고, 셀프 조인 레슨이 그 위에 세워져 있습니다.

테이블 별칭은 열 별칭이 아닙니다

둘은 같은 키워드를 쓰고 다른 일을 합니다. 열 별칭은 결과의 열 이름을 바꾸고 제목에 나타납니다. 테이블 별칭은 쿼리 안에서 테이블 이름을 바꾸고 출력에는 전혀 나타나지 않습니다. 다른 하나는 열 별칭을 보세요.

요약

  • 1개의 쿼리 동안 테이블에 짧은 이름을 붙이려면 TABLE_NAME AS ALIAS_NAME을 쓰세요.
  • 쿼리의 1개보다 많은 테이블에 있는 열 이름은 모두 한정하세요.
  • 조인에서 ERROR 1052는 한정해야 하는 열 이름으로 읽으세요.
  • 존재한다고 알고 있는 열의 이름을 ERROR 1054가 대면 잊어버린 별칭을 의심하세요.
  • 별칭은 결과에 대해 아무것도 바꾸지 않는다고 예상하세요.

함께 보기