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

MySQL에서 바이너리 데이터가 제대로 삽입되지 않나요? BIT 데이터 타입 활용법

MySQL 바이너리 데이터 저장 문제와 해결 방법

MySQL에서 바이너리 데이터를 다룰 때는 BIT 데이터 타입을 사용하는 것이 가장 적합합니다. 일반적인 숫자형 타입과 달리 BIT 타입은 비트 단위의 값을 그대로 저장할 수 있어, 바이너리 데이터를 효율적으로 관리할 수 있습니다.

다만 주의할 점이 있습니다. BIT 타입으로 저장된 값은 일반적인 SELECT 문으로 조회하면 화면에 제대로 표시되지 않는다는 것입니다. 이 경우 BIN() 함수를 사용해야 실제 비트 값을 확인할 수 있습니다.

1. BIT 타입 테이블 생성하기

먼저 BIT(5) 타입의 컬럼을 가진 테이블을 생성해 보겠습니다.

mysql> create table DemoTable(binaryValue BIT(5));
Query OK, 0 rows affected (0.83 sec)

2. 데이터 삽입하기

INSERT 명령을 사용해 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable values(10);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(15);
Query OK, 1 row affected (0.15 sec)

3. 일반 SELECT로 조회하면 값이 보이지 않습니다

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

mysql> select *from DemoTable;

실행 결과를 보면 레코드가 존재하는데도 불구하고 값이 화면에 나타나지 않습니다.

+-------------+
| binaryValue |
+-------------+
|             |
|             |
+-------------+
2 rows in set (0.00 sec)

이것은 오류가 아니라, BIT 타입의 값이 바이너리 형태로 저장되기 때문에 일반적인 출력 방식으로는 사람이 읽을 수 없기 때문입니다.

4. BIN() 함수로 바이너리 값 확인하기

저장된 바이너리 데이터를 실제로 확인하려면 BIN() 함수를 사용해야 합니다.

mysql> select bin(binaryValue) from DemoTable;

이제 10진수 10은 1010, 15는 1111이라는 2진수 값으로 정상적으로 출력됩니다.

+------------------+
| bin(binaryValue) |
+------------------+
| 1010             |
| 1111             |
+------------------+
2 rows in set (0.00 sec)

5. b'...' 표기법으로 직접 삽입하는 예제

MySQL에서는 b'1010'처럼 비트 리터럴 표기법을 사용해 바이너리 값을 직접 삽입할 수도 있습니다.

mysql> insert into DemoTable VALUES (b'1010'),(b'1111');
Query OK, 2 rows affected (0.52 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select *from DemoTable;
+-------------+
| binaryValue |
+-------------+
|             |
|             |
|             |
|             |
+-------------+
4 rows in set (0.00 sec)

역시 일반 SELECT 문으로는 값이 보이지 않습니다. BIN() 함수를 사용해 다시 확인해 보겠습니다.

mysql> select bin(binaryValue) from DemoTable;

모든 레코드가 2진수 형태로 정확하게 출력되는 것을 확인할 수 있습니다.

+------------------+
| bin(binaryValue) |
+------------------+
| 1010             |
| 1111             |
| 1010             |
| 1111             |
+------------------+
4 rows in set (0.00 sec)

정리

  • MySQL에서 바이너리 데이터를 저장할 때는 BIT 데이터 타입을 사용합니다.
  • BIT 타입의 값은 일반 SELECT 문으로 조회하면 화면에 표시되지 않습니다.
  • 저장된 값을 확인하려면 BIN() 함수를 사용해 2진수 형태로 변환해야 합니다.
  • b'1010'과 같은 비트 리터럴 표기법으로도 값을 삽입할 수 있습니다.