MySQL에서 'SELECT 1'은 무엇을 의미할까요?
MySQL에서 SELECT 1 구문은 테이블의 실제 데이터를 조회하는 것이 아니라, 각 레코드(행)마다 상수 값인 1을 반환하는 쿼리입니다. 즉, 테이블에 레코드가 몇 개 있는지에 따라 결과의 행 수가 결정되며, 모든 행에는 단순히 숫자 1만 출력됩니다.
예를 들어 어떤 테이블에 레코드가 4개 있다면, SELECT 1 쿼리는 숫자 1을 네 번 반환합니다. 레코드가 N개라면 1을 N번 반환하는 것이죠.
실제 예제를 통해 살펴보겠습니다. 먼저 CREATE 명령어로 테이블을 생성합니다.
mysql> create table StudentTable
-> (
-> id int,
-> name varchar(100)
-> );
Query OK, 0 rows affected (0.51 sec)
레코드 삽입하기
생성한 테이블에 샘플 데이터를 삽입합니다.
mysql> insert into StudentTable values(1,'John'),(2,'Carol'),(3,'Smith'),(4,'Bob');
Query OK, 4 rows affected (0.21 sec)
Records: 4 Duplicates: 0 Warnings: 0
전체 레코드를 조회하면 다음과 같습니다.
mysql> select *from StudentTable;
실행 결과는 아래와 같습니다.
+------+-------+
| id | name |
+------+-------+
| 1 | John |
| 2 | Carol |
| 3 | Smith |
| 4 | Bob |
+------+-------+
4 rows in set (0.00 sec)
'SELECT 1' 쿼리 실행하기
이제 SELECT 1 쿼리를 실행해 보겠습니다.
mysql> select 1 from StudentTable;
실행 결과는 다음과 같습니다.
+---+
| 1 |
+---+
| 1 |
| 1 |
| 1 |
| 1 |
+---+
4 rows in set (0.00 sec)
위 결과에서 볼 수 있듯이, 테이블에 레코드가 4개 있으므로 숫자 1이 네 번 반환되었습니다. 만약 레코드가 5개였다면 1이 다섯 번 출력되었을 것입니다.
참고: 테이블에 레코드가 N개 있으면, SELECT 1은 숫자 1을 N번 반환합니다.
SELECT 1은 언제 사용될까요?
SELECT 1은 실제 컬럼 값이 필요 없는 경우에 주로 활용됩니다. 대표적인 예는 EXISTS 서브쿼리입니다. EXISTS는 조건에 맞는 행의 존재 여부만 확인하면 되기 때문에, 특정 컬럼을 조회하는 것보다 SELECT 1을 사용하는 것이 의미상 더 명확하고 관례적으로 널리 쓰입니다.
mysql> select name from StudentTable
-> where exists (select 1 from StudentTable where id = 3);
또한 테이블에 데이터가 존재하는지 빠르게 확인하거나, 조건 검증용 쿼리를 작성할 때도 유용하게 사용할 수 있습니다.