MySQL에서 특정 열(column)에 원하는 값이 존재하는지 확인하려면 WHERE 절을 활용한 SELECT 문을 사용하면 됩니다. 이번 글에서는 테이블 생성부터 데이터 삽입, 그리고 값 존재 여부 확인까지 전체 과정을 예제와 함께 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable807(
ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientName varchar(100),
ClientCountryName varchar(100)
);
Query OK, 0 rows affected (0.64 sec)위 쿼리는 고객 ID(ClientId)를 기본 키로 설정하고, 고객 이름과 국가명을 저장할 수 있는 테이블을 만듭니다.
2. 데이터 삽입하기
INSERT 문을 사용하여 테이블에 샘플 레코드를 추가합니다.
mysql> insert into DemoTable807(ClientName,ClientCountryName) values('Chris','UK');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable807(ClientName,ClientCountryName) values('David','AUS');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable807(ClientName,ClientCountryName) values('Robert','US');
Query OK, 1 row affected (0.74 sec)
mysql> insert into DemoTable807(ClientName,ClientCountryName) values('Mike','ENG');
Query OK, 1 row affected (0.14 sec)3. 전체 데이터 조회하기
SELECT 문으로 테이블에 저장된 모든 레코드를 확인합니다.
mysql> select *from DemoTable807;
실행 결과는 다음과 같습니다.
+----------+------------+-------------------+ | ClientId | ClientName | ClientCountryName | +----------+------------+-------------------+ | 1 | Chris | UK | | 2 | David | AUS | | 3 | Robert | US | | 4 | Mike | ENG | +----------+------------+-------------------+ 4 rows in set (0.00 sec)
4. 특정 값의 존재 여부 확인하기
MySQL 테이블의 특정 열에 값이 존재하는지 확인하는 핵심 쿼리는 다음과 같습니다.
mysql> select *from DemoTable807 where ClientCountryName='US';
실행 결과는 다음과 같습니다.
+----------+------------+-------------------+ | ClientId | ClientName | ClientCountryName | +----------+------------+-------------------+ | 3 | Robert | US | +----------+------------+-------------------+ 1 row in set (0.00 sec)
WHERE 절에 조건(ClientCountryName='US')을 지정하면 해당 조건과 일치하는 행만 반환됩니다. 결과가 한 건이라도 조회되면 값이 존재한다는 의미이며, 아무런 행도 반환되지 않으면 해당 값은 존재하지 않는 것입니다.
참고: 값 존재 여부만 빠르게 확인하는 방법
전체 행 데이터가 필요 없고 존재 여부만 판단하고 싶다면 COUNT 함수나 EXISTS를 사용하는 것이 더 효율적입니다.
mysql> select exists(select 1 from DemoTable807 where ClientCountryName='US') as isExist;
결과가 1이면 값이 존재하고, 0이면 존재하지 않습니다. 대용량 테이블에서는 불필요한 데이터를 모두 읽지 않으므로 성능 면에서 유리합니다.