작성
·
36
0
ifnull(인자1, 인자2)
은 인자1이 null이면 인자2를 값으로 사용한다고 설명하셨는데요.
이것을 보고 생각나는 것이 테이블 생성시에 필드에 지정하는 default
가 생각나는데요.
이 default도 필드 값이 null이면 지정한 default값을 사용하는데 그렇다면 ifnull()과 default의 차이점은 뭔가요?
당장 제 수준에서 생각나는건 ifnull()은 매 쿼리 작성할때 기본값을 유연하게 변경할 수 있다? 이정도일 것 같은데
이것말고 특별한 차이점 같은 것이 있을까요?
답변 1
1
안녕하세요. yoon6669님, 공식 서포터즈 y2gcoder입니다.
제가 생각했을 때 IFNULL()과 DEFAULT은 사용하는 레벨에서 차이가 나는게 중요하다고 생각합니다.
DEFAULT는 미리 스키마 레벨에서 데이터 저장 시점에서의 기본값을 보장하기 위한 것이고, IFNULL()은 쿼리 레벨에서 데이터 조회나 계산 시의 대체값을 지정하기 위함입니다.
그래서 DEFAULT는 저장공간에 NULL이 발생하지 않게 하는 효과(데이터 정합성에 도움)가 있고, IFNULL()은 쿼리 시점의 대체값 처리기 때문에 저장된 데이터 자체는 NULL이라는 점이 가장 큰 차이라고 생각합니다.
부수적으로는 IFNULL()은 쿼리마다 일일이 사용해야 한다는 점, DEFAULT()는 테이블 생성 시 조건으로 들어가있어 한 번만 사용해도 된다는 점도 차이가 있겠습니다.
감사합니다.