MySQL - COALESCE() 함수
안녕하세요, 데이터베이스 열정가 여러분! 오늘 우리는 MySQL에서 정말 유용한 함수인 COALESCE()에 대해 깊이 다루어보겠습니다. COALESCE()에 대해 들어본 적이 없다면 걱정 마세요 - 이 튜토리얼이 끝나면 프로처럼 사용할 수 있을 것입니다!
COALESCE() 함수는 무엇인가요?
COALESCE() 함수는 MySQL 세계의 슈퍼 헴으로, 그 슈퍼 힘은 무엇일까요? 리스트에서 첫 번째 비 NULL 값을 찾는 것입니다. 당신이 차 열쇠를 찾고 있고, 그것이 있을 수 있는 장소의 리스트가 있다고 상상해보세요. COALESCE() 함수는 각 장소를 차례대로 확인한 후, 열쇠를 찾으면 그 값을 반환하고 더 이상 검색을 멈춥니다.
문법
COALESCE(value1, value2, ..., valueN)
이 함수는 임의의 개수의 인수를 받아들여 첫 번째 비 NULL 값을 반환합니다. 모든 값이 NULL이라면 NULL을 반환합니다.
COALESCE()의 기본 사용법
간단한 예제로 시작해보겠습니다:
SELECT COALESCE(NULL, 1, 2, 'three');
결과: 1
이 경우 COALESCE()는 왼쪽에서 오른쪽으로 각 값을 확인합니다:
- 먼저 NULL을 보고 지나갑니다.
- 그런 다음 1을 발견하고, 이는 NULL이 아니므로 그것을 반환하고 멈춥니다.
2이나 'three'에 도달하지 않습니다. 왜냐하면 더 이전에 비 NULL 값을 찾았기 때문입니다.
실제 사용 사례
시나리오 1: 기본값
사용자 프로필 시스템을 구축 중이라고 상상해보세요. 일부 사용자는 모든 정보를 제공하지 않을 수 있습니다. COALESCE()를 어떻게 사용할 수 있을까요?
SELECT
username,
COALESCE(full_name, username) AS display_name,
COALESCE(email, 'No email provided') AS contact
FROM users;
이 쿼리는 두 가지 지혜로운 일을 합니다:
-
full_name
이 NULL이라면username
을 표시 이름으로 사용합니다. -
email
이 NULL이라면 'No email provided'를 표시합니다.
시나리오 2: 여러 대체 옵션
온라인 상점을 운영하고 제품 정보를 표시하고 싶다면 어떻게 할까요?
SELECT
product_name,
COALESCE(sale_price, regular_price, 'Price not available') AS displayed_price
FROM products;
이 쿼리는 다음을 수행합니다:
-
sale_price
가 있는지 확인합니다. - 그렇지 않다면
regular_price
를 확인합니다. - 두 가지 모두 NULL이라면 'Price not available'를 표시합니다.
COALESCE()와 계산
COALESCE()는 단순한 값뿐만 아니라 계산에도 사용할 수 있습니다!
SELECT
employee_name,
COALESCE(salary * 1.1, base_rate * 40 * 52) AS yearly_income
FROM employees;
이 쿼리는 다음을 수행합니다:
- 급여에 10% 인상을 계산합니다.
-
salary
가 NULL이라면 시간당 급여를 기준으로 연간 수입을 계산합니다 (주 40시간, 연 52주로 가정).
COALESCE()를 WHERE 절에서 사용
COALESCE()는 데이터를 필터링하는 데 WHERE 절에서도 사용할 수 있습니다:
SELECT * FROM orders
WHERE COALESCE(shipping_date, order_date) < '2023-01-01';
이 쿼리는 배송 날짜나 주문 날짜가 2023년 1월 1일 이전인 모든 주문을 찾습니다.
COALESCE()와 IFNULL()
MySQL에는 IFNULL() 함수도 있습니다. 이는 비슷하지만 두 개의 인수에 제한됩니다:
SELECT
IFNULL(column1, 'Default') AS result1,
COALESCE(column1, column2, column3, 'Default') AS result2
FROM my_table;
COALESCE()는 여러 대체 옵션을 처리할 수 있어 더 유연합니다.
흔한 실수와 팁
- 순서는 중요합니다: 선호하는 값들을 먼저 넣으세요.
- 유형 일관성: 깨끗한 결과를 위해 데이터 유형을 일관되게 유지하세요.
- 성능: COALESCE()를 과도하게 사용하면 큰 데이터셋에서 쿼리 성능에 영향을 줄 수 있습니다.
실습 문제
이해를 더욱 확고히 하기 위해 몇 가지 연습 문제를 해결해보겠습니다:
-
students
테이블을 생성하고,id
,name
,math_score
,science_score
,history_score
열을 포함합니다. - 몇 가지 데이터를 삽입하고, 일부 점수를 NULL로 두십시오.
- 각 학생의 모든 과목 중 가장 높은 점수를 찾는 쿼리를 작성하세요.
- COALESCE()를 사용하여 NULL 점수를 'Not attempted'로 표시하는 쿼리를 작성하세요.
결론
COALESCE() 함수는 MySQL에서 NULL 값을 부드럽게 처리하고 더 견고한 쿼리를 만드는 데 유용한 도구입니다. 첫 번째 비 NULL 값을 찾는 것이 목적입니다. 그리고 당신이 열쇠를 가장 가능성이 높은 장소에서 먼저 찾는 것처럼!
MySQL 여정을 계속하면서 COALESCE()가 당신의 도구셋에서 필수적인 부분이 될 것입니다. 계속 연습하고, 당신의 쿼리가 항상 원하는 결과를 반환하길 바랍니다!
행복한 코딩과, 항상 원하는 결과를 얻길 바랍니다!
Credits: Image by storyset