반응형

 안녕하세요. 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

 

 

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

반응형

댓글을 달아 주세요

  1. 상식체온

    오늘 글은 비교적 쉽게 다가 오네요. 잘 보고 갑니다. 좋은 하루되세요.