안녕하세요. chogahui05입니다. 오늘 해 볼 내용은 Alias, 그러니까 as 절입니다. 이는 이름이 긴 필드 이름이나, 긴 릴레이션 이름을 Query 문 내에서 다시 이름을 짓기 위해서 씁니다. 당연하게도 결과 relation에서, 이름이 다시 지어질 겁니다. A as B라고 하면, A를 B로 재명명한다는 뜻입니다. 예제를 보이는 것이 좀 더 좋겠네요.

 

 


 먼저, school 데이터 베이스에서 student 테이블에 있는 내용들을 모두 뽑아와 보겠습니다.

 

 

 테이블 내에는 ID, name, dept_name, tot_cred가 있습니다. 이 중 저는 ID와 dept_name을 뽑아올 건데요. dept_name은 d_name으로 재정의 하고 싶습니다. 그러면 어떻게 하면 좋을까요? 일단, select 절에는 2개의 필드가 들어갑니다.

 

 

 그런데 dept_name을 d_name으로 재정의 하라고 했으므로, dept_name As d_name으로 적어주면 됩니다.

 

 

 실행 결과는 위와 같습니다.

 

 

 이제, course table을 보겠습니다.

 

 

 그러면 필드가 course_id, title, dept_name, credits가 있습니다. 이 중에 저는 course_id랑, title과 credits를 select 할 건데요. 이 중, course_id를 c_id로 재명명하고 싶습니다. 어떻게 쿼리를 작성하면 될까요?

 

 

 요렇게 작성하시면 됩니다. course_id as c_id는, course_id를 c_id로 재명명하겠다는 이야기입니다.

 

 

 실행 결과는 위와 같습니다.

 


 테이블 이름을 다시 지을 수도 있을까요? 사실 self join은 자신과 자신을 join하는 것입니다. 이 때 테이블을 As 명령어로 다시 이름을 붙이기도 합니다. self join 쿼리로 비효율적인 rank 함수를 구현한 포스팅에 나왔습니다. 눈치 채신 분들도 계실 거라 생각합니다. 이것 말고도, 테이블의 이름이 너무 긴 경우에 짧게 줄이기 위해서 쓰기도 합니다.

 

 예를 들어서, teaches 테이블과 instructor 테이블이 있고, 각 교수들이 몇 개의 수업을 강의했는지 결과를 리턴해야 하는 쿼리가 있다고 생각해 봅시다. 그러면 이 두 테이블을 Join해서 값을 얻어내야 할 겁니다. 당연하게도, 몇 학점을 강의했느냐까지 구하려면, course까지 3개의 테이블을 써야 할 거에요.

 

 

 그런데, teached와 instructor 두 개는 타이핑 하기 귀찮으니까, teaches를 T로, instructor를 I로 재명명을 합시다. 그 쿼리에서만 말입니다. 어찌 되었던 이 쿼리는 T나 I가 어떠한 테이블이 재정의가 된 것 뿐이지. 실질적으로 두 개의 table을 ID가 같은 것만 JOIN합니다.

 

 

 여기서, 각 교수 ID별로 몇 개의 수업을 가르쳤는지 뽑아봅시다. 그룹 기준을 T.ID로 잡으면 되겠네요.

 

 

 groupping을 하고 나서, 무엇을 기준으로 count 하면 되나요? T.ID

 

 

 실행 결과는 위와 같습니다.