이걸 배우면 쿼리 실행 동안에 테이블을 별명으로 부를 수 있다.
table_name AS alias_name;
위와 같은 문법으로 하면 된다.
table_name이 alias_name이라는 별명으로 불리게 된다는 내용임.
Column aliases도 그랬겠지만, As 키워드는 선택적이다.
해도 되고, 안해도 됨.
table_name alias_name;
글면 이걸 어따 쓸까요?ㅋㅋ
가뜩이나 쿼리도 긴데 테이블명까지 길어봐요. 읽기 싫겠죠?
a_very_long_table_name.column_name
읽기 싫죠. 여기서 굉장히긴 테이블명을 짧게 줄일 수도 있다~
a_very_long_table_name AS alias
그러면 얼마나 간단해져요.
alias.column_name
join에도 유용합니다. 바로 self join에서ㅇㅇㅇ
만약에 스스로를 join할 때는 반드시 table aliases를 써야 한다.
안그러고 같은 테이블을 여러번 참조할 경우에 쿼리결과에서 에러난다.
예를 들면 이렇게 아래와 같이 쓸 수 있다.
SELECT
e.first_name employee,
m .first_name manager
FROM
employee e
INNER JOIN employee m
ON m.employee_id = e.manager_id
ORDER BY manager;
요런 상황이라 칩시다.
여기서 테이블 A와 테이블B에서 pka fka에서 교집합만 끌어오고 싶을 때.
SELECT
pka,
c1,
pkb,
c2
FROM
A
INNER JOIN B ON pka = fka;
근데 교집합을 원하는 대부분의 경우에는 테이블이 다르더라도 칼럼명이 같을 것인데, 그렇다고 같은 칼럼명을 그대로 참조해버리면 에러가 난다.
그런 에러를 피하기 위해서는 특정 테이블의 칼럼이라는 걸 명시해주어야 함.
table_name.column_name
실제로는 alias를 활용해서 더 짧게 잘 쓸걸?
예시들
이렇게
SELECT
customer.customer_id,
first_name,
last_name,
amount,
payment_date
FROM
customer
INNER JOIN payment
ON payment.customer_id = customer.customer_id
ORDER BY payment_date;
음... 그리고 두 테이블 모두 customer_id 라는 칼럼을 가지고 있으므로, USING이라는 문법도 사용해볼 수 있다.
SELECT
customer_id,
first_name,
last_name,
amount,
payment_date
FROM
customer
INNER JOIN payment USING(customer_id)
ORDER BY payment_date;
만약에 세 개의 테이블을 INNER JOIN 해야 하면 어떡하지??
그러면 두 번째 INNER JOIN문을 첫 번째 INNER JOIN문 뒤에 붙이면 된다.
SELECT
c.customer_id,
c.first_name customer_first_name,
c.last_name customer_last_name,
s.first_name staff_first_name,
s.last_name staff_last_name,
amount,
payment_date
FROM
customer c
INNER JOIN payment p
ON p.customer_id = c.customer_id
INNER JOIN staff s
ON p.staff_id = s.staff_id
ORDER BY payment_date;