MySQL 데이터베이스에서 IF EXISTS 사용

Preet Sanghavi 2023년1월30일
  1. MySQL에서 EXISTS 연산자의 기본 사용법
  2. MySQL에서 IF EXISTS 연산자 사용
MySQL 데이터베이스에서 IF EXISTS 사용

이 튜토리얼에서는 MySQL에서 IF EXISTS 문을 탐색하는 것을 목표로 합니다.

그러나 시작하기 전에 작업할 더미 데이터 세트를 만듭니다. 여기에서 몇 개의 행과 함께 student_details 테이블을 만듭니다.

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName) 
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Geo","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

위의 쿼리는 학생의 이름과 성이 포함된 행과 함께 테이블을 생성합니다. 데이터의 항목을 보기 위해 다음 코드를 사용합니다.

SELECT * FROM student_details;

앞서 언급한 코드는 다음과 같은 출력을 제공합니다.

stu_id	stu_firstName	stu_lastName
1	      Preet	        Sanghavi
2	      Rich	        John
3	      Veron	        Brow
4	      Geo	        Jos
5	      Hash	        Shah
6	      Sachin	    Parker
7	      David	        Miller

MySQL에서 EXISTS 연산자의 기본 사용법

MySQL의 EXISTS 조건은 일반적으로 충족되어야 하는 조건으로 구성된 하위 쿼리와 함께 사용됩니다. 이 조건이 충족되면 하위 쿼리는 최소 하나의 행을 반환합니다. 이 방법은 명령문을 DELETE, SELECT, INSERT 또는 UPDATE하는 데 사용할 수 있습니다.

-- Here we select columns from the table based on a certain condition
SELECT column_name  
FROM table_name  
WHERE EXISTS (  
    SELECT column_name   
    FROM table_name   
    WHERE condition  
);  

여기서 condition은 특정 열에서 행을 선택할 때의 필터링 조건을 나타냅니다.

stu_id = 4인 stu_firstName 열에 학생이 있는지 확인하기 위해 다음 코드를 사용합니다.

-- Here we save the output of the code as RESULT
SELECT EXISTS(SELECT * from student_details WHERE stu_id=4) as RESULT;  

앞서 언급한 코드는 다음과 같은 출력을 제공합니다.

RESULT
1

위의 코드 블록에서 1은 부울 값을 나타내며 stu_id = 4인 학생이 있음을 나타냅니다.

MySQL에서 IF EXISTS 연산자 사용

때때로 우리는 테이블에서 특정 값의 존재를 확인하고 해당 조건의 존재를 기반으로 출력을 변경하고자 합니다. 이 작업의 구문은 다음과 같습니다.

SELECT IF( EXISTS(
             SELECT column_name
             FROM table_name
             WHERE condition), 1, 0)

여기에서 IF 문이 True를 반환하는 경우 쿼리의 출력은 1입니다. 그렇지 않으면 0을 반환합니다.

테이블에 stu_id=4인 학생이 있는 경우 Yes, exists를 반환하는 쿼리를 작성해 보겠습니다. 그렇지 않으면 No, does not exist를 반환하려고 합니다. 이 작업을 수행하려면 아래 코드를 살펴보십시오.

SELECT IF( EXISTS(
             SELECT stu_firstName
             FROM student_details
             WHERE stu_id = 4), 'Yes, exists', 'No, does not exist') as RESULT;

앞서 언급한 코드는 다음과 같은 출력을 제공합니다.

RESULT
Yes, exists

이제 stu_id = 11인 학생을 찾아보겠습니다. 이 작업은 다음 쿼리로 수행할 수 있습니다.

SELECT IF( EXISTS(
             SELECT stu_firstName
             FROM student_details
             WHERE stu_id = 11), 'Yes, exists', 'No, does not exist') as RESULT;

참고: ALIAS RESULT를 사용하여 출력 코드 블록에 출력을 표시합니다.

앞서 언급한 코드는 다음과 같은 출력을 제공합니다.

RESULT
No, does not exist

참고: 일반적으로 MySQL에서 EXISTS 메서드를 사용하는 SQL 쿼리는 하위 쿼리가 외부 쿼리 테이블의 모든 항목에 대해 RE-RUN이기 때문에 매우 느립니다. EXISTS 조건을 사용하지 않고 대부분의 쿼리를 표현하는 더 빠르고 효율적인 방법이 있습니다.

따라서 MySQL에서 IF EXISTS를 성공적으로 구현했습니다.

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

관련 문장 - MySQL Query