PostgreSQL의 Varchar 대 텍스트

Bilal Shahid 2023년6월20일
  1. PostgreSQL의 TEXT 데이터 유형
  2. PostgreSQL의 VARCHAR 데이터 유형
  3. PostgreSQL의 VARCHARTEXT
PostgreSQL의 Varchar 대 텍스트

PostgreSQL에는 정수, 날짜, 문자열 등과 같은 다양한 종류의 데이터를 저장하기 위한 여러 데이터 유형이 있습니다. 그러나 문자열 데이터 유형에는 CHAR, VARCHARTEXT의 세 가지 주요 유형이 있습니다.

이 기사에서는 VARCHARTEXT에 대해 자세히 설명하고 차이점을 비교합니다.

PostgreSQL의 TEXT 데이터 유형

데이터 유형은 저장할 수 있는 텍스트의 양에 제한이 없습니다. 따라서 이 데이터 유형을 사용하여 모든 종류의 텍스트를 필드에 삽입할 수 있으며 오류가 표시되지 않습니다.

단순 키워드 TEXT는 이 데이터 유형의 필드를 선언하기 위해 키워드 앞의 변수 이름과 함께 사용됩니다. 아래에서 몇 가지 예를 들어 자세히 설명합니다.

CREATE TABLE text_example (
    id int PRIMARY KEY,
    data TEXT NOT NULL
);

이 테이블에는 데이터를 저장하기 위한 두 가지 데이터 유형으로 INTTEXT가 있습니다. 이제 데이터를 삽입해 보겠습니다.

INSERT INTO text_example
VALUES
(1,' This text has no size limit because stored in TEXT datatype');

SELECT * FROM text_example;

다음 출력은 변수에 성공적으로 저장되었음을 보여줍니다. 이것이 대부분의 경우 TEXT 데이터 유형이 사용되는 이유입니다.

varchar vs postgresql의 텍스트 - 출력 1

PostgreSQL의 VARCHAR 데이터 유형

이 데이터 유형에는 두 가지 변형이 있습니다. VARCHAR, 문자 가변(n) 및 VARCHAR(n)이라고도 합니다. VARCHAR는 기본적으로 길이 지정자가 정의되지 않은 경우 다른 이름을 가진 TEXT 데이터 유형처럼 작동합니다.

제한이 없기 때문에 무제한 텍스트를 저장할 수 있습니다. 이전 예제를 사용하고 TEXT 데이터 유형을 VARCHAR로 변경하여 쉽게 시연할 수 있습니다.

CREATE TABLE varchar_example (
    id int PRIMARY KEY,
    data VARCHAR NOT NULL
);

이 테이블에는 데이터를 저장하는 두 가지 데이터 유형으로 INTVARCHAR가 있습니다. 이제 데이터를 삽입해 보겠습니다.

INSERT INTO varchar_example
VALUES
(1,' This text has no size limit because stored in VARCHAR datatype');

SELECT * FROM varchar_example;

다음 출력은 변수에 성공적으로 저장되었음을 보여줍니다.

varchar vs text in postgresql - 출력 2

보시다시피 TEXT 데이터 유형처럼 데이터가 성공적으로 삽입되었습니다.

이제 VARCHAR(n)으로 이동하면 VARCHAR(n) 데이터 유형에 삽입되는 문자 수를 제한할 수 있으므로 상황이 약간 흥미로워집니다. VARCHAR(n) 데이터 유형에 n자를 초과하여 저장하려고 하면 오류가 표시됩니다.

그러나 삽입된(제한을 초과하는) 문자가 모두 공백이면 오류가 없으며 해당 공백은 문자열로 잘립니다. 다음과 같이 예제 코드와 해당 출력을 통해 이를 증명할 수 있습니다.

CREATE TABLE Nvarchar_example (
    id int PRIMARY KEY,
    data VARCHAR(15) NOT NULL
);

이 테이블에는 데이터를 저장하는 두 가지 데이터 유형으로 INTVARCHAR(n)이 있습니다. 이제 데이터를 삽입해 보겠습니다.

INSERT INTO Nvarchar_example VALUES (1, 'Size is fifteen');
SELECT * FROM Nvarchar_example;

다음 출력은 변수에 성공적으로 저장되었음을 보여줍니다.

varchar vs text in postgresql - 출력 3

보시다시피 이 경우 지정된 한도를 초과하지 않았습니다. 따라서 문자열을 성공적으로 저장했습니다. 그러나 아래 예는 그렇지 않은 경우 어떤 일이 발생하는지 보여줍니다.

CREATE TABLE Nvarchar_example2 (
    id int PRIMARY KEY,
    data VARCHAR(10) NOT NULL
);

이제 데이터를 삽입해 보겠습니다.

INSERT INTO Nvarchar_example2 VALUES (1, 'Size is fifteen');

보시다시피 출력에는 데이터 유형의 크기와 관련된 오류가 표시됩니다.

postgresql의 varchar vs 텍스트 - 출력 4

VARCHAR를 사용하는 한 가지 중요한 이유는 데이터 유형의 문자 수를 제한할 수 있기 때문입니다. 문자열 삽입에 제약을 두어야 할 때 유용합니다.

PostgreSQL은 길이 지정자의 정의된 제한보다 더 많은 문자를 추가하지 못하도록 하는 오류를 발생시킵니다.

PostgreSQL의 VARCHARTEXT

이제 위의 특성을 설명한 후 이러한 데이터 유형을 언제 사용하고 언제 사용하지 않는지 보다 명확하게 판단할 수 있을 것이라고 생각합니다. 마지막으로 이해를 돕기 위해 몇 가지 일반적인 시나리오에 대해 설명합니다.

다른 데이터베이스에서는 이러한 데이터 유형 중 하나를 사용할 때 성능에 상당한 영향이 있지만 PostgreSQL에서는 두 유형 간에 눈에 띄는 성능 차이가 없습니다.

삽입하기 전에 길이 지정자 제한을 확인하기 위해 일부 증가된 저장 공간 또는 약간의 추가 CPU 주기가 있을 수 있지만 이는 무시할 수 있습니다.

두 가지 데이터 유형과 관련된 실질적인 성능 이점이 없으므로 기본적이고 필수적인 점은 삽입되는 문자의 크기를 제한할지 여부입니다.

VARCHAR(n)은 유효성 검사를 제공하며 PostgreSQL은 정의된 제한을 초과하면 오류 메시지를 표시합니다.

그 외에는 동일한 기능을 제공하는 TEXT보다 일반 VARCHAR를 사용하지 않는 것이 좋습니다. TEXT는 기억하기 쉽고 무제한 문자열 길이와 관련된 다른 이름을 갖습니다.

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub