41강 SQL 초석 다지기 : PostgreSQL Character Types: CHAR, VARCHAR, TEXT
PostgreSQL
SQL 초석 다지기 41강 시작합니다.
본 강의는 PostgreSQL Tutorial을 참조합니다. https://www.postgresqltutorial.com/ |
이번 시간에는
▶ PostgreSQL Character Data Types
에 대해서 알아보는 시간입니다.
이번 강의에서는 PostgreSQL 문자 데이터 유형인 CHAR, VARCHAR 및 TEXT 선택하고 테이블에 적합한 문자 유형을 선택하는 방법에 대해 알아봅니다.
Introduction to the PostgreSQL character types
PostgreSQL은 CHARACTER(n) 또는 CHAR(n), CHARACTER VARYINGING(n) 또는 VARCHAR(n), TEXT의 세 가지 기본 문자 유형을 제공합니다. 여기서 n은 양의 정수입니다.
다음 표는 PostgreSQL의 문자 유형을 보여줍니다.:
Character Types | Description |
CHARACTER VARYING(n), VARCHAR(n) | variable-length with length limit |
CHARACTER(n), CHAR(n) | fixed-length, blank padded |
TEXT, VARCHAR | variable unlimited length |
CHAR(n) 및 VARCHAR(n) 모두 최대 n자를 저장할 수 있습니다. n자를 초과하는 문자열을 저장하려고 하면 PostgreSQL에서 오류가 발생합니다.
그러나 한 가지 예외는 과도한 문자가 모든 공백일 경우 PostgreSQL은 공백을 최대 길이(n)로 잘라내고 문자를 저장합니다.
문자열이 명시적으로 CHAR(n) 또는 VARCHAR(n)로 캐스팅된 경우 PostgreSQL은 문자열을 테이블에 삽입하기 전에 문자열 톤을 잘라냅니다.
TEXT 데이터 유형은 길이가 무제한인 문자열을 저장할 수 있습니다.
VARCHAR 데이터 유형에 n개의 정수를 지정하지 않으면 TEXT 데이터 유형처럼 작동합니다. VARCHAR(크기 n 없음)와 TEXT의 성능은 동일합니다.
VARCHAR 데이터 유형의 길이 지정자를 지정할 때의 유일한 이점은 문자가 n자를 초과하는 문자열을 VARCHAR(n) 열에 삽입하려고 하면 PostgreSQL에서 오류가 발생합니다.
VARCHAR와 달리 길이 지정자(n)가 없는 CHARACTER 또는 CHAR는 CHARACTER(1) 또는 CHAR(1)와 동일합니다.
PostgreSQL는 다른 데이터베이스 시스템과는 다릅니다. 세 가지 문자 유형 간에 성능 차이가 없습니다.
대부분의 경우 TEXT 또는 VARCHAR를 사용해야 합니다. 그리고 PostgreSQL 길이 확인을 원할 때 VARCHAR(n)을 사용합니다.
Blank Padding (공백패딩)
VARCHAR와 CHAR의 저장방법에 있어서 가장 중요한 차이는 문자를 입력하고 남는 부분에 대한 처리방법이다.
크기가 100으로 선언된 VARCHAR(100)과 CHAR(100) 타입의 칼럼에 실제 70byte 길이의 문자열을 입력하면,
VARCHAR(100)은 실제 70byte 만을 사용하는 반면, CHAR(100)은 입력한 70byte 이후의 공간인 30byte를 공백으로 채운다.
VARCHAR는 CHAR에 비해 자원은 절약되나 검색 속도는 떨어진다.
이처럼 빈 공간을 공백으로 채우는 것을 Blank Padding (공백패딩)이라 한다.
PostgreSQL character type examples
CHAR, VARCHAR 및 TEXT 데이터 유형의 작동 방식을 살펴보겠습니다.
먼저 character_tests라는 새 테이블을 만듭니다.
CREATE TABLE character_tests (
id serial PRIMARY KEY,
x CHAR (1),
y VARCHAR (10),
z TEXT
);
그런 다음 character_tests 테이블에 새 행을 삽입합니다.
INSERT
INTO
character_tests (
x,
y,
z
)
VALUES(
'Yes',
'This is a test for varchar',
'This is a very long text for the PostgreSQL text column'
);
PostgreSQL에서 오류가 발생했습니다.
x 열의 데이터 유형이 char(1)이고 이 열에 세 개의 문자가 있는 문자열을 삽입하려고 했기 때문입니다. 수정합니다:
INSERT
INTO
character_tests (
x,
y,
z
)
VALUES(
'Y',
'This is a test for varchar',
'This is a very long text for the PostgreSQL text column'
);
varchar(10) 데이터 유형이 있는 열 y에 10자 이상의 문자열을 삽입하려고 했기 때문입니다.
다음 문은 새 행을 character_tests 테이블에 성공적으로 삽입합니다.
INSERT
INTO
character_tests (
x,
y,
z
)
VALUES(
'Y',
'varchar(n)',
'This is a very long text for the PostgreSQL text column'
);
SELECT
*
FROM
character_tests;
Summary
● PostgreSQL은 CHAR, VARCHAR 및 TEXT 데이터 유형을 지원합니다. CHAR는 고정 길이 문자 유형이고 VARCHAR 및 TEXT는 다양한 길이 문자 유형입니다.
● 열에 삽입하거나 업데이트하기 전에 문자열(n)의 길이를 확인하려면 VARCHAR(n)을 사용합니다.
● VARCHAR(길이 지정자 없음)와 TEXT는 동일합니다.
수고하셨습니다.
Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다. |
'IT > SQL 기초강좌 (PostgreSQL)' 카테고리의 다른 글
43강 SQL 초석 다지기 : PostgreSQL Integer Type (5) | 2022.12.23 |
---|---|
42강 SQL 초석 다지기 : PostgreSQL NUMERIC Type (4) | 2022.12.22 |
40강 SQL 초석 다지기 : PostgreSQL Boolean Data Type (3) | 2022.12.22 |
39강 SQL이 뭐지? PostgreSQL Upsert (3) | 2022.12.21 |
38강 SQL이 뭐지? PostgreSQL DELETE JOIN (2) | 2022.12.21 |
댓글