[Java 풀스택 과정 강의] 2월 10일

부트캠프 일지/Java 풀스택 과정 강의
2026.02.16
※ TIL와는 별개로 적는 개인 개발 일지라서 말은 좀 편하게하는 페이지입니다.
일지이기 때문에 일기의 성격이 더 강합니다.

 

 

 WHERE에 포함된 여러 조건에 대한 내용이 이어진다.

 

GROUP BY 

GROUP BY는 그룹 질의와 관련된 부분이다. 특정 열로 그룹화한 후 각 그룹에 대해 한 행씩 질의 결과를 생성한다.

만약 GROUP BY라고 할 때 뒤에 컬럼명이 온다면, 그 컬럼의 값이 동일한 데이터끼리 합산되어 나타난다. 참고로 GROUP BY를 사용한다면, SELECT 구문에서는 GROUP BY에 사용된 컬럼 혹은 집계 함수만을 사용할 수 있다.

 

GROUP 함수(집계 함수)

집계 등을 위해서 사용하는 함수이다. GROUP BY를 사용하지 않아도 적용된다.

 

-- SUM() : 해당 그룹의 합계를 구한다.
SELECT SUM(컬럼명)

-- AVG() : 해당 그룹의 평균을 구한다.
SELECT AVG(컬럼명)

-- COUNT() : 선택된 열의 행 수를 구한다. GROUP BY를 사용하지 않아도 된다.
SELECT COUNT(컬럼명)

-- COUNT(*) : 전체 행의 수, GROUP BY를 사용하지 않아도 된다.
SELECT COUNT(*)

-- MAX() : 최대
SELECT MAX(컬럼명)

-- MIN() : 최소
SELECT MIN(컬럼명)

 

 

 

HAVING

HAVING <검색 조건>처럼 사용한다. GROUP BY 절에 의해 구성된 그룹들에 대해 적용할 조건을 사용한다.

집계함수와 사용해야 한다. 다음과 같은 예제가 있다.

 

SELECT SUM(컬럼명)
FROM 테이블
GROUP BY(컬럼명)
HAVING SUM(컬럼명) > 0;

 

JOIN

두 개 이상의 테이블을 결합시켜 사용한다. INNER JOIN과 OUTER JOIN이 있다. 각 테이블의 구분을 위해서 컬럼명을 사용할 때는 주로 테이블.컬럼명처럼 사용한다. 아래와 같은 형식이 일반적이다.

-- INNER JOIN
-- 공통되는 컬럼이 있을 때 사용. 공통 속성의 값이 동일한 레코드만 반환한다.
-- null 값 같은 경우는 제외된다.
SELECT A.[A의 컬럼], B.[B의 컬럼]
FROM A테이블 A(별명),
	 INNER JOIN B테이블 B(별명)
     ON A.[외래키] = B.[기본키];
     
-- OUTER JOIN
-- 공통되는 컬럼이 없을 때도 사용이 가능하다. 값이 없다면 NULL로 반환한다.
-- LEFT 및 RIGHT 형태로 출력을 정한다.

SELECT *
FROM A테이블 A(별명)
    LEFT OUTER JOIN B테이블 B(별명)
    ON A.[외래키] = B.[기본키];

 

 

SUBQUERY

질의 결과를 활용해서 다시 질의를 하는 개념으로, 괄호형으로 맞춰서 사용한다. 하나의 쿼리문 안에 다른 쿼리문이 중첩되며, 하위 질의 또는 부속질의라고 한다.

 

SELECT *
FROM A테이블
WHERE A의 컬럼명 = ( SELECT A의 컬럼명
                   FROM B테이블
                    WHERE 서브쿼리 조건
                  );

 

=의 경우 단일행이 반환되므로, IN, NOT IN 등을 사용하여 복수 행의 반환도 가능하다.

이후 EXISTS와 NOT EXISTS 외 SUBQUERY가 이어지므로 다음 날에 계속 정리한다.