MySQL

LIKE 검색,NULL,GROUPBY/HAVING

yougeun 2022. 11. 22. 14:08
728x90

LIKE 검색

정확한 키워드를 모를 경우 일부만으로 검색하는 방법

와일드카드(%,_)를 사용하여 패턴매칭

%:0~n글자

_: 1글자

LIKE검색은 매칭하기 위해 DMBS에 부담이 많으므로 논리조건자와 중복해서 사용하지 않는게 좋다.

select * from city where name like "K%";

도시 이름이 K로 시작하는 도시들 출력

select * from city where name like "%K";

도시 이름이 K로 끝나는 도시들 출력

select * from city where name like "%K%";

도시이름에 K가 들어가는 도시 출력

select * from city where name like "K____";

 

도시이름이 K로 시작하고 5글자인 도시 출력

NULL

NULL이란 해당 컬럼의 값이 없다는 의미를 가진다.

NULL값을 가지고 있는 컬럼을 검색하려면 is NULL

NULL이 아닌 값을 가지고 있는 컬럼을 검색하려면 is not NULL

 

select Name,LifeExpectancy from country where LifeExpectancy is NULL;

기대수명이 NULL값인 나라의 이름과 기대수명 출력

 

NULL함수

숫자 컬럼을 연산 해야 할 때 NULL을 처리해주는 함수

NULL값이 나오면 다른값으로 대체해서 계산에 문제 없도록 처리

IFNULL/COALESCE 함수 사용

숫자연산/집합함수의 경우는 처리가 내장되어 있다.

직접 함수나 쿼리에 넣는 경우는 NULL함수를 사용해야 한다.

select avg(LifeExpectancy) from country;

평균 기대수명(NULL X)

select avg(IFNULL(LifeExpectancy,0)) from country;

 

평균 기대 수명(NULL->0)

GROUP BY,HAVING

집합 함수와 같이 사용해 그룹별 연산을 적용한다.

집합 함수(sum,avg,count 등)

Having은 집합연산에 WHERE 조건절 대체로 사용한다.

 

select CountryCode,count(CountryCode) from city group by CountryCode;

나라코드 별 도시 개수

select CountryCode,count(CountryCode) from city group by CountryCode having count(CountryCode)>=70;

도시 개수가 70개 이상인 나라

728x90