MySQL에서는 UPDATE 명령을 사용해 불리언(BOOLEAN) 값을 손쉽게 업데이트할 수 있습니다. 흥미로운 점은 BOOLEAN 데이터 타입을 사용하면 MySQL이 내부적으로 이를 tinyint(1)로 변환한다는 것입니다. 따라서 true 리터럴은 tinyint(1)의 1로, false 리터럴은 0으로 처리됩니다.
기본 문법
불리언 값을 업데이트할 때 사용하는 기본적인 UPDATE 문법은 다음과 같습니다.
UPDATE yourTableName SET yourColumnName = yourValue WHERE yourCondition;
예제 테이블 생성
위 문법을 실제로 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다. 아래 쿼리는 isSuccessful이라는 BOOLEAN 컬럼을 가진 테이블을 생성합니다.
mysql> create table UpdateBooleans
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> isSuccessful BOOLEAN,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (1.55 sec)테스트 데이터 삽입
INSERT 명령을 사용해 true와 false 값을 번갈아 여러 개 삽입해 보겠습니다.
mysql> insert into UpdateBooleans(isSuccessful) values(true); Query OK, 1 row affected (0.17 sec) mysql> insert into UpdateBooleans(isSuccessful) values(false); Query OK, 1 row affected (0.21 sec) mysql> insert into UpdateBooleans(isSuccessful) values(true); Query OK, 1 row affected (0.13 sec) mysql> insert into UpdateBooleans(isSuccessful) values(false); Query OK, 1 row affected (0.15 sec) mysql> insert into UpdateBooleans(isSuccessful) values(false); Query OK, 1 row affected (0.24 sec) mysql> insert into UpdateBooleans(isSuccessful) values(false); Query OK, 1 row affected (0.17 sec) mysql> insert into UpdateBooleans(isSuccessful) values(true); Query OK, 1 row affected (0.12 sec)
삽입된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회하면 다음과 같습니다.
mysql> select *from UpdateBooleans;
실행 결과는 아래와 같습니다. true는 1로, false는 0으로 저장된 것을 확인할 수 있습니다.
+----+--------------+ | Id | isSuccessful | +----+--------------+ | 1 | 1 | | 2 | 0 | | 3 | 1 | | 4 | 0 | | 5 | 0 | | 6 | 0 | | 7 | 1 | +----+--------------+ 7 rows in set (0.00 sec)
BOOLEAN 값 업데이트하기
이제 본격적으로 불리언 값을 업데이트해 보겠습니다. 아래 쿼리는 isSuccessful 값이 false(0)인 모든 레코드를 true(1)로 변경합니다.
mysql> update UpdateBooleans set isSuccessful = true where isSuccessful = false; Query OK, 4 rows affected (0.15 sec) Rows matched: 4 Changed: 4 Warnings: 0
총 4개의 행이 일치했고, 4개의 행이 성공적으로 변경되었습니다.
업데이트 결과 확인
변경이 제대로 적용되었는지 다시 한번 SELECT 문으로 확인해 보겠습니다.
mysql> select *from UpdateBooleans;
결과를 보면 모든 레코드의 값이 1(true)로 업데이트된 것을 알 수 있습니다.
+----+--------------+ | Id | isSuccessful | +----+--------------+ | 1 | 1 | | 2 | 1 | | 3 | 1 | | 4 | 1 | | 5 | 1 | | 6 | 1 | | 7 | 1 | +----+--------------+ 7 rows in set (0.00 sec)
정리
MySQL에서 BOOLEAN 값 업데이트는 일반적인 UPDATE 문법과 동일하게 수행할 수 있습니다. 핵심 포인트를 정리하면 다음과 같습니다.
- MySQL의 BOOLEAN은 내부적으로
tinyint(1)로 저장됩니다. true는 1,false는 0에 해당합니다.- WHERE 조건절을 활용하면 특정 조건에 맞는 행만 선택적으로 업데이트할 수 있습니다.