2014-03-01 3 views

답변

4
MySQL의 (또는 데이터베이스 나 컴퓨터 언어) 값을 저장하는 방법은 두 가지가 기본적으로, 가변 길이 문자열을 저장

:

    길이는 문자열의 문자 다음에 인코딩 할 수 있습니다
  • 문자열의
  • 끝이 특수 문자로 표시 할 수 있습니다 (일반적으로 '0')

데이터베이스는 (거의?) 항상 길이 인코딩을 사용합니다. 당신이 'A' 저장할 때

3 A B C 

: 당신은 가변 길이 문자열로 'ABC'을 저장하면 같은, 데이터베이스 저장소에 보이는

1 A 

그 방법을, MySQL은 알고있는 경우 하나 개의 문자열의 끝과 다음이 시작됩니다. 다른 유형의 길이는 문자열의 최대 길이를 기준으로합니다. 따라서 1 바이트는 0에서 255 사이의 값을 포함 할 수 있습니다. 2 바이트는 0에서 65,535 사이의 값을 가질 수 있습니다.

A B C 

이 (코딩 특성에 따라) 어떤 3 바이트를/차지 : 같은

는 일반 문자 표현을 사용하는 경우, char(3) 말, 다음 'ABC' 보인다. 길이는 테이블 메타 데이터에서 알 수 있습니다.

여분이
A   
---^space here 
--------^space here 

이 공간에 의해 점유되어 char(3)

는 문자열 'A'는 3 개 개의 슬롯을 차지합니다. 긴 문자열의 경우 일반적으로 공간이 많이 낭비되므로 대부분의 문자열은 이 아닌 varchar으로 저장됩니다.

+0

답변을 주셔서 감사하지만 VARCHAR에 언젠가 1 바이트와 언젠가 2 바이트가 필요한 이유와 CHAR에 여분의 바이트가 필요하지 않은 이유는 무엇입니까? –

+0

@ VarunAgw. . . 마지막 단락을 읽어 보면'varchar'가 때때로 1 바이트를 사용하는 경우도 있고 때로는 2 바이트를 사용하는 이유를 이해할 수 있습니다.'char'는 길이가 알려져 있기 때문에 여분의 바이트를 필요로하지 않습니다. 문자열의 문자 수는 데이터베이스에 저장되고 길이는 테이블 형식으로 알려져있다. –

관련 문제