본문 바로가기
내일배움캠프_게임서버(202410)/퀘스트

걷기 SQL - 10) 이젠 테이블이 2개입니다

by GREEN나무 2024. 10. 21.
728x90

38. 현재 존재하고 있는 총 부서의 수를 구하는 쿼리를 작성해주세요!

SELECT COUNT(*) AS total_departments
FROM departments;

 

39. 모든 직원과 그들이 속한 부서의 이름을 나열하는 쿼리를 작성해주세요!

SELECT e.name AS employee_name, d.name AS department_name
FROM employees e
--고용인(employees) 테이블을 ‘e’로 별칭
JOIN departments d ON e.department_id = d.id;

 

40. '기술팀' 부서에 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!

SELECT e.name AS employee_name
FROM employees e
JOIN departments d ON e.department_id = d.id
--테이블을 조인 한 후에 그 테이블 열을 읽어옵니다.
WHERE d.name = '기술팀';

 

41. 부서별로 직원 수를 계산하는 쿼리를 작성해주세요!

SELECT d.name AS department_name,
COUNT(e.id) AS employee_count
FROM departments d
LEFT JOIN employees e ON d.id = e.department_id
GROUP BY d.id;

 

42. 직원이 없는 부서의 이름을 찾는 쿼리를 작성해주세요!

SELECT d.name AS department_name -- 열 이름 지정(부서 이름)
FROM departments d
LEFT JOIN employees e ON d.id = e.department_id
-- 직원 없는 부서도 포함 열 생성
WHERE e.id IS NULL; -- 직원이 없는 부서 이름(d.name) 출력

 

43. '마케팅팀' 부서에만 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!

SELECT e.name AS employee_name
--직원 이름 출력
FROM employees e
JOIN departments d ON e.department_id = d.id
--부서 이름이랑 직원 이름이랑 연결
WHERE d.name = '마케팅팀';

 


 

풀이

39

JOIN : 조인은 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것입니다.

두 테이블의 조인을 위해서는 기본키(PRIMARY KEY, PK)와 외래키(FOREIGN KEY, FK) 관계로 맺어져야 하고, 이를 일대다 관계라고 합니다.

 

1) INNER JOIN(내부 조인) : 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 합니다.

SELECT 컬럼
FROM 테이블명1
INNER JOIN 테이블명2
ON 조인 조건
[WHERE 검색 조건]
--INNER JOINJOIN이라고만 써도 INNER JOIN으로 인식합니다.

2) OUTER JOIN(외부 조인) : 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나옵니다.

SELECT <열 목록>
FROM <첫 번째 테이블(LEFT 테이블)>
<LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>
ON <조인 조건>
[WHERE 검색 조건]


/* OUTER JOIN의 종류
LEFT OUTER JOIN: 왼쪽 테이블의 모든 값이 출력되는 조인입니다.
RIGHT OUTER JOIN: 오른쪽 테이블의 모든 값이 출력되는 조인입니다.
FULL OUTER JOIN: 왼쪽 외부 조인과 오른쪽 외부 조인이 합쳐진 것입니다.
*/

 

3) CROSS JOIN(상호 조인) : 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 기능입니다.

상호 조인 결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 수만큼 됩니다.

카티션 곱(CARTESIAN PRODUCT)라고도 합니다.

SELECT *
FROM <첫 번째 테이블>
CROSS JOIN <두 번째 테이블>

4) SELF JOIN(자체 조인) : 자신이 자신과 조인한다는 의미로, 1개의 테이블을 사용합니다.

SELECT <열 목록>
FROM <테이블> 별칭A
INNER JOIN <테이블> 별칭B
[WHERE 검색 조건]

 

 


 

출처

39: https://hongong.hanbit.co.kr/sql-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95-joininner-outer-cross-self-join/

 

42: https://velog.io/@greendev/%EC%98%A4%EB%9D%BC%ED%81%B4-hr-SQL-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C2-13%EB%A7%88%EC%A7%80%EB%A7%89-19%EB%B2%88

 

 

https://teamsparta.notion.site/10-2-1102dc3ef51481f4b9d0ee616801c348

 

10) 이젠 테이블이 2개입니다 | Notion

다음과 같은 직원(employees) 테이블과 부서(departments) 테이블이 있습니다.

teamsparta.notion.site