본문 바로가기
Database/MySQL

[Database / MySQL] - MySQL 제어문 (case / if) 문법 정리

by nam_ji 2024. 6. 11.

MySQL 제어문 정리

  • 기본적으로 제어문은 무언가 조회하는데 보다는, 새로운 필드를 생성해서 뷰로 만드는데 목적을 둡니다.
  • 새로운 필드를 생성하고 각 필드 값을 제어문으로 조건을 줘서 값을 결정하는 방식입니다.

CASE문

  • case는 switch 같이 쓸 수 있고, if문 같이 쓸 수 있습니다.

1. SWITCH

  • value와 compare_value 값이 같으면, then 절을 반환합니다.
  • 만약 서로 값이 같지 않으면, else 절을 반환합니다. 이때 else 절이 없으면 null을 반환합니다.
  • 작성 방법
    CASE value
    	WHEN compare_value THEN '반환 값'
    	WHEN compare_value THEN '반환 값'
    	ELSE 'WHEN 조건에 해당 안되는 경우 반환 값'
    END

2. IF

  • when 뒤의 condition의 논리값이 참이면, then 절의 result 값을 반환합니다.
  • 만약 논리값이 거짓이라면, else 절의 result 값을 반환합니다. 이때 else 절이 없으면, null을 반환합니다.
  • 작성 방법
    CASE
      WHEN [condition] THEN result
      WHEN [condition] THEN result
      ELSE result
    END



IF문

1. IF()

  • if() 함수는 첫 번째 인수로 전달받은 표현식의 논리값에 따라 다른 값을 반환합니다.
  • 작성 방법
    SELECT IF(조건, '참일 때', '거짓일 때');



2. IFNULL()

  • ifnull() 함수는 첫 번째 인수로 전달받은 값이 null인지 아닌지를 검사하여, 해당 필드의 값이 null을 반환할 때, 지정한 값으로 대체하여 출력해줍니다.
  • 작성 방법
    SELECT IFNULL(column_name, '대체할 값') FROM [table_name];
    
    SELECT IFNULL(column_name, IFNULL(column_name, '대체할 값')) FROM [table_name];



 

3. IF EXISTS

  • 만약 존재하면 쿼리 처리
  • 작성 방법
    DROP DATABASE IF EXISTS Hotel; -- 에러 방지를 위해 if문 추가
    DROP TABLE IF EXISTS Reservation;
    
    Create Table IF NOT EXISTS new_table like old_table -- (new_table 이 없으면 복사)