MySQL - 부울 데이터 유형: 초보자 가이드

안녕하세요, 미래의 데이터 마법사 여러분! 오늘 우리는 MySQL의 부울 데이터 유형에 대해 흥미로운 세상으로 뛰어들어 볼 거예요. 코드를 한 줄도 작성해 본 적이 없더라도 걱정하지 마세요 - 여러분의 친절한 안내자로서 이 여정을 함께할게요. 수년 동안 수많은 학생들에게 가르쳐온 경험을 바탕으로 말이죠. 그럼, 좋아하는 음료를 한 잔 들고, 시작해 보겠습니다!

MySQL - BOOLEAN

부울 데이터 유형이란?

MySQL의 구체적인 내용에 들어가기 전에 부울이 무엇인지 이해해 보겠습니다. 친구와 간단한 "예" 혹은 "아니요" 게임을 상상해 보세요. 프로그래밍에서 부울은 이와 같습니다 - 두 가지 가능한 값만을 가질 수 있습니다: 참 혹은 거짓.

현실 세계에서 부울은 매우 유용합니다. 예를 들어:

  • 사용자가 로그인했는지 여부
  • 제품이 재고가 있는지 여부
  • 학생이 시험을 통과했는지 여부

이제 MySQL이 이 개념을 어떻게 다루는지 살펴보겠습니다.

MySQL에서 부울

여기서는 좀 이상한 점이 있습니다 - MySQL에는 원래 부울 데이터 유형이 없습니다! 알고 보면 놀라겠죠? 하지만 걱정 마세요, MySQL에는 지혜로운 대안이 있습니다.

MySQL에서 부울은 실제로 TINYINT(1)의 동의어로 취급됩니다. 이는 부울 열을 생성할 때 MySQL이 실제로 TINYINT(1) 열을 생성한다는 뜻입니다.

이를 실제로 보겠습니다:

CREATE TABLE game_status (
id INT AUTO_INCREMENT PRIMARY KEY,
game_name VARCHAR(50),
is_completed BOOLEAN
);

INSERT INTO game_status (game_name, is_completed) VALUES
('Chess', TRUE),
('Monopoly', FALSE),
('Scrabble', TRUE);

SELECT * FROM game_status;

이 SELECT 문을 실행하면 놀라실 수 있습니다:

+----+-----------+--------------+
| id | game_name | is_completed |
+----+-----------+--------------+
|  1 | Chess     |            1 |
|  2 | Monopoly  |            0 |
|  3 | Scrabble  |            1 |
+----+-----------+--------------+

대체 TRUE와 FALSE 값이 어디로 갔을까요? 부울이 TINYINT(1)인 것을 기억하세요. 다음과 같이 일어나고 있습니다:

  • TRUE는 1로 저장됩니다
  • FALSE는 0으로 저장됩니다

MySQL이 배후에서 "1은 예, 0은 아니요"라는 비밀 게임을 하고 있는 것입니다!

부울 0,1을 TRUE와 FALSE로 바꾸기

이제 TRUE와 FALSE를 결과에서 볼 수 있기를 원하실 수도 있습니다. 걱정 마세요, MySQL이 여러분을 위한 방법을 제공하고 있습니다. CASE 문을 사용하여 0과 1을 다시 TRUE와 FALSE로 변환할 수 있습니다:

SELECT
id,
game_name,
CASE
WHEN is_completed = 1 THEN 'TRUE'
ELSE 'FALSE'
END AS is_completed
FROM game_status;

이렇게 하면 더 읽기 쉬운 결과를 얻을 수 있습니다:

+----+-----------+--------------+
| id | game_name | is_completed |
+----+-----------+--------------+
|  1 | Chess     | TRUE         |
|  2 | Monopoly  | FALSE        |
|  3 | Scrabble  | TRUE         |
+----+-----------+--------------+

이렇게 하면 훨씬 나아지죠? MySQL이 우리의 언어를 이해할 수 있는 작은 통역가를 얻은 것 같네요!

클라이언트 프로그램을 사용한 부울 연산자

이제 MySQL이 부울을 어떻게 다루는지 이해했으므로, 부울 연산자에 대해 살펴보겠습니다. 이 연산자들은 "예/아니요" 게임의 규칙처럼, MySQL이 부울 값을 결합하거나 조작하는 방법을 알려줍니다.

MySQL의 주요 부울 연산자는 다음과 같습니다:

연산자 설명
AND 두 가지가 모두 참이면 참
OR 둘 중 하나라도 참이면 참
NOT 부울 값을 반전
XOR 정확히 하나만 참이면 참

이를 실제로 보겠습니다:

-- AND 연산자
SELECT * FROM game_status WHERE is_completed = TRUE AND game_name = 'Chess';

-- OR 연산자
SELECT * FROM game_status WHERE is_completed = TRUE OR game_name = 'Monopoly';

-- NOT 연산자
SELECT * FROM game_status WHERE NOT is_completed;

-- XOR 연산자
SELECT * FROM game_status WHERE is_completed XOR game_name = 'Monopoly';

이를 하나씩 설명해 보겠습니다:

  1. AND 쿼리는 게임이 완료되고 게임 이름이 'Chess'인 행만 반환합니다.
  2. OR 쿼리는 게임이 완료되었거나 게임 이름이 'Monopoly'인 행을 반환합니다.
  3. NOT 쿼리는 게임이 완료되지 않은 행(즉, is_completed = 0)을 반환합니다.
  4. XOR 쿼리는 게임이 완료되었거나 게임 이름이 'Monopoly'인 행을 반환하지만, 둘 다 아닌 경우는 반환하지 않습니다.

이 연산자들은 더 복잡한 쿼리를 만들기 위한 기본 블록입니다. 데이터에 대해 매우 특정한 질문을 할 수 있게 해줍니다. 마치 탐정이 단서를 조립하듯이!

결론

이제 여러분은 MySQL의 부울을 여행을 마쳤습니다. 부울의 이상한 구현에서 TINYINT(1)을 거쳐 강력한 연산자를 사용하는 것까지입니다.

데이터베이스 세계에서 모든 것은 1이나 0, 즉 참 혹은 거짓입니다. 마치 데이터가 항상 "예/아니요" 게임을 하고 있는 것처럼요. 이제 여러분은 이 게임에 참여할 수 있는 도구를 가지고 있습니다!

MySQL의 여정을 계속하면서, 이 부울 개념이 어디서든 등장할 것입니다. 이들은 데이터를 필터링하고, 코드에서 결정을 내리며, 강력하고 동적인 애플리케이션을 만드는 데 필수적인 요소입니다.

그러므로, 제 학생 여러분, 항상 쿼리가 참을 반환하길 바랍니다 (물론, 거짓을 반환하고 싶다면 그렇게 하세요)!

Credits: Image by storyset