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
를 성공적으로 구현했습니다.