MySQL에서 테이블에 저장된 데이터 중 단 하나의 행(row)만 조회하고 싶다면, WHERE 절과 기본 키(Primary Key)를 활용하는 것이 가장 확실하고 효율적인 방법입니다. 기본 키는 각 행을 고유하게 식별하므로, 이를 조건으로 사용하면 정확히 한 개의 레코드만 빠르게 가져올 수 있습니다.
기본 문법
기본 키 열의 값이 특정 값과 일치하는 행을 선택하려면 아래와 같은 형식의 쿼리를 사용합니다.
SELECT * FROM yourTableName WHERE yourPrimaryKeyColumnName = someValue;
예제 테이블 생성하기
문법을 실제로 이해하기 위해 먼저 예제용 테이블을 만들어 보겠습니다. 아래 쿼리는 학생 정보를 저장하는 테이블을 생성합니다.
mysql> create table selectWithPrimaryKey
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Name varchar(20),
-> Age int,
-> Marks int,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.78 sec)여기서 Id 열은 자동 증가(AUTO_INCREMENT)되며, 기본 키로 지정되어 있어 각 행을 고유하게 구분할 수 있습니다.
데이터 삽입하기
INSERT 명령어를 사용해 테이블에 여러 개의 레코드를 추가합니다.
mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('Larry',24,98);
Query OK, 1 row affected (0.15 sec)
mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('John',23,89);
Query OK, 1 row affected (0.21 sec)
mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('Mike',21,85);
Query OK, 1 row affected (0.18 sec)
mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('Sam',26,56);
Query OK, 1 row affected (0.18 sec)
mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('Carol',21,59);
Query OK, 1 row affected (0.18 sec)
mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('Bob',20,91);
Query OK, 1 row affected (0.21 sec)
mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('David',28,93);
Query OK, 1 row affected (0.15 sec)전체 데이터 확인하기
먼저 SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from selectWithPrimaryKey;
실행 결과는 다음과 같습니다.
+----+-------+------+-------+ | Id | Name | Age | Marks | +----+-------+------+-------+ | 1 | Larry | 24 | 98 | | 2 | John | 23 | 89 | | 3 | Mike | 21 | 85 | | 4 | Sam | 26 | 56 | | 5 | Carol | 21 | 59 | | 6 | Bob | 20 | 91 | | 7 | David | 28 | 93 | +----+-------+------+-------+ 7 rows in set (0.00 sec)
현재 테이블에는 총 7개의 행이 저장되어 있습니다.
단일 행 조회하기
이제 WHERE 절에 기본 키 조건을 지정하여 특정 한 개의 행만 조회해 보겠습니다. 예를 들어 Id가 6인 학생(Bob)의 정보만 가져오려면 다음과 같이 작성합니다.
mysql> select *from selectWithPrimaryKey where Id = 6;
실행 결과는 다음과 같습니다.
+----+------+------+-------+ | Id | Name | Age | Marks | +----+------+------+-------+ | 6 | Bob | 20 | 91 | +----+------+------+-------+ 1 row in set (0.00 sec)
정리
WHERE 절에 기본 키 값을 조건으로 지정하면 해당하는 단일 행만 정확하게 조회할 수 있습니다. 기본 키에는 인덱스가 자동으로 적용되기 때문에, 대량의 데이터가 있는 테이블에서도 매우 빠른 속도로 원하는 레코드를 찾아낼 수 있다는 점이 큰 장점입니다.