JOIN


JOIN은 여러 테이블의 데이터를 결합할 때 사용됩니다.
JOIN은 INNER JOINLEFT JOIN이 있습니다.


INNER JOIN

INNER JOIN은 두 테이블 모두 조건에 맞는 데이터만 반환.


예시: 학생과 과목 테이블 결합

SELECT students.name, courses.course_name
FROM students
INNER JOIN courses ON students.student_id = courses.student_id;

inner-join

이 쿼리는 students테이블과 courses테이블에서 학생 ID를 기준으로 매칭되는 학생의 이름과 과목 이름을 가져옵니다.


LEFT JOIN

LEFT JOIN은 왼쪽 테이블에 있는 모든 행을 반환하고, 오른쪽 테이블에서 일치하는 값이 있으면 함께 반환
일치하는 값이 없을 경우 오른쪽 테이블의 값은 NULL로 채워집니다.


예시: 과목 수강 내역이 없는 학생 포함

SELECT students.name, courses.course_name
FROM students
LEFT JOIN courses ON students.student_id = courses.student_id;

이 쿼리는 모든 학생들을 조회하면서 과목 정보를 결합합니다.
수강하지 않는 학생은 NULL로 표시됩니다.



서브쿼리(SUBQUERY)


서브쿼리는 쿼리 내에 포함된 또 다른 쿼리입니다.
주로 복잡한 쿼리에서 중간 데이터를 처리하거나 특정 조건을 만족하는 데이터를 추출하기 위해 사용됩니다.


예시1: 각 학생이 수강한 과목 수 조회

SELECT name,
       (SELECT COUNT(*)
        FROM courses
        WHERE courses.student_id = students.student_id) AS course_count
FROM students;

select-subquery

students 테이블의 각 학생에 대해, 그 학생이 수강한 과목 수를 서브쿼리로 계산하여 course_count라는 별칭으로 표시


예시2: 평균 학점보다 높은 학생 조회

SELECT name, grade
FROM students
WHERE grade> (
      SELECT AVG(grade)
      FROM students
);

where-grade-subquery

students 테이블의 전체 학생 평균 학점을 계산한 후, 그보다 높은 학점을 가진 학생을 조회하는 방식


예시3: 특정 과목을 수강한 학생 조회

SELECT name
FROM students
WHERE student_id IN (
      SELECT student_id
      FROM courses
      WHERE course_name = 'Database Systems'
);

where-student-id-in-subquery

course 테이블에서 ‘Database Systems’ 과목을 수강한 학생의 student_id를 가져온 뒤, 그 ID에 해당하는 학생의 이름을 student 테이블에서 조회하는 방식입니다.

태그:

카테고리:

업데이트: