• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 1. 데이터 형식 요약
    2. 수치형
    3. 날짜와 시간 형
    4. 문자열
    1. CHAR 및 VARCHAR 형
    2. BINARY 및 VARBINARY 형
    3. BLOB 형태와 TEXT 형태
    4. ENUM 형태
    5. SET형
    5. 공간 데이터의 확장
    6. 데이터 형 기본값
    7. 데이터 유형의 스토리지 요구 사항
    8. 컬럼에 적절한 형태의 선택
    9. 기타 데이터베이스 엔진의 데이터 형식 사용
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

11.4.2 BINARY 및 VARBINARY 형

BINARY 및 VARBINARY 타입은 CHAR 및 VARCHAR 형과 유사하지만, 비 바이너리 문자열이 아닌 바이너리 문자열을 저장합니다. 즉, 그들에는 문자열이 아닌 바이트의 문자열이 포함되어 있습니다. 이것은 그들에게 문자 세트가없고, 정렬 및 비교는 값 안의 바이트의 수치에 따라 의미합니다.

BINARY 및 VARBINARY 에서 허용되는 최대 길이는 CHAR 및 VARCHAR 의 경우와 동일하지만, BINARY 및 VARBINARY 길이가 문자가 아닌 바이트 단위로 표현되는 점이 다릅니다.

BINARY 및 VARBINARY 데이터 유형은 CHAR BINARY 및 VARCHAR BINARY 데이터 형과는 다릅니다. 후자의 형태는 BINARY 속성으로 컬럼이 바이너리 문자열 컬럼으로 취급되는 것은 아닙니다. 대신 이로 인해 열 문자 집합의 이진 데이터 정렬이 사용 된 컬럼 자체는 바이너리 바이트 스트링이 아닌 비 바이너리 문자열이 저장됩니다. 예를 들어, CHAR(5) BINARY 는 기본 문자 집합이 latin1 하면, CHAR(5) CHARACTER SET latin1 COLLATE latin1_bin 로 처리됩니다. 이것은 문자 집합 및 데이터 정렬이없는 5 바이트의 이진 문자열을 포함하는 BINARY(5) 과는 다릅니다. 비 이진 문자열 이진 데이터 정렬과 이진 문자열의 차이에 대해서는 섹션 10.1.7.6 "_bin 및 binary 데이터 정렬" 을 참조하십시오.

엄격한 SQL 모드가 유효하지 않은 경우 BINARY 또는 VARBINARY 컬럼에 최대 길이를 초과하는 값을 지정하면 그 값은 컬럼의 최대 길이에 맞게 절단되고 경고 메시지가 표시됩니다. 값을 자르면 엄격한 SQL 모드를 사용하면 경고가 아닌 오류를 발생시키고, 그 값의 삽입을 억제 할 수 있습니다. 섹션 5.1.7 "서버 SQL 모드" 를 참조하십시오.

BINARY 값은 저장되는 특정 길이까지 오른쪽 패드 값으로 채워집니다. 패드 값은 0x00 (0 바이트)입니다. 값은 삽입시에는 오른쪽이 0x00 으로 채워 선택할 때 후속 바이트는 제거되지 않습니다. 모든 바이트는 ORDER BY 및 DISTINCT 작업을 포함 비교에서 의미가 있습니다. 0x00 바이트와 공간은 비교에서 달리 0x00 <공간입니다.

예 : BINARY(3) 컬럼의 경우 'a ' 는 삽입시에 'a \0' 이됩니다. 'a\0' 은 삽입시에 'a\0\0' 이됩니다. 선택시 삽입 된 두 값은 변경되지 않습니다.

VARBINARY 는 삽입시에 패딩되기도 선택할 때 바이트가 삭제 될 수 없습니다. 모든 바이트는 ORDER BY 및 DISTINCT 작업을 포함 비교에서 의미가 있습니다. 0x00 바이트와 공간은 비교에서 달리 0x00 <공간입니다.

후속 패드 바이트가 제거되거나 비교에서 무시되거나하는 경우는 고유 한 값을 필요로하는 인덱스 컬럼에 포함되어 있으면 후속 패드 바이트의 개수 만 다른 컬럼 값에 삽입 중복 키 오류가 발생합니다. 예를 들어, 테이블에 'a' 가 포함되어있는 경우, 'a\0' 을 저장하려고하면 중복 키 오류가 발생합니다.

바이너리 데이터의 저장에 BINARY 데이터 형을 사용할 계획이며, 꺼낸 값을 저장 한 값과 동일 할 필요가있는 경우는 선행 패딩 제거 문자를 고려해야합니다. 다음의 예는 BINARY 값 0x00 패딩하여 컬럼 값의 비교가 어떤 영향을 받는지 보여줍니다.

mysql> CREATE TABLE t (c BINARY(3));
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO t SET c = 'a';
Query OK, 1 row affected (0.01 sec)

mysql> SELECT HEX(c), c = 'a', c = 'a\0\0' from t;
+--------+---------+-------------+
| HEX(c) | c = 'a' | c = 'a\0\0' |
+--------+---------+-------------+
| 610000 |       0 |           1 |
+--------+---------+-------------+
1 row in set (0.09 sec)

추출 된 값을 패딩없이 스토리지에 지정한 값과 일치해야하는 경우, 대신에 VARBINARY 또는 하나의 BLOB 데이터 형을 사용하는 것이 좋습니다.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved