11.1.3 문자열의 개요
문자열 데이터 형식의 요약 설명합니다. 문자열의 특성 및 스토리지 요구 사항에 대한 자세한 내용은 섹션 11.4 "문자열" 과 섹션 11.7 "데이터 유형의 스토리지 요구 사항" 을 참조하십시오.
MySQL은 문자열 컬럼을 CREATE TABLE
또는 ALTER TABLE
문에서 주어진 형태와는 다른 형태로 변경 될 수 있습니다. 섹션 13.1.17.3 "암묵적 컬럼 지정 변경" 을 참조하십시오.
MySQL은 문자 컬럼 정의의 길이 지정을 문자 단위로 해석합니다. 이것은 CHAR
, VARCHAR
및 TEXT
형에 적용됩니다.
많은 문자열 데이터 유형의 컬럼 정의에는 컬럼의 문자 세트 또는 데이터 정렬을 지정하는 속성을 포함 할 수 있습니다. 이러한 속성은 CHAR
, VARCHAR
, TEXT
형, ENUM
및 SET
데이터 형식에 적용됩니다.
CHARACTER SET
속성은 문자 집합을 지정하고COLLATE
속성은 문자 집합의 데이터 정렬을 지정합니다. 예 :CREATE TABLE t ( c1 VARCHAR (20) CHARACTER SET utf8, c2 TEXT CHARACTER SET latin1 COLLATE latin1_general_cs );
이 테이블 정의는
utf8
의 문자 집합과 문자 집합의 기본 데이터 정렬을 사용c1
이라는 컬럼과latin1
문자 집합과 대소 문자 구분 데이터 정렬을 가진c2
이라는 컬럼을 만듭니다 .CHARACTER SET
속성 또는COLLATE
속성 또는 둘 모두가없는 경우, 문자 세트 및 데이터 정렬을 할당하는 규칙은 섹션 10.1.3.4 "열 문자 집합 및 정렬 순서" 에서 설명하고 있습니다.CHARSET
는CHARACTER SET
의 동의어입니다.문자 데이터 형식에
CHARACTER SET binary
속성을 지정하면 열은 대응하는 이진 데이터 형식으로 작성됩니다. 즉,CHAR
는BINARY
되고,VARCHAR
는VARBINARY
되고TEXT
는BLOB
입니다.ENUM
및SET
데이터 형에서는이되지 않고 선언 된대로 작성됩니다. 이 정의를 사용하여 테이블을 지정했다고합니다.CREATE TABLE t ( c1 VARCHAR (10) CHARACTER SET binary, c2 TEXT CHARACTER SET binary, c3 ENUM ( 'a', 'b', 'c') CHARACTER SET binary );
결과 테이블이 정의가 포함되어 있습니다.
CREATE TABLE t ( c1 VARBINARY (10) c2 BLOB, c3 ENUM ( 'a', 'b', 'c') CHARACTER SET binary );
ASCII
특성은CHARACTER SET latin1
의 줄임말입니다.UNICODE
속성은CHARACTER SET ucs2
의 줄임말입니다.BINARY
속성은 컬럼 문자 집합의 이진 데이터 정렬을 지정하는 단축형입니다. 이 경우, 정렬 및 비교는 숫자 값을 기준으로합니다.
문자 컬럼의 정렬 및 비교는 컬럼에 할당 된 문자 집합을 기준으로합니다. CHAR
, VARCHAR
, TEXT
, ENUM
및 SET
데이터 형식은 사전 순이 아니라 기반이되는 문자 코드 값을 정렬 및 비교에 사용할 수 있도록 이진 데이터 정렬 또는 BINARY
속성을 가지는 컬럼을 선언 할 수 있습니다.
섹션 10.1 "문자 집합 지원" 에서는 MySQL의 문자 집합 사용에 대한 추가 정보가 포함되어 있습니다.
[NATIONAL] CHAR[(
M
)] [CHARACTER SETcharset_name
] [COLLATEcollation_name
]저장시 반드시 지정된 길이가되도록 오른쪽이 공백으로 채워진다 고정 길이 문자열입니다.
M
은 컬럼의 길이를 문자로 나타냅니다.M
의 범위는 0 ~ 255입니다.M
을 생략하면 길이는 1입니다.참고PAD_CHAR_TO_FULL_LENGTH
SQL 모드가 활성화되어 있지 않은 한,CHAR
값을 추출 할 때 후행 공백은 삭제됩니다.CHAR
은CHARACTER
의 약어입니다.NATIONAL CHAR
(또는 이에 상응하는 단축형 인NCHAR
)는CHAR
컬럼이 미리 정의 된 문자 집합을 사용할 필요가 있다는 것을 정의하는 표준 SQL 방법입니다. MySQL 4.1 이상이 사전에 정의 된 문자 세트로utf8
을 사용합니다. 섹션 10.1.3.6 "각국 캐릭터 세트" 를 참조하십시오.CHAR BYTE
데이터 타입은BINARY
데이터 형의 별칭입니다. 이것은 호환 기능입니다.MySQL 그럼,
CHAR(0)
타입의 컬럼을 만들 수 있습니다. 이것은 주로 컬럼의 존재에 의존하지만, 실제로는 그 값을 사용하지 않는 오래된 응용 프로그램을 준수 할 필요가있을 때 유용합니다.CHAR(0)
는 2 개의 값 밖에 잡히지 않는 컬럼이 필요한 경우에도 매우 편리합니다.CHAR(0) NULL
로 정의 된 컬럼은 1 비트 만 차지해NULL
및''
(빈 문자열) 값만을 취할 수 있습니다.[NATIONAL] VARCHAR(
M
) [CHARACTER SETcharset_name
] [COLLATEcollation_name
]가변 길이 문자열입니다.
M
은 컬럼의 최대 길이를 문자로 나타냅니다.M
의 범위는 0 ~ 65,535입니다.VARCHAR
의 최대 유효 길이는 최대 행 크기 (65,535 바이트 모든 컬럼에서 공유됩니다)과 사용되는 문자 세트에 의해 결정됩니다. 예를 들어,utf8
문자는 문자 당 최대 3 바이트를 필요로하는 경우가 있기 때문에utf8
문자 집합을 사용하는VARCHAR
컬럼은 최대 21,844 문자가되도록 선언 할 수 있습니다. 섹션 D.10.4 "테이블 컬럼 및 행 크기 제한" 을 참조하십시오.MySQL은
VARCHAR
값을 1 바이트 또는 2 바이트 길이의 프리픽스가있는 데이터로 저장합니다. 길이 프리픽스 값에 포함 된 바이트 수를 나타냅니다.VARCHAR
컬럼은 저장할 수있는 값이 255 바이트 이하의 경우는 1 바이트 길이의 프리픽스를 사용하여 255 바이트보다 큰 경우 2 바이트 길이의 프리픽스를 사용합니다.참고MySQL 5.6은 표준 SQL 사양에 따라
VARCHAR
값에서 후행 공백을 제거하지 않습니다.VARCHAR
는CHARACTER VARYING
의 줄임말입니다.NATIONAL VARCHAR
는VARCHAR
컬럼이 미리 정의 된 문자 집합을 사용할 필요가 있다는 것을 정의하는 표준 SQL 방법입니다. MySQL 4.1 이상이 사전에 정의 된 문자 세트로utf8
을 사용합니다. 섹션 10.1.3.6 "각국 캐릭터 세트" 를 참조하십시오.NVARCHAR
는NATIONAL VARCHAR
의 줄임말입니다.BINARY(
M
)BINARY
형은CHAR
형과 유사하지만, 비 바이너리 문자열이 아닌 바이너리 바이트 문자열을 저장합니다.M
은 컬럼 길이를 바이트 단위로 나타냅니다.VARBINARY(
M
)VARBINARY
타입은VARCHAR
타입과 유사하지만, 비 바이너리 문자열이 아닌 바이너리 바이트 문자열을 저장합니다.M
은 컬럼의 최대 길이를 바이트 단위로 나타냅니다.TINYBLOB
최대 길이가 255 (2 8 - 1) 바이트의
BLOB
컬럼. 각TINYBLOB
값은 값의 바이트 수를 나타내는 1 바이트 길이의 프리픽스를 사용하여 저장됩니다.TINYTEXT [CHARACTER SET
charset_name
] [COLLATEcollation_name
]최대 길이가 255 (2 8 - 1) 문자의
TEXT
컬럼. 값에 멀티 바이트 문자가 포함 된 경우 유효한 최대 길이는 줄어 듭니다. 각TINYTEXT
값은 값의 바이트 수를 나타내는 1 바이트 길이의 프리픽스를 사용하여 저장됩니다.BLOB[(
M
)]최대 길이가 65,535 (2 16 - 1) 바이트의
BLOB
컬럼. 각BLOB
값은 값의 바이트 수를 나타내는 2 바이트 길이의 프리픽스를 사용하여 저장됩니다.이 형식은 옵션 길이
M
을 지정할 수 있습니다. 이것이 완료되면, MySQL은M
바이트 길이의 값을 보관 유지하는데 충분한 최소의BLOB
타입으로 컬럼을 생성합니다.TEXT[(
M
)] [CHARACTER SETcharset_name
] [COLLATEcollation_name
]최대 길이가 65,535 (2 16 - 1) 문자의
TEXT
컬럼. 값에 멀티 바이트 문자가 포함 된 경우 유효한 최대 길이는 줄어 듭니다. 각TEXT
값은 값의 바이트 수를 나타내는 2 바이트 길이의 프리픽스를 사용하여 저장됩니다.이 형식은 옵션 길이
M
을 지정할 수 있습니다. 이것이 완료되면, MySQL은M
자 길이의 값을 보관 유지하는데 충분한 최소TEXT
형식으로 열을 만듭니다.MEDIUMBLOB
최대 길이가 16,777,215 (2 24 - 1) 바이트의
BLOB
컬럼. 각MEDIUMBLOB
값은 값의 바이트 수를 나타내는 3 바이트 길이의 프리픽스를 사용하여 저장됩니다.MEDIUMTEXT [CHARACTER SET
charset_name
] [COLLATEcollation_name
]최대 길이가 16,777,215 (2 24 - 1) 문자의
TEXT
컬럼. 값에 멀티 바이트 문자가 포함 된 경우 유효한 최대 길이는 줄어 듭니다. 각MEDIUMTEXT
값은 값의 바이트 수를 나타내는 3 바이트 길이의 프리픽스를 사용하여 저장됩니다.LONGBLOB
최대 길이가 4,294,967,295 또는 4G 바이트 (2 32 - 1) 바이트의
BLOB
컬럼.LONGBLOB
컬럼의 최대 유효 길이는 클라이언트 / 서버 프로토콜과 사용 가능한 메모리에 구성된 최대 패킷 크기에 따라 결정됩니다. 각LONGBLOB
값은 값의 바이트 수를 나타내는 4 바이트 길이의 프리픽스를 사용하여 저장됩니다.LONGTEXT [CHARACTER SET
charset_name
] [COLLATEcollation_name
]최대 길이가 4,294,967,295 또는 4G 바이트 (2 32 - 1) 문자의
TEXT
컬럼. 값에 멀티 바이트 문자가 포함 된 경우 유효한 최대 길이는 줄어 듭니다.LONGTEXT
컬럼의 최대 유효 길이 또한 클라이언트 / 서버 프로토콜과 사용 가능한 메모리의 구성 된 최대 패킷 크기에 따라 결정됩니다. 각LONGTEXT
값은 값의 바이트 수를 나타내는 4 바이트 길이의 프리픽스를 사용하여 저장됩니다.ENUM('
value1
','value2
',...) [CHARACTER SETcharset_name
] [COLLATEcollation_name
]열거입니다.
,' value1 '
,' value2 '
...
값,NULL
또는 특수''
에러 값 목록에서 선택한 값을 하나만 가질 수있는 스트링 오브젝트입니다.ENUM
값은 내부적으로는 정수로 표현됩니다.ENUM
컬럼은 최대 65,535 개의 개별 요소를 포함 할 수 있습니다. (실제 한도는 3000 개까지입니다.) 테이블에는 그룹으로 간주되는ENUM
및SET
컬럼 안의 고유 요소 목록 정의를 255 개 이하를 포함 할 수 있습니다. 이러한 제한의 자세한 내용은 섹션 D.10.5 ".frm 파일 구조에 의해 부과되는 제한" 을 참조하십시오.SET('
value1
','value2
',...) [CHARACTER SETcharset_name
] [COLLATEcollation_name
]세트입니다. 0 개 이상의 값을 가질 수있는 스트링 오브젝트이며, 그 각각의 값은
,' value1 '
,' value2 '
...
값 목록에서 선택해야합니다.SET
값은 정수로서 내부적으로 표현됩니다.SET
컬럼은 최대 64 개의 개별 구성원을 포함 할 수 있습니다. 테이블에는 그룹으로 간주되는ENUM
및SET
컬럼 안의 고유 요소 목록 정의를 255 개 이하를 포함 할 수 있습니다. 이 제한 자세한 내용은 섹션 D.10.5 ".frm 파일 구조에 의해 부과되는 제한" 을 참조하십시오.