SQL

[SQL] LIKE 검색, NULL 함수, GROUP BY - HAVING (간단한 설명)

15호의 개발자 2022. 4. 14. 12:00
반응형

[SQL] LIKE 검색, NULL 함수, GROUP BY - HAVING (간단한 설명)

 


 

LIKE 검색

  • 정확한 키워드를 모를 경우 일부만으로 검색하는 방법
  • 와일드카드(%, _)를 사용하여 패턴 매칭
    • %: 0~n 글자
    • _: 한 글자
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 LIKE 패턴

 

  • LIKE 검색은 매칭하기 위해 DBMS에 부담이 많으므로 LIKE에 OR과 같은 논리조건자를 중복해서 사용하지 않는 것이 좋음
--바람직하지 않은 예
SELECT * FROM 테이블명 WHERE LIKE 컬럼명1 LIKE ... OR 컬럼명2 LIKE ... ;

 

 

NULL 값

  • NULL이랑 해당 컬럼의 값이 없다는 의미 (해당 컬럼이 NULL값을 허용하는 경우)
  • NULL값을 가지고 있는 컬럼을 검색하려면 IS NULL
    • = NULL 로 검색하면 안 됨
  • NULL이 아닌 값을 가지고 있는 컬럼을 검색하려면 IS NOT NULL

 

 

NULL 함수

  • 숫자 컬럼을 연산해야할 때 NULL을 처리해주는 함수이다.
  • NULL값이 나오면 다른 값(주로 0)으로 대체해서 계산에 문제가 없도록 처리해준다.
  • NULL 함수
    • MySQL: IFNULL, COALESCE
    • SQL Server: ISNULL
    • Oracle: NVL
  • 숫자연산/집합함수(예: SUM())의 경우는 NULL 처리가 내장되어 있으므로 에러가 나지 않지만, 직접 함수나 쿼리에 넣는 경우는 NULL 함수를 사용해야 에러가 나지않는다.
SELECT AVG(LifeExpectancy) FROM country;
SELECT AVG(IFNULL(LifeExpectancy, 0)) FROM country;

 

 

GROUP BY

  • 집합함수와 같이 사용하여 그룹별 연산을 적용한다.
SELECT 컬럼명, 집합함수명(컬럼명) FROM 테이블명 GROUP BY 컬럼명;

 

  • GROUP BY 연산과 일반 쿼리의 차이점
    • GROUP BY는 아래 쿼리들의 합이다.
      world DB의 city 중 국가 코드가 'KOR'인 도시의 숫자를 출력하시오.
      world DB의 city 중 국가 코드가 'JPN'인 도시의 숫자를 출력하시오.
      world DB의 city 중 국가 코드가 'USA'인 도시의 숫자를 출력하시오.
    • 모든 국가별 도시 숫자를 한꺼번에 출력해주는 면에서 개별 쿼리와 차이가 난다.
    • 만약 개별 국가들의 도시 숫자를 원하는 것인지, 모든 국가들의 도시 숫자를 원하는 것인지 구분해서 사용해야 한다.

 

 

HAVING

  • HAVING은 GROUP BY와 함께 쓰이며, 집합연산에 WHERE 조건절 대체로 사용한다.
--예시
SELECT CountryCode, COUNT(CountryCode) FROM city GROUP BY CountryCode HAVING COUNT(CountryCode) >= 70;

 

 

 

 

 

(출처: 실습과 함께하는! 데이터베이스 MySQL편)

반응형