롤 토토 : 문서 : 9.5 : 롤 토토 | |||
---|---|---|---|
토토 결과 : 문서 : 9.5 : 화폐 유형 | PostgreSQL : 문서 : 9.5 : 데이터 토토 커뮤니티 | 8 장 데이터 유형 | PostgreSQL : 문서 : 9.5 : 이진 롤 토토 유형 |
표 8-4. 롤 토토 유형
이름 | 설명 |
---|---|
캐릭터 변동 (n), varchar (n) | 한계가있는 가변 길이 |
롤 토토 (n), char (n) | 고정 길이, 블랭크 패딩 |
텍스트 | 가변 무제한 길이 |
표 8-4|PostgreSQL.
SQL두 가지 주요 롤 토토 유형을 정의합니다.캐릭터 변동 (n)및롤 토토 (n), 여기서n긍정적 인 정수입니다. 이 두 가지 유형 모두 줄을 최대로 저장할 수 있습니다n롤 토토 (바이트 아님) 길이. 더 긴 문자열을 이러한 유형의 열에 저장하려는 시도는 초과 문자가 모든 공간이 아닌 한 오류가 발생합니다.이 경우 문자열은 최대 길이로 잘립니다. (이 다소 기괴한 예외는에 필요합니다SQL표준.) 저장 될 롤 토토열이 선언 된 길이보다 짧은 경우, 유형 값캐릭터공간에 둘러싸여 있습니다. 유형의 값캐릭터 다양한단순히 짧은 롤 토토열을 저장합니다.
값을 명시 적으로 값에 캐스트하는 경우캐릭터 변동 (n)또는롤 토토 (n)n오류를 올리지 않고 롤 토토. (이것은 또한에 의해 필요합니다SQL표준.)
표기법varchar (n)andchar (n)캐릭터 변동 (n)and롤 토토 (n)각각.캐릭터길이가없는 지정자가없는 것과 같습니다롤 토토 (1). 만약에캐릭터 다양한길이 지정자없이 사용되면 유형은 모든 크기의 롤 토토열을 허용합니다. 후자는입니다.PostgreSQL확장.
또한PostgreSQL제공텍스트유형은 모든 길이의 줄을 저장합니다. 비록 유형텍스트SQL표준, 기타 여러 SQL 데이터베이스 관리 시스템도 있습니다.
유형의 값캐릭터지정된 너비까지 공백으로 물리적으로 패딩됩니다n, 저장 및 그 방식으로 표시됩니다. 그러나 후행 공간은 두 가지 유형 값을 비교할 때 의미 적으로 무의미하고 무시되는 것으로 취급됩니다캐릭터. 공백이 중요한 콜라이트에서는이 동작이 예상치 못한 결과를 낳을 수 있습니다. 예를 들어선택 'A':: char (2) Collate "C"<e'a \ n ':: char (2)비록 진실을 반환하지만C로케일은 공간이 Newline보다 큰 것으로 간주 할 것입니다. a를 변환 할 때 후행 공간이 제거됩니다.캐릭터다른 롤 토토열 유형 중 하나에 대한 값. 후행 공간are의미 적으로 유의미한캐릭터 다양한and텍스트값, 그리고 패턴 일치를 사용할 때좋아요및 정규 표현.
이러한 데이터 유형에 저장할 수있는 롤 토토는 데이터베이스가 생성 될 때 선택되는 데이터베이스 롤 토토 세트에 의해 결정됩니다. 특정 롤 토토 세트에 관계없이 코드 0 (때때로 NUL이라고 함)이있는 롤 토토를 저장할 수 없습니다. 자세한 내용은 참조섹션 22.3.
짧은 롤 토토열 (최대 126 바이트)의 스토리지 요구 사항은 1 바이트 + 실제 롤 토토열이며, 여기에는의 공간 패딩이 포함됩니다.캐릭터. 더 긴 문자열에는 1 대신 4 바이트 오버 헤드가 있습니다. 긴 문자열은 시스템에 의해 자동으로 압축되므로 디스크의 물리적 요구 사항이 적을 수 있습니다. 매우 긴 값은 또한 백그라운드 테이블에 저장되므로 더 짧은 열 값에 대한 빠른 액세스를 방해하지 않습니다. 어쨌든 저장할 수있는 가장 긴 캐릭터 문자열은 약 1GB입니다. (허용 될 최대 값n데이터 유형 선언은 그보다 적습니다. 멀티 파이트 롤 토토 인코딩을 사용하면 롤 토토 수와 바이트 수가 상당히 다를 수 있기 때문에 이것을 변경하는 것은 유용하지 않습니다. 특정 상한이없는 긴 줄을 저장하려면 사용텍스트또는캐릭터 다양한길이 지정자가없고 임의의 길이 제한을 구성하는 대신.)
팁 :공백 패드 유형을 사용할 때 저장 공간이 증가한 것 외에도이 세 가지 유형 사이에는 성능 차이가없고, 길이가 제한된 열에 저장할 때 길이를 확인하기 위해 몇 가지 추가 CPU 사이클이 있습니다. 하는 동안롤 토토 (n)다른 데이터베이스 시스템에서 성능 장점이 있으므로 그러한 이점은 없습니다.PostgreSQL; 사실은롤 토토 (n)는 일반적으로 추가 저장 비용과 느린 분류로 인해 세 가지 중 가장 느린 것입니다. 대부분의 상황에서텍스트또는캐릭터 다양한대신 사용해야합니다.
참조섹션 4.1.2.1String Literals의 구문에 대한 정보 및 toPostgreSQL : 문서 : 9.5 : 젠 토토 및 연산자가용 운영자 및 기능에 대한 정보는
예 8-1. 롤 토토 유형 사용
생성 테이블 테스트 1 (롤 토토 (4)); test1 값 ( 'Ok')에 삽입; test1에서 a, char_length (a)를 선택하고; -(1) a | char_length ------+---------- OK | 2테이블 생성 테스트 2 (b varchar (5)); test2 값 ( 'Ok')에 삽입; test2 값 ( '좋은')에 삽입; test2 값에 삽입 ( '너무 길다');오류 : 유형 롤 토토에 비해 너무 긴 값 (5)test2 값에 삽입 ( '너무 길다':: varchar (5)); - 명시 적 잘림 test2에서 b, char_length (b)를 선택하십시오.b | char_length -------+---------- OK | 2 좋은 | 5 너무 l | 5
char_length
함수는PostgreSQL : 문서 : 9.5 : 토토 사이트 함수 및 연산자.두 개의 다른 고정 길이 롤 토토 유형이 있습니다PostgreSQL, 표시표 8-5. 그만큼이름유형 존재전용내부 시스템 카탈로그에서 식별자 저장을 위해 일반 사용자가 사용하기위한 것이 아닙니다. 길이는 현재 64 바이트 (63 개의 사용 가능한 문자 + 터미네이터)로 정의되지만 상수를 사용하여 참조해야합니다지명inC소스 코드. 길이는 컴파일 시간에 설정되므로 (따라서 특수 용도로 조정 가능); 기본 최대 길이는 향후 릴리스에서 변경 될 수 있습니다. 유형"char"(인용문 참고)char (1)하나의 바이트 만 사용한다는 점에서. 시스템 카탈로그에서 내부적으로 단순한 열거 유형으로 사용됩니다.