| 롤 토토 : 문서 : 9.5 : 롤 토토 | |||
|---|---|---|---|
| 토토 결과 : 문서 : 9.5 : 화폐 유형 | PostgreSQL : 문서 : 9.5 : 데이터 토토 커뮤니티 | 8장. 데이터 유형 | PostgreSQL : 문서 : 9.5 : 이진 롤 토토 유형 |
표 8-4. 롤 토토 유형
| 이름 | 설명 |
|---|---|
| 롤 토토 다양(n), varchar(n) | 제한이 있는 가변 길이 |
| 롤 토토(n), 롤 토토(n) | 고정 길이, 공백 패딩 |
| 텍스트 | 변수 무제한 길이 |
표 8-4다음에서 사용할 수 있는 범용 롤 토토 유형을 표시합니다.포스트그레SQL.
SQL두 가지 기본 롤 토토 유형을 정의합니다:롤 토토 다양(n)그리고롤 토토(n), 여기서n은 양의 정수입니다. 이 두 유형 모두 최대의 롤 토토열을 저장할 수 있습니다.n롤 토토(바이트 아님) 길이입니다. 이러한 유형의 열에 더 긴 롤 토토열을 저장하려고 시도하면 초과 롤 토토가 모두 공백이 아닌 한 오류가 발생합니다. 이 경우 롤 토토열은 최대 길이로 잘립니다. (이 다소 기괴한 예외는 다음에서 요구됩니다.SQLstandard.) 저장할 롤 토토열이 선언된 길이보다 짧은 경우 유형의 값은롤 토토스페이스가 채워집니다. 유형 값롤 토토 다양단순히 짧은 롤 토토열을 저장합니다.
명시적으로 값을 캐스팅하는 경우롤 토토 다양(n)또는롤 토토(n), 길이를 초과하는 값은 다음으로 잘립니다.n오류가 발생하지 않는 롤 토토. (이 역시 다음에서 요구됩니다.SQL표준.)
표기법varchar(n)그리고롤 토토(n)다음의 별칭입니다.롤 토토 다양(n)그리고롤 토토(n)각각.롤 토토길이 지정자가 없는 것은 다음과 같습니다.롤 토토(1). 만일롤 토토 다양은 길이 지정자 없이 사용되며 유형은 모든 크기의 롤 토토열을 허용합니다. 후자는PostgreSQL확장.
또한,PostgreSQL제공텍스트유형: 모든 길이의 롤 토토열을 저장합니다. 유형이지만텍스트다음에 없습니다SQL표준, 다른 여러 SQL 데이터베이스 관리 시스템에도 이 표준이 있습니다.
유형 값롤 토토지정된 너비까지 공백으로 물리적으로 채워집니다.n, 그런 식으로 저장되고 표시됩니다. 그러나 후행 공백은 의미상 중요하지 않은 것으로 간주되며 type의 두 값을 비교할 때 무시됩니다.롤 토토. 공백이 중요한 데이터 정렬에서는 이 동작으로 인해 예상치 못한 결과가 발생할 수 있습니다. 예를 들어SELECT 'a '::CHAR(2) 대조 "C" < E'a\n'::CHAR(2)그래도 true를 반환합니다.C로케일은 공백이 줄바꿈보다 큰 것으로 간주합니다. a를 변환할 때 후행 공백이 제거됩니다.롤 토토값을 다른 롤 토토열 유형 중 하나로 변환합니다. 후행 공백에 유의하세요.아르의미적으로 중요한롤 토토 다양그리고텍스트값, 패턴 일치를 사용할 때 즉좋아요및 정규 표현식.
이러한 데이터 유형에 저장될 수 있는 롤 토토는 데이터베이스가 생성될 때 선택되는 데이터베이스 롤 토토 집합에 의해 결정됩니다. 특정 롤 토토 집합에 관계없이 코드 0(NUL이라고도 함)이 있는 롤 토토는 저장할 수 없습니다. 자세한 내용은 다음을 참조하세요.섹션 22.3.
짧은 롤 토토열(최대 126바이트)에 대한 저장 요구 사항은 1바이트에 실제 롤 토토열을 더한 것입니다. 여기에는 다음의 경우 공백 패딩이 포함됩니다.롤 토토. 긴 롤 토토열에는 1바이트가 아닌 4바이트의 오버헤드가 있습니다. 긴 롤 토토열은 시스템에서 자동으로 압축되므로 디스크의 물리적 요구 사항이 더 적을 수 있습니다. 매우 긴 값은 짧은 열 값에 대한 빠른 액세스를 방해하지 않도록 백그라운드 테이블에도 저장됩니다. 어쨌든 저장할 수 있는 가장 긴 롤 토토열은 약 1GB입니다. (허용되는 최대값n데이터 유형 선언의 값이 그보다 작습니다. 멀티바이트 롤 토토 인코딩을 사용하면 롤 토토 수와 바이트 수가 상당히 다를 수 있으므로 이를 변경하는 것은 유용하지 않습니다. 특정 상한선 없이 긴 롤 토토열을 저장하려면 다음을 사용하세요.텍스트또는롤 토토 다양임의의 길이 제한을 구성하는 대신 길이 지정자가 없습니다.)
팁:공백 패딩 유형을 사용할 때 저장 공간이 늘어나고 길이가 제한된 열에 저장할 때 길이를 확인하기 위해 몇 가지 추가 CPU 사이클을 제외하고는 이 세 가지 유형 간에 성능 차이가 없습니다. 동안롤 토토(n)일부 다른 데이터베이스 시스템에서는 성능 이점이 있지만 다음에는 그러한 이점이 없습니다.PostgreSQL; 사실롤 토토(n)은 추가 저장 비용과 느린 정렬로 인해 일반적으로 세 가지 중 가장 느립니다. 대부분의 상황에서텍스트또는롤 토토 다양대신 사용해야 합니다.
참조섹션 4.1.2.1롤 토토열 리터럴의 구문에 대한 정보PostgreSQL : 문서 : 9.5 : 젠 토토 및 연산자사용 가능한 연산자 및 함수에 대한 정보.
예제 8-1. 롤 토토 유형 사용
CREATE TABLE test1 (롤 토토(4));
test1 값에 삽입('확인');
SELECT a, char_length(a) FROM test1; --(1)
a | char_length
------+---------------
알았어 | 2CREATE TABLE test2 (b varchar(5));
test2 값에 삽입('확인');
test2 값에 삽입('양호');
test2 값에 삽입('너무 깁니다');오류: 다양한 유형의 롤 토토에 비해 값이 너무 깁니다(5)INSERT INTO test2 VALUES ('너무 깁니다'::varchar(5)); -- 명시적 잘림
SELECT b, char_length(b) FROM test2;b | char_length
-----+-------------
알았어 | 2
좋아 | 5
나도 | 5
char_length함수는 다음에서 논의됩니다.PostgreSQL : 문서 : 9.5 : 토토 사이트 함수 및 연산자.다음에는 두 가지 다른 고정 길이 롤 토토 유형이 있습니다.PostgreSQL, 다음에 표시됨표 8-5.이름유형이 존재함만내부 시스템 카탈로그에 식별자를 저장하기 위한 것이며 일반 사용자가 사용하도록 고안되지 않았습니다. 해당 길이는 현재 64바이트(사용 가능한 롤 토토 63개 + 종결자)로 정의되어 있지만 상수를 사용하여 참조해야 합니다.NAMEDATALENinC소스 코드. 길이는 컴파일 타임에 설정됩니다(따라서 특별한 용도로 조정 가능). 기본 최대 길이는 향후 릴리스에서 변경될 수 있습니다. 유형"롤 토토"(따옴표 참고)는 다음과 다릅니다.롤 토토(1)단 1바이트의 저장 공간만 사용합니다. 이는 시스템 카탈로그에서 단순한 열거 유형으로 내부적으로 사용됩니다.