Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL WHERE 절에서 여러 조건을 사용해 데이터 업데이트하는 방법

MySQL WHERE 절에서 여러 값으로 업데이트하기

MySQL에서 UPDATE 문을 실행할 때 WHERE 절에 여러 조건을 조합하면, 원하는 행만 정확하게 골라서 수정할 수 있습니다. 이 글에서는 AND 연산자를 활용해 두 개 이상의 조건을 동시에 만족하는 레코드를 업데이트하는 방법을 예제와 함께 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
    -> (
    -> Id int,
    -> Name varchar(20),
    -> Age int,
    -> CountryName varchar(10)
    -> );
Query OK, 0 rows affected (0.81 sec)

2. 샘플 데이터 삽입하기

INSERT 명령어를 사용해 테이블에 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable values(100,'Chris',34,'AUS');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values(101,'Chris',31,'US');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values(102,'David',25,'UK');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(103,'Carol',28,'AUS');
Query OK, 1 row affected (0.21 sec)

3. 현재 저장된 데이터 확인하기

SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.

mysql> select * from DemoTable;

실행 결과는 다음과 같습니다.

+------+-------+------+-------------+
| Id   | Name  | Age  | CountryName |
+------+-------+------+-------------+
|  100 | Chris |   34 | AUS         |
|  101 | Chris |   31 | US          |
|  102 | David |   25 | UK          |
|  103 | Carol |   28 | AUS         |
+------+-------+------+-------------+
4 rows in set (0.00 sec)

4. WHERE 절에 여러 조건을 넣어 업데이트하기

이제 핵심인 업데이트 쿼리입니다. 아래 예제에서는 Age가 31이면서 CountryName이 'US'인 행만 골라서 Name 값을 'Robert'로 변경합니다. 두 조건은 AND 연산자로 연결되며, 두 조건을 모두 만족하는 레코드만 업데이트됩니다.

mysql> update DemoTable
    -> set Name='Robert'
    -> where Age=31 and CountryName='US';
Query OK, 1 row affected (0.44 sec)
Rows matched: 1 Changed: 1 Warnings: 0

실행 결과 메시지를 보면 일치한 행(Rows matched)과 실제 변경된 행(Changed)이 각각 1개임을 확인할 수 있습니다.

5. 업데이트 결과 검증하기

테이블을 다시 조회해 변경 사항이 제대로 반영되었는지 확인합니다.

mysql> select * from DemoTable;

결과는 다음과 같습니다.

+------+--------+------+-------------+
| Id   | Name   | Age  | CountryName |
+------+--------+------+-------------+
|  100 | Chris  |   34 | AUS         |
|  101 | Robert |   31 | US          |
|  102 | David  |   25 | UK          |
|  103 | Carol  |   28 | AUS         |
+------+--------+------+-------------+
4 rows in set (0.00 sec)

Id가 101인 레코드의 Name이 'Chris'에서 'Robert'로 변경된 것을 확인할 수 있습니다. 나머지 레코드는 조건에 해당하지 않기 때문에 그대로 유지되었습니다.

정리 및 참고 사항

  • AND 연산자: WHERE 절에서 여러 조건을 모두 만족하는 행만 대상으로 할 때 사용합니다.
  • OR 연산자: 여러 조건 중 하나라도 만족하면 되는 경우에는 OR을 사용할 수 있습니다. 예를 들어 where Age=25 or Age=28처럼 작성하면 나이가 25세 또는 28세인 모든 행이 업데이트 대상이 됩니다.
  • IN 연산자: 특정 컬럼의 값이 여러 후보 중 하나와 일치하는지 확인할 때는 where Age in (25, 28) 형태가 더 간결하고 가독성이 좋습니다.
  • 주의점: WHERE 절 없이 UPDATE 문을 실행하면 테이블의 모든 행이 변경되므로, 실무에서는 반드시 조건을 명확히 지정하고 실행 전 SELECT 문으로 대상 행을 미리 확인하는 것이 안전합니다.

이처럼 WHERE 절에 여러 조건을 조합하면 복잡한 요구사항도 정확하고 안전하게 처리할 수 있습니다.