DIVERSITY IS GOOD
DIVERSITY IS GOOD

테크/MySQL

MySQL 비트 연산(Bitwise Operations) 완벽 가이드

diversity is good 2025. 1. 31. 16:29
반응형

MySQL에서 비트 연산(Bitwise Operations)은 데이터를 효율적으로 저장하고 조작할 수 있도록 해주는 강력한 기능 중 하나입니다. 특히 권한 관리, 상태 플래그, 다중 선택값 저장 등에 자주 사용됩니다. 이 튜토리얼에서는 MySQL에서 지원하는 비트 연산자와 활용 방법을 자세히 설명하겠습니다.


1️⃣ 비트 연산자 개요

MySQL에서 지원하는 주요 비트 연산자는 다음과 같습니다:

연산자 설명 예제

& 비트 AND (둘 다 1일 때 1 반환) 5 & 3 → 1
` ` 비트 OR (둘 중 하나가 1이면 1 반환)
^ 비트 XOR (둘이 다를 때 1 반환) 5 ^ 3 → 6
~ 비트 NOT (비트를 반전) ~5 → -6
<< 비트 왼쪽 시프트 (n비트 왼쪽 이동) 5 << 1 → 10
>> 비트 오른쪽 시프트 (n비트 오른쪽 이동) 5 >> 1 → 2

MySQL에서 비트 연산은 정수(Integer) 타입에 대해 적용됩니다.


2️⃣ 비트 연산자 상세 설명

1. 비트 AND (&)

비트 AND 연산자는 둘 다 1일 때 1을 반환합니다.

SELECT 5 & 3;

💡 계산 과정:

5  →  101
3  →  011
결과 → 001  (1)

2. 비트 OR (|)

비트 OR 연산자는 하나라도 1이면 1을 반환합니다.

SELECT 5 | 3;

💡 계산 과정:

5  →  101
3  →  011
결과 → 111  (7)

3. 비트 XOR (^)

비트 XOR 연산자는 둘이 다를 때 1을 반환합니다.

SELECT 5 ^ 3;

💡 계산 과정:

5  →  101
3  →  011
결과 → 110  (6)

4. 비트 NOT (~)

비트 NOT 연산자는 **비트를 반전(1을 0으로, 0을 1로 변경)**합니다.

SELECT ~5;

💡 결과:

~5  →  -6  (2의 보수 표현 사용)

5. 비트 왼쪽 시프트 (<<)

비트 왼쪽 시프트 연산자는 n비트만큼 왼쪽으로 이동하며, 오른쪽에 0을 채움

SELECT 5 << 1;

💡 계산 과정:

5  →  101
왼쪽 시프트(1비트) → 1010  (10)

6. 비트 오른쪽 시프트 (>>)

비트 오른쪽 시프트 연산자는 n비트만큼 오른쪽으로 이동하며, 왼쪽의 비트는 버려짐

SELECT 5 >> 1;

💡 계산 과정:

5  →  101
오른쪽 시프트(1비트) → 10  (2)

3️⃣ 비트 연산 활용 예제

📌 1. 사용자의 권한 관리 (Bitwise Permissions)

사용자의 권한을 비트 플래그로 저장하면 효율적인 관리가 가능합니다.

권한 값 정의

권한 비트 값 10진수 값

읽기(Read) 0001 1
쓰기(Write) 0010 2
실행(Execute) 0100 4
삭제(Delete) 1000 8

사용자 테이블 (User Permissions)

CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    permissions INT  -- 비트 플래그 저장
);

INSERT INTO users (id, name, permissions) VALUES (1, 'Alice', 5);  -- Read(1) + Execute(4) = 5
INSERT INTO users (id, name, permissions) VALUES (2, 'Bob', 3);    -- Read(1) + Write(2) = 3

특정 권한을 가진 사용자 찾기

Execute(4) 권한이 있는 사용자 조회

SELECT * FROM users WHERE (permissions & 4) = 4;

Write(2) 권한이 없는 사용자 조회

SELECT * FROM users WHERE (permissions & 2) = 0;

📌 2. 상태 플래그 관리 (Bitwise Status Flags)

비트 연산을 사용하면 여러 상태를 하나의 컬럼에 저장할 수 있습니다.

상태 값 정의

상태 비트 값 10진수 값

활성(Active) 0001 1
검토 중(Review) 0010 2
승인됨(Approved) 0100 4
거부됨(Rejected) 1000 8

테이블 생성 및 데이터 입력

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    status INT  -- 비트 플래그 저장
);

INSERT INTO orders (order_id, status) VALUES (1, 5);  -- Active(1) + Approved(4) = 5
INSERT INTO orders (order_id, status) VALUES (2, 3);  -- Active(1) + Review(2) = 3

특정 상태인 주문 조회

Approved(4) 상태인 주문 조회

SELECT * FROM orders WHERE (status & 4) = 4;

Review(2) 상태가 아닌 주문 조회

SELECT * FROM orders WHERE (status & 2) = 0;

🚀 결론

MySQL의 비트 연산자를 활용하면 데이터를 효율적으로 저장하고 조회할 수 있습니다. 특히 권한 관리, 상태 플래그, 다중 선택 값 저장과 같은 경우에 유용합니다.

✅ 요약

비트 연산은 정수 데이터에만 적용 가능비트 연산으로 권한 및 상태를 저장하면 효율적인 관리 가능WHERE 절에서 비트 연산을 사용하면 특정 조건을 빠르게 검색 가능

비트 연산을 활용하면 데이터베이스 설계를 최적화할 수 있으니, 꼭 활용해 보세요! 🚀

반응형

'테크 > MySQL' 카테고리의 다른 글

기본 SQL 문법 튜토리얼  (0) 2025.01.25