Cardemy Card emy ← 탐색으로 돌아가기
[

[SQLD합격] JOIN과 서브쿼리 완전 이해

SQLD에서 가장 많은 수험생이 막히는 구간이다. INNER JOIN, OUTER JOIN, SELF JOIN 등 테이블 연결 개념을 실제 데이터 흐름 기준으로 이해한다. 또한 서브쿼리의 실행 순서와 단일행/다중행 서브쿼리 차이를 학습하며, EXISTS, IN, ANY, ALL 같은 시험 핵심 포인트를 익힌다. 이 단계를 끝내면 복잡한 SQL 문제를 구조적으로 읽는 힘이 생긴다.

71 문항 0 복사 카데미 2026.05.15

무료 체험 퀴즈

먼저 5문항만 풀어보세요

1 / 5

SELECT * FROM employees e INNER JOIN departments d ON e.department_id = d.department_id

employees와 departments 테이블에서 department_id가 같은 데이터만 조회한다

INNER JOIN은 양쪽 테이블에 공통으로 존재하는 데이터만 조회한다.

SELECT * FROM employees e JOIN departments d ON e.department_id = d.department_id

employees와 departments를 department_id 기준으로 연결해서 조회한다

JOIN은 INNER JOIN과 동일하게 동작하며 INNER는 생략 가능하다.

SELECT e.name, d.department_name FROM employees e JOIN departments d ON e.department_id = d.department_id

직원 이름과 소속 부서명을 함께 조회한다

JOIN을 사용하면 여러 테이블의 컬럼을 동시에 조회할 수 있다.

SELECT * FROM employees e LEFT OUTER JOIN departments d ON e.department_id = d.department_id

employees 기준으로 모든 데이터를 조회하고 연결되는 departments 데이터가 있으면 함께 조회한다

LEFT OUTER JOIN은 왼쪽 테이블 데이터를 모두 유지한다.

SELECT * FROM employees e RIGHT OUTER JOIN departments d ON e.department_id = d.department_id

departments 기준으로 모든 데이터를 조회하고 연결되는 employees 데이터가 있으면 함께 조회한다

RIGHT OUTER JOIN은 오른쪽 테이블 데이터를 모두 유지한다.

수록 문항

총 71개

아래 문항들은 이 학습지에 수록된 카드입니다. 로그인하면 이 학습지를 내 계정으로 복사해 카드를 한 장씩 넘기며 반복 학습할 수 있고, 숙달한 카드는 완료 표시하여 다음 세션에서 제외할 수 있습니다.

  1. #1
    Q.

    SELECT * FROM employees e INNER JOIN departments d ON e.department_id = d.department_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  2. #2
    Q.

    SELECT * FROM employees e JOIN departments d ON e.department_id = d.department_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  3. #3
    Q.

    SELECT e.name, d.department_name FROM employees e JOIN departments d ON e.department_id = d.department_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  4. #4
    Q.

    SELECT * FROM employees e LEFT OUTER JOIN departments d ON e.department_id = d.department_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  5. #5
    Q.

    SELECT * FROM employees e RIGHT OUTER JOIN departments d ON e.department_id = d.department_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  6. #6
    Q.

    SELECT * FROM employees e FULL OUTER JOIN departments d ON e.department_id = d.department_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  7. #7
    Q.

    SELECT * FROM employees e, departments d WHERE e.department_id = d.department_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  8. #8
    Q.

    SELECT * FROM employees e CROSS JOIN departments d

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  9. #9
    Q.

    SELECT * FROM employees e NATURAL JOIN departments d

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  10. #10
    Q.

    SELECT * FROM employees e JOIN departments d USING(department_id)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  11. #11
    Q.

    SELECT e.name, d.department_name FROM employees e LEFT JOIN departments d ON e.department_id = d.department_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  12. #12
    Q.

    SELECT e.name, d.department_name FROM employees e RIGHT JOIN departments d ON e.department_id = d.department_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  13. #13
    Q.

    SELECT * FROM orders o JOIN customers c ON o.customer_id = c.customer_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  14. #14
    Q.

    SELECT * FROM order_items oi JOIN products p ON oi.product_id = p.product_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  15. #15
    Q.

    SELECT * FROM employees e JOIN jobs j ON e.job_id = j.job_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  16. #16
    Q.

    SELECT * FROM employees e SELF JOIN employees m ON e.manager_id = m.employee_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  17. #17
    Q.

    SELECT e.name, m.name FROM employees e JOIN employees m ON e.manager_id = m.employee_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  18. #18
    Q.

    SELECT * FROM employees e LEFT JOIN departments d ON e.department_id = d.department_id WHERE d.department_id IS NULL

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  19. #19
    Q.

    SELECT * FROM users u JOIN orders o ON u.user_id = o.user_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  20. #20
    Q.

    SELECT * FROM users u JOIN orders o ON u.user_id = o.user_id WHERE o.price > 10000

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  21. #21
    Q.

    SELECT * FROM users u JOIN orders o ON u.user_id = o.user_id AND o.status = 'DONE'

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  22. #22
    Q.

    SELECT * FROM users u LEFT JOIN orders o ON u.user_id = o.user_id WHERE o.order_id IS NULL

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  23. #23
    Q.

    SELECT COUNT(*) FROM employees e JOIN departments d ON e.department_id = d.department_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  24. #24
    Q.

    SELECT d.department_name, COUNT(*) FROM employees e JOIN departments d ON e.department_id = d.department_id GROUP BY d.department_name

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  25. #25
    Q.

    SELECT e.name, d.department_name FROM employees e JOIN departments d ON e.department_id = d.department_id ORDER BY e.name

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  26. #26
    Q.

    SELECT * FROM employees WHERE salary > (SELECT AVG(salary) FROM employees)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  27. #27
    Q.

    SELECT * FROM employees WHERE salary = (SELECT MAX(salary) FROM employees)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  28. #28
    Q.

    SELECT * FROM employees WHERE department_id IN (SELECT department_id FROM departments WHERE location_id = 100)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  29. #29
    Q.

    SELECT * FROM users WHERE user_id IN (SELECT user_id FROM orders)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  30. #30
    Q.

    SELECT * FROM users WHERE user_id NOT IN (SELECT user_id FROM orders)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  31. #31
    Q.

    SELECT * FROM employees WHERE salary > ANY (SELECT salary FROM employees WHERE department_id = 10)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  32. #32
    Q.

    SELECT * FROM employees WHERE salary > ALL (SELECT salary FROM employees WHERE department_id = 10)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  33. #33
    Q.

    SELECT * FROM departments d WHERE EXISTS (SELECT 1 FROM employees e WHERE e.department_id = d.department_id)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  34. #34
    Q.

    SELECT * FROM departments d WHERE NOT EXISTS (SELECT 1 FROM employees e WHERE e.department_id = d.department_id)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  35. #35
    Q.

    SELECT * FROM employees WHERE department_id = (SELECT department_id FROM departments WHERE department_name = 'SALES')

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  36. #36
    Q.

    SELECT * FROM products WHERE price > (SELECT AVG(price) FROM products)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  37. #37
    Q.

    SELECT name, (SELECT department_name FROM departments d WHERE e.department_id = d.department_id) FROM employees e

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  38. #38
    Q.

    SELECT * FROM employees e WHERE salary > (SELECT AVG(salary) FROM employees WHERE department_id = e.department_id)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  39. #39
    Q.

    SELECT * FROM employees e WHERE EXISTS (SELECT 1 FROM employees m WHERE e.manager_id = m.employee_id)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  40. #40
    Q.

    SELECT * FROM orders o WHERE EXISTS (SELECT 1 FROM users u WHERE o.user_id = u.user_id)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  41. #41
    Q.

    SELECT * FROM users u WHERE EXISTS (SELECT 1 FROM orders o WHERE u.user_id = o.user_id AND o.price > 10000)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  42. #42
    Q.

    SELECT * FROM employees WHERE department_id IN (10,20,30)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  43. #43
    Q.

    SELECT * FROM employees WHERE department_id NOT IN (10,20,30)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  44. #44
    Q.

    SELECT * FROM employees WHERE salary > SOME (SELECT salary FROM employees WHERE department_id = 10)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  45. #45
    Q.

    SELECT * FROM employees WHERE salary < ALL (SELECT salary FROM employees WHERE department_id = 20)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  46. #46
    Q.

    SELECT department_id, AVG(salary) FROM employees GROUP BY department_id HAVING AVG(salary) > (SELECT AVG(salary) FROM employees)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  47. #47
    Q.

    SELECT * FROM employees e JOIN departments d ON e.department_id = d.department_id WHERE d.location_id = 100

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  48. #48
    Q.

    SELECT * FROM employees e LEFT JOIN departments d ON e.department_id = d.department_id WHERE e.salary > 3000

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  49. #49
    Q.

    SELECT * FROM users u JOIN orders o ON u.user_id = o.user_id JOIN payments p ON o.order_id = p.order_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  50. #50
    Q.

    SELECT * FROM products p JOIN categories c ON p.category_id = c.category_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  51. #51
    Q.

    SELECT * FROM sales s JOIN customers c ON s.customer_id = c.customer_id WHERE s.sale_date > TO_DATE('20250101','YYYYMMDD')

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  52. #52
    Q.

    SELECT e.name, d.department_name, l.location_name FROM employees e JOIN departments d ON e.department_id = d.department_id JOIN locations l ON d.location_id = l.location_id

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  53. #53
    Q.

    SELECT * FROM employees e WHERE e.salary = (SELECT MAX(salary) FROM employees WHERE department_id = e.department_id)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  54. #54
    Q.

    SELECT * FROM employees e WHERE e.salary > (SELECT AVG(salary) FROM employees WHERE department_id = e.department_id)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  55. #55
    Q.

    SELECT * FROM users u WHERE EXISTS (SELECT 1 FROM orders o WHERE u.user_id = o.user_id)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  56. #56
    Q.

    SELECT * FROM users u WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE u.user_id = o.user_id)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  57. #57
    Q.

    SELECT * FROM employees WHERE department_id IN (SELECT department_id FROM departments WHERE department_name LIKE 'M%')

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  58. #58
    Q.

    SELECT * FROM employees e JOIN departments d ON e.department_id = d.department_id AND d.location_id = 100

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  59. #59
    Q.

    SELECT * FROM employees e LEFT JOIN departments d ON e.department_id = d.department_id AND d.location_id = 100

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  60. #60
    Q.

    SELECT * FROM employees e WHERE department_id = ANY (SELECT department_id FROM departments WHERE location_id = 100)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  61. #61
    Q.

    SELECT * FROM employees WHERE salary > (SELECT MIN(salary) FROM employees WHERE department_id = 30)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  62. #62
    Q.

    SELECT * FROM orders o JOIN customers c ON o.customer_id = c.customer_id WHERE c.city = 'SEOUL'

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  63. #63
    Q.

    SELECT c.customer_name, SUM(o.price) FROM customers c JOIN orders o ON c.customer_id = o.customer_id GROUP BY c.customer_name

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  64. #64
    Q.

    SELECT * FROM employees e JOIN departments d ON e.department_id = d.department_id WHERE e.salary > 5000 AND d.department_name = 'SALES'

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  65. #65
    Q.

    SELECT * FROM employees e WHERE EXISTS (SELECT 1 FROM departments d WHERE e.department_id = d.department_id AND d.location_id = 100)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  66. #66
    Q.

    SELECT * FROM users u JOIN orders o ON u.user_id = o.user_id WHERE o.order_date BETWEEN TO_DATE('20250101','YYYYMMDD') AND TO_DATE('20251231','YYYYMMDD')

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  67. #67
    Q.

    SELECT department_id, COUNT(*) FROM employees GROUP BY department_id HAVING COUNT(*) > 5

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  68. #68
    Q.

    SELECT * FROM employees e JOIN jobs j ON e.job_id = j.job_id WHERE j.job_title LIKE '%MANAGER%'

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  69. #69
    Q.

    SELECT * FROM employees e WHERE EXISTS (SELECT 1 FROM employees m WHERE e.manager_id = m.employee_id AND m.salary > 5000)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  70. #70
    Q.

    SELECT * FROM employees e JOIN departments d ON e.department_id = d.department_id WHERE d.department_name IN ('SALES','HR')

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.
  71. #71
    Q.

    SELECT * FROM employees e WHERE department_id NOT IN (SELECT department_id FROM departments WHERE location_id = 200)

    답은 위 체험 퀴즈 또는 로그인 후 학습 화면에서 확인할 수 있습니다.

이 학습지를 효과적으로 활용하는 방법

  • ① 처음에는 전체 문항을 한 번씩 훑어보며 익숙한 항목과 낯선 항목을 분류하세요.
  • ② 학습 세션에서 "안 외운 문항만" 옵션으로 아직 숙달하지 못한 카드에 집중합니다.
  • ③ 랜덤 순서 학습을 활용해 카드 순서에 의존한 암기를 방지하세요.
  • ④ 키보드 단축키(1·2·A·D·Space)를 쓰면 한 손으로도 빠르게 복습할 수 있습니다.
  • ⑤ 복사(Fork)한 학습지에는 자유롭게 나만의 해설이나 예문을 덧붙여 내 스타일로 다듬어 보세요.

카데미에 로그인하면 이 학습지를
내 학습지로 복사하여 바로 학습할 수 있습니다.