MySQL에서 하나의 쿼리에 여러 개의 AND 조건을 적용하면, 지정된 모든 조건을 동시에 만족하는 레코드만 조회할 수 있습니다. 이는 복잡한 데이터 필터링에 매우 유용한 기능입니다.
기본 문법
여러 개의 AND 조건을 사용하는 기본 문법은 다음과 같습니다.
SELECT * FROM yourTableName WHERE yourColumnName1 = yourValue1 AND yourColumnName2 = yourValue2 AND yourColumnName3 = yourValue3;
예제 테이블 생성
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> CREATE TABLE DemoTable
(
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName varchar(20),
StudentAge int,
StudentCountryName varchar(40)
);
Query OK, 0 rows affected (0.59 sec)다음으로 INSERT 명령을 사용하여 테이블에 샘플 데이터를 입력합니다.
mysql> INSERT INTO DemoTable(StudentName, StudentAge, StudentCountryName) VALUES('John', 23, 'US');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable(StudentName, StudentAge, StudentCountryName) VALUES('Carol', 21, 'UK');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable(StudentName, StudentAge, StudentCountryName) VALUES('John', 21, 'US');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable(StudentName, StudentAge, StudentCountryName) VALUES('John', 21, 'AUS');
Query OK, 1 row affected (0.14 sec)저장된 전체 데이터 확인
SELECT 문을 사용하여 테이블에 저장된 모든 레코드를 확인해 보겠습니다.
mysql> SELECT * FROM DemoTable;
출력 결과
+-----------+-------------+------------+--------------------+ | StudentId | StudentName | StudentAge | StudentCountryName | +-----------+-------------+------------+--------------------+ | 1 | John | 23 | US | | 2 | Carol | 21 | UK | | 3 | John | 21 | US | | 4 | John | 21 | AUS | +-----------+-------------+------------+--------------------+ 4 rows in set (0.00 sec)
여러 AND 조건을 적용한 쿼리 실행
이제 학생 이름이 'John', 나이가 21살, 국가가 'AUS'인 세 가지 조건을 모두 만족하는 레코드를 조회하는 쿼리를 실행해 보겠습니다.
mysql> SELECT * FROM DemoTable WHERE StudentName = "John" AND StudentAge = 21 AND StudentCountryName = "AUS";
출력 결과
+-----------+-------------+------------+--------------------+ | StudentId | StudentName | StudentAge | StudentCountryName | +-----------+-------------+------------+--------------------+ | 4 | John | 21 | AUS | +-----------+-------------+------------+--------------------+ 1 row in set (0.00 sec)
결과 분석
위 출력 결과를 보면 세 가지 조건(이름 'John', 나이 21, 국가 'AUS')을 모두 충족하는 레코드는 StudentId가 4인 행뿐입니다.
참고로 같은 이름과 나이를 가진 StudentId 3번 레코드는 국가가 'US'이므로 조건에서 제외되었습니다. 이처럼 AND 연산자는 나열된 모든 조건이 참일 때만 해당 행을 반환하며, 단 하나의 조건이라도 만족하지 않으면 결과에서 제외됩니다.