본문 바로가기
SQL

[SQL 기초 연습] 10. 이젠 테이블이 2개입니다

by wooksss 2025. 1. 16.
다음과 같은 직원(employees) 테이블과 부서(departments) 테이블이 있습니다.
employees 테이블
id
department_id
name
1
101
르탄이
2
102
배캠이
3
103
구구이
4
101
이션이
departments 테이블
id
name
101
인사팀
102
마케팅팀
103
기술팀

38.

현재 존재하고 있는 총 부서의 수를 구하는 쿼리를 작성해주세요!
    > SELECT COUNT(*) FROM departments;
39.
모든 직원과 그들이 속한 부서의 이름을 나열하는 쿼리를 작성해주세요!
    > SELECT e.name, d.name FROM employees AS e 
                      JOIN departments AS d ON e.department_id = d.id; 
40.
'기술팀' 부서에 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!

    > SELECT e.name,d.name FROM employees AS e

                      JOIN departments AS d ON e.department_id = d.id

                      WHERE d.name = '기술팀';

41.
부서별로 직원 수를 계산하는 쿼리를 작성해주세요!
    > SELECT d.name COUNT(*) FROM employees AS e
                      JOIN departments AS d ON e.department_id = d.id
                      GROUP BY d.id;
42.
직원이 없는 부서의 이름을 찾는 쿼리를 작성해주세요!

    > SELECT d.name FROM departments d

                      LEFT JOIN employees e ON d.id = e.department_id

                      WHERE e.name IS NULL;

43.
'마케팅팀' 부서에만 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!
    > SELECT e.name FROM employees e
                      JOIN departments d ON e.department_id = d.id
                      WHERE d.name = '마케팅팀';
 
 
 
-- JOIN 개념은 확실히 헷갈리는 것 같다

-- 일반적으로 JOIN만 적게 된다면 INNER JOIN이 기본값으로 적용된다.

-- 두 테이블을 연결하기 위해서 ON 절을 사용하여 연결 조건을 지정한다. 

-- FK가 설정되어 있을 경우 FK와 JOIN하는 테이블의 ID를 연결하면 된다.

-- 절이 많아 질수록 쿼리가 복잡해지고 헷갈리는 경우가 많아서 다시 확인을 잘해야 함.

INNER JOIN 두 테이블에서 일치하는 데이터만 반환 두 테이블에서 일치하는 행만 반환
LEFT JOIN 왼쪽 테이블의 모든 행과 오른쪽 테이블에서 일치하는 데이터 반환 왼쪽 테이블의 모든 데이터와 오른쪽 테이블에서 일치하는 데이터 반환, 일치하지 않으면 NULL
RIGHT JOIN 오른쪽 테이블의 모든 행과 왼쪽 테이블에서 일치하는 데이터 반환 오른쪽 테이블의 모든 데이터와 왼쪽 테이블에서 일치하는 데이터 반환, 일치하지 않으면 NULL
FULL JOIN 두 테이블의 모든 행을 반환, 일치하지 않으면 NULL 반환 두 테이블에서 일치하는 행과 일치하지 않는 행 모두 반환, 일치하지 않으면 NULL
CROSS JOIN 두 테이블의 모든 가능한 조합 반환 두 테이블의 모든 가능한 행 조합 반환