MySQL에서는 WHERE 절을 사용하면 특정 열(column)의 값이 주어진 조건과 일치하는 여러 행(row)을 한 번에 손쉽게 조회할 수 있습니다. 이 글에서는 예제 테이블을 직접 만들고, 'Java'라는 과목명을 가진 학생 데이터를 모두 가져오는 과정을 단계별로 살펴보겠습니다.
1단계: 샘플 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다. StudentId는 자동 증가(AUTO_INCREMENT)되는 기본 키로 설정했습니다.
mysql> create table DemoTable1528
-> (
-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName varchar(20),
-> StudentSubject varchar(20)
-> );
Query OK, 0 rows affected (0.53 sec)
2단계: INSERT로 데이터 삽입
INSERT 명령을 사용해 학생 이름과 수강 과목 데이터를 차례로 추가합니다.
mysql> insert into DemoTable1528(StudentName,StudentSubject) values('Chris','MongoDB');
Query OK, 1 row affected (0.38 sec)
mysql> insert into DemoTable1528(StudentName,StudentSubject) values('Bob','MySQL');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1528(StudentName,StudentSubject) values('David','Java');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1528(StudentName,StudentSubject) values('Carol','C');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1528(StudentName,StudentSubject) values('Sam','Java');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable1528(StudentName,StudentSubject) values('Mike','Java');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1528(StudentName,StudentSubject) values('Adam','MySQL');
Query OK, 1 row affected (0.13 sec)
3단계: 전체 레코드 확인
SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable1528;
실행 결과는 다음과 같습니다.
+-----------+-------------+----------------+ | StudentId | StudentName | StudentSubject | +-----------+-------------+----------------+ | 1 | Chris | MongoDB | | 2 | Bob | MySQL | | 3 | David | Java | | 4 | Carol | C | | 5 | Sam | Java | | 6 | Mike | Java | | 7 | Adam | MySQL | +-----------+-------------+----------------+ 7 rows in set (0.00 sec)
4단계: WHERE 절로 특정 값과 일치하는 여러 행 조회하기
특정 열의 값이 주어진 조건과 일치하는 여러 행을 가져오려면 SELECT 문에 WHERE 절을 추가하면 됩니다. 여기서는 StudentSubject 열의 값이 'Java'인 행만 조회하는 쿼리를 실행합니다.
mysql> select StudentId,StudentName,StudentSubject from DemoTable1528 where StudentSubject='Java';
위 쿼리의 실행 결과는 다음과 같습니다.
+-----------+-------------+----------------+ | StudentId | StudentName | StudentSubject | +-----------+-------------+----------------+ | 3 | David | Java | | 5 | Sam | Java | | 6 | Mike | Java | +-----------+-------------+----------------+ 3 rows in set (0.00 sec)
결과를 보면 'Java'를 수강하는 David, Sam, Mike 세 명의 학생 데이터가 정확히 반환된 것을 확인할 수 있습니다. WHERE 절은 조건과 일치하는 모든 행을 자동으로 찾아주기 때문에, 조건을 만족하는 행이 몇 개든 한 번의 쿼리로 모두 가져올 수 있습니다.
추가 팁: 더 유연한 조건 검색
- 부분 일치 검색: 값의 일부만 알고 있다면
LIKE '%Java%'처럼 와일드카드를 활용할 수 있습니다. - 여러 값 동시 조회: 'Java'와 'MySQL'처럼 두 개 이상의 값을 조건으로 지정하려면
WHERE StudentSubject IN ('Java','MySQL')구문을 사용하면 편리합니다. - 성능 최적화: 조건으로 자주 사용하는 열에는 인덱스를 생성하면 대량의 데이터에서도 조회 속도를 크게 향상시킬 수 있습니다.
이처럼 WHERE 절 하나만으로도 원하는 조건에 맞는 여러 행을 간단하고 효율적으로 조회할 수 있습니다.