SELF JOIN
- 셀프 조인이란 하나의 테이블을 스스로와 조인하는 것을 말합니다. 즉, 같은 테이블의 여러 행을 서로 결합할 때 사용됩니다.
- 셀프 조인을 사용하면 테이블의 특정 행을 동일한 테이블 내 다른 행과 결합할 수 있습니다.
- INNER JOIN 구문을 사용하여 셀프 조인을 할 때, 테이블을 마치 두 개의 서로 다른 테이블처럼 취급합니다. 이를 위해 별칭(Alias)을 사용하여 테이블의 두 개 버전을 구분합니다.
- 셀프 조인은 특히 계층적 관계나 같은 테이블 내에서의 상하 관계를 표현할 때 유용합니다.
예시 :
- 한 회사의 직원 테이블이 있다고 가정해봅시다.
- 이 테이블은 각 직원의 이름과 상사(매니저)에 대한 정보를 포함하고 있습니다. 그런데 이 매니저도 같은 테이블에 포함된 또 다른 직원입니다.
- 이런 경우, 셀프 조인을 사용하여 매니저와 직원을 연결할 수 있습니다.
직원 ID | 이름 | 매니저ID |
1 | 철수 | NULL |
2 | 영희 | 1 |
3 | 민수 | 1 |
4 | 지영 | 2 |
셀프 조인 쿼리 예시 :
SELECT e1.이름 AS 직원이름, e2.이름 AS 매니저이름
FROM Employee e1
LEFT JOIN Employee e2
ON e1.매니저ID = e2.직원ID;
결과 :
직원이름 | 매니저이름 |
철수 | NULL |
영희 | 철수 |
민수 | 철수 |
지영 | 영희 |
- 직원과 매니저가 같은 테이블에 있는 데이터를 조인하여, 직원과 그들의 매니저를 결합한 결과를 얻을 수 있습니다.
VIEWS
- 뷰(View)는 하나 이상의 테이블로부터 데이터를 조회한 결과를 보여주는 가상 테이블입니다.
- 뷰는 실제 데이터를 저장하지 않으며, 기본 테이블에 있는 데이터를 쿼리로 가져옵니다.
- CREATE VIEW 구문을 통해 생성되며, 이는 동일한 SELECT 쿼리를 여러 번 반복하지 않도록 간편하게 사용할 수 있습니다.
- 뷰는 기본 테이블의 데이터와 구조가 변경되면 즉시 반영됩니다. 즉, 뷰는 동적 테이블처럼 동작합니다.
- 뷰를 이용하면 코드를 단축시킬 수 있고, 메모리를 추가로 사용하지 않습니다.
- 다만, 뷰는 가상 테이블이므로 뷰 자체에 데이터를 삽입하거나 업데이트하는 것은 불가능합니다.
예시:
/*
create view 대신 CREATE OR REPLACE VIEW는
MySQL Workbench와 같은 더 완성된 도구에서만 적용 가능합니다.
*/
# 해당 구문은 emp_no를 기준으로 그룹화 후 그 중 제일 높은 from_date값과 to_date 데이터를 출력하는 구문입니다.
create or replace view v_dept_emp_latest_date as
select
emp_no, Max(from_date) as from_date, max(to_date) as to_date
from dept_emp
group by emp_no;
- 이처럼 뷰를 사용하면 mysql 기준으로 옆의 스키마에 Views 항목을 들어가시면 'v_dept_emp_latest_date' 생성되어 있고 들어가게 되면 select로 찾으려 했던 테이블이 출력되게 됩니다.
- 이처럼 동일한 select 쿼리를 반복 사용할 필요 없이 간편하게 사용할 수 있습니다.
- 그리고 큰 웹 환경에서도 여러 사용자가 쿼리를 보냈을 경우 Views를 이용하면 사용자에게 메모리 사용 없이 같은 화면을 보낼 수 있습니다.(재사용성이 뛰어남.)
이상입니다.
'Data Analyst > SQL' 카테고리의 다른 글
SQL - Variables, Functions (1) | 2024.09.13 |
---|---|
SQL - Routine, Stored Procedure (0) | 2024.09.12 |
SQL - SubQuery (1) | 2024.09.09 |
SQL - 여러 테이블 JOIN, SQL JOIN 사용 시 유용한 팁, UNION, UNION ALL (0) | 2024.09.03 |
SQL - RIGHT JOIN, SQL 조인 구문: 새로운 방식과 오래된 방식, CROSS JOIN (0) | 2024.09.02 |