SQL - BOOLEAN (BIT) 연산자: 초보자를 위한 친절한 가이드

안녕하세요, 미래의 SQL 마법사 여러분! 오늘 우리는 SQL의 Boolean 연산자 세계로 흥미로운 여정을 떠납니다. 코드를 한 줄도 작성해 본 적 없으신 분들도 걱정 마세요 - 나는 당신의 신뢰할 수 있는 안내자가 되겠습니다. 이 주제를 단계별로 풀어 나갈 테니까요. 그럼, 좋아하는 음료를 한 잔 마시면서, 이제 시작해 보겠습니다!

SQL - BOOLEAN (BIT) Operator

SQL에서 Boolean이란?

이제 본격적인 내용으로 들어가기 전에 기본 개념부터 설명해 보겠습니다. Boolean은 두 가지 가능한 값만을 가질 수 있는 데이터 타입입니다: TRUE 또는 FALSE. 전구 스위치와 같아요 - 켜져 있거나 꺼져 있을 뿐, 중간 상태는 없습니다. SQL에서 우리는 Boolean을 사용하여 특정 조건에 따라 결정을 내리고 데이터를 필터링합니다.

이제 다양한 데이터베이스 시스템이 Boolean을 어떻게 처리하는지 살펴보겠습니다.

MySQL에서 Boolean

MySQL은 가장 인기 있는 데이터베이스 시스템 중 하나로, 내장된 BOOLEAN 타입이 없습니다. 대신 TINYINT(1)을 사용하여 Boolean 값을 표현합니다. 간단히 정리해 보겠습니다:

  • TRUE는 1로 표현됩니다
  • FALSE는 0으로 표현됩니다

이를 보여주기 위해 간단한 테이블을 생성해 보겠습니다:

CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
is_enrolled TINYINT(1)
);

INSERT INTO students (id, name, is_enrolled) VALUES
(1, 'Alice', 1),
(2, 'Bob', 0),
(3, 'Charlie', 1);

이 예제에서 우리는 students 테이블을 생성했으며, is_enrolled 열을 Boolean으로 사용하고 있습니다. Alice와 Charlie는 등록되었습니다 (TRUE), Bob은 등록되지 않았습니다 (FALSE).

MS SQL Server에서 Boolean

Microsoft SQL Server는 Boolean 값에 사용되는 BIT 데이터 타입을 별도로 제공합니다. 이렇게 작동합니다:

  • TRUE는 1로 표현됩니다
  • FALSE는 0으로 표현됩니다

이제 MS SQL Server에서 같은 테이블을 생성해 보겠습니다:

CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
is_enrolled BIT
);

INSERT INTO students (id, name, is_enrolled) VALUES
(1, 'Alice', 1),
(2, 'Bob', 0),
(3, 'Charlie', 1);

구조는 비슷하지만, is_enrolled 열에서 BIT를 사용하고 있습니다.

Boolean 데이터 필터링

이제 데이터가 준비되었으므로, Boolean 조건을 사용하여 필터링하는 방법을 배워보겠습니다. 이제부터 진짜 마법이 시작됩니다!

등록된 학생 찾기

모든 등록된 학생을 찾기 위해서는 다음 쿼리를 사용할 수 있습니다:

SELECT * FROM students WHERE is_enrolled = TRUE;

또는 MySQL에서:

SELECT * FROM students WHERE is_enrolled = 1;

이 쿼리는 Alice와 Charlie, 즉 등록된 학생들을 반환합니다.

등록되지 않은 학생 찾기

등록되지 않은 학생을 찾기 위해서는 다음과 같이 할 수 있습니다:

SELECT * FROM students WHERE is_enrolled = FALSE;

또는 MySQL에서:

SELECT * FROM students WHERE is_enrolled = 0;

이 쿼리는 Bob, 즉 등록되지 않은 학생을 반환합니다.

Boolean 조건 부정

occasionally, we want to find the opposite of a condition. We can use the NOT operator for this:

SELECT * FROM students WHERE NOT is_enrolled;

이 쿼리는 등록되지 않은 모든 학생을 반환합니다. 이는 이전에 등록되지 않은 학생을 찾는 쿼리와 동일합니다.

NULL 값 처리

SQL에서 NULL은 알 수 없는 값 또는 누락된 값을 나타냅니다. Boolean과 함께 작업할 때 NULL 값에 주의해야 합니다. 알 수 없는 등록 상태를 가진 학생을 추가해 보겠습니다:

INSERT INTO students (id, name, is_enrolled) VALUES (4, 'David', NULL);

이제 이전 쿼리를 실행하면, David는 등록된 학생 목록 또는 등록되지 않은 학생 목록에 나타나지 않습니다. 알 수 없는 등록 상태를 가진 학생을 찾기 위해서는 다음과 같이 할 수 있습니다:

SELECT * FROM students WHERE is_enrolled IS NULL;

이 쿼리는 David, 즉 알 수 없는 등록 상태를 가진 학생을 반환합니다.

Boolean 값 갱신

마지막으로 Boolean 값을 갱신하는 방법을 살펴보겠습니다. Bob이 등록하기로 결정했다고 가정해 봅시다:

UPDATE students SET is_enrolled = TRUE WHERE name = 'Bob';

또는 MySQL에서:

UPDATE students SET is_enrolled = 1 WHERE name = 'Bob';

이제 Bob은 등록되었습니다!

결론

이제 우리는 SQL의 Boolean 연산자 기본을 다루었습니다. Boolean은 데이터베이스에서 간단한 예/아니오 질문과 같아요. 그들은 데이터를 필터링하고 쿼리에서 결정을 내리는 데 매우 유용합니다.

아래는 우리가 다룬 방법의 빠른 참조 표입니다:

연산 MySQL 문법 MS SQL Server 문법
Boolean 열 생성 TINYINT(1) BIT
TRUE 설정 1 1
FALSE 설정 0 0
TRUE 필터링 WHERE column = 1 WHERE column = TRUE
FALSE 필터링 WHERE column = 0 WHERE column = FALSE
부정 WHERE NOT column WHERE NOT column
NULL 확인 WHERE column IS NULL WHERE column IS NULL

이 개념들을 연습하면, 곧 Boolean 연산자를 마스터하실 것입니다! SQL을 습득하는 열쇠는 연습과 인내입니다. 다양한 쿼리를 실험해 보세요 - 우리 모두는 이렇게 프로그래머로 성장합니다.

행복한 코딩 되세요, 그리고 Boolean이 함께 하시길 바랍니다!

Credits: Image by storyset