where과 having은 데이터 검색을 할 때 조건을 필터링하기 위해 사용된다.
하지만 동일한 기능을 하지 않기 때문에 상황에 맞춰 사용해야 한다.
WHERE
select * from 테이블명 where 조건절
항상 from절 뒤에 위치해야 하고 조건에는 다양한 비교연산자들이 사용되어 구체적인 조건을 줄 수 있다.
HAVING
select * from 테이블명 group by 필드명 having 조건절
항상 group by 뒤에 나오며 where 절과 마찬가지로 비교연산자들을 사용해서 조건을 줄 수 있다.
group by
같은 값을 가진 행을 그룹 짓는 SQL 명령어이다.
COUNT(), MAX(), SUM() 등 집계함수와 함께 사용한다.
비교
where은 기본적인 조건절로서 우선적으로 모든 필드에 조건을 둘 수 있다.
하지만 having은 group by 된 이후 특정한 필드로 그룹화된 새로운 테이블에 조건을 줄 수 있다.
where | having |
개별 행에 적용된다. | 그룹을 나타내는 결과 집합의 행에만 적용된다. |
행을 필터링 | 그룹을 필터링 |
group by 앞에 사용 | group by 뒤에 사용 |
그룹화 또는 집계가 발생하기 전에 레코드를 필터링 | 그룹화 또는 집계가 발생한 후에 레코드를 필터링 |
참고
https://velog.io/@ljs7463/SQL-having-%EA%B3%BC-where-%EC%B0%A8%EC%9D%B4
'멋진 개발자 > DB' 카테고리의 다른 글
개발자 성장 기록 50 - 인덱스(Index) (0) | 2024.04.17 |
---|---|
개발자 성장 기록 49 - Oracle과 MySQL (0) | 2024.04.16 |
개발자 성장 기록 47 - DELETE, TRUNCATE, DROP (0) | 2024.04.12 |
개발자 성장 기록 40 - Redis (0) | 2024.04.04 |
개발자 취준 기록 31 - Primary Key, Foreign Key (1) | 2024.03.26 |