Dev/Database

[Oracle] SELECT 1 FROM 의미, SELECT 1 의미, SELECT 1 FROM table 의 의미와 사용 예시

알굼 2024. 7. 10. 14:36
반응형

1. 개요

"SELECT 1 FROM table" 구문은 주어진 테이블의 각 행에 대해 숫자 1을 반환한다.
만약 테이블에 N개의 행이 있다면, 결과로 N개의 1이 반환된다.

ex) users라는 3개의 행을 가지는 데이터베이스 테이블이 있다고 가정해보자.

id name age
1 Alice 30
2 Bob 25
3 Carol 28

이 테이블이 있을 때 "SELECT 1 FROM users" 구문을 실행하면 다음과 같은 결과가 반환된다.

1
1
1
1
 

2. 시사점

  • SQL에서 1은 TRUE를 의미하므로,  "SELECT 1 FROM ..." 형식의 구문은 논리식으로 사용될 수 있다.

 

3. 사용 예시 - EXISTS 조건

  • 보통 이 구문은 WHERE 절의 (NOT) EXISTS 안에 있는 서브쿼리로 사용된다.
-- 예시 쿼리 1: 특정 사용자가 존재하는지 확인
SELECT
    1
FROM
    users
WHERE
    id = 1;

-- 예시 쿼리 2: 데이터의 존재 유무에 따라 동작
SELECT
    *
FROM
    orders
WHERE
    EXISTS (
        SELECT
            1
        FROM
            users
        WHERE
            users.id = orders.user_id
    );

 

첫 번째 예시 쿼리에서, 특정 사용자의 존재 여부를 확인하기 위해 사용할 수 있다. id가 1인 사용자가 존재하면 1을 반환한다. 두 번째 예시 쿼리에서, orders 테이블의 각 주문이 users 테이블의 사용자에 의해서 이루어졌는지 확인하기 위해 사용할 수 있다. EXISTS 조건문은 orders 테이블의 각 행에 대해 users.id = orders.user_id 조건을 만족하는 행이 존재하면 TRUE를 반환한다. 이때 "SELECT 1 FROM users" 로 존재 여부만 확인하므로, 더 간단하게 쓸 수 있다.

4. 장점

  • 특정 조건을 만족하는 데이터가 존재하는지 여부만 중요할 때, "SELECT * FROM ..." 대신 "SELECT 1 FROM ..."을 사용하면 더 간단하다.
  • 불필요한 데이터를 모두 조회하지 않고 존재 여부만 판단할 수 있어 효율적이다.
반응형