PostgreSQL の Varchar とテキスト
PostgreSQL には、整数、日付、文字列などのさまざまな種類のデータを格納するための複数のデータ型があります。ただし、PostgreSQL では、string
データ型には、CHAR
、VARCHAR
、および TEXT
の 3つの主要な型があります。
この記事では、VARCHAR
と TEXT
について詳しく説明し、それらの違いを比較します。
PostgreSQL の TEXT
データ型
データ型には、格納できる text
の量に制限はありません。 したがって、このデータ型のフィールドに任意の種類の テキスト
を挿入でき、エラーは表示されません。
単純なキーワード TEXT
は、このデータ型のフィールドを宣言するために、キーワードの前に変数名と共に使用されます。 以下に、いくつかの例を使用して詳しく説明します。
CREATE TABLE text_example (
id int PRIMARY KEY,
data TEXT NOT NULL
);
このテーブルには、データを格納する 2つのデータ型として INT
と TEXT
があります。 それでは、いくつかのデータを挿入しましょう。
INSERT INTO text_example
VALUES
(1,' This text has no size limit because stored in TEXT datatype');
SELECT * FROM text_example;
次の出力は、変数に正常に格納されていることを示しています。これが、ほとんどの場合、TEXT
データ型が使用される理由です。
PostgreSQL の VARCHAR
データ型
このデータ型には 2つのバリアントがあります。 VARCHAR
、文字可変 (n
)、および VARCHAR(n)
とも呼ばれます。 VARCHAR
は基本的に、長さ指定子が定義されていない場合、別の名前を持つ TEXT
データ型のように機能します。
制限が定義されていないため、無制限の text
を保存できます。 前の例を使用して、TEXT
データ型を VARCHAR
に変更することで、簡単に実証できます。
CREATE TABLE varchar_example (
id int PRIMARY KEY,
data VARCHAR NOT NULL
);
このテーブルには、データを格納する 2つのデータ型として INT
と VARCHAR
があります。 それでは、いくつかのデータを挿入しましょう。
INSERT INTO varchar_example
VALUES
(1,' This text has no size limit because stored in VARCHAR datatype');
SELECT * FROM varchar_example;
次の出力は、変数に正常に格納されたことを示しています。
ご覧のとおり、データは TEXT
データ型と同様に正常に挿入されています。
さて、VARCHAR(n)
に来て、データ型 VARCHAR(n)
に挿入される文字数を制限できるようになったので、少し興味深いものになります。 VARCHAR(n)
データ型に n
文字を超える文字を格納しようとすると、エラーが表示されます。
ただし、挿入された (制限を超えた) 文字がすべてスペースである場合、エラーは発生せず、それらのスペースは string
で切り捨てられます。 次のように、コード例とその出力を使用して実証できます。
CREATE TABLE Nvarchar_example (
id int PRIMARY KEY,
data VARCHAR(15) NOT NULL
);
このテーブルには、データを格納する 2つのデータ型として、INT
と VARCHAR(n)
があります。 それでは、いくつかのデータを挿入しましょう。
INSERT INTO Nvarchar_example VALUES (1, 'Size is fifteen');
SELECT * FROM Nvarchar_example;
次の出力は、変数に正常に格納されたことを示しています。
ご覧のとおり、この場合、指定された制限を超えていません。 したがって、string
の保存に成功しました。 ただし、以下の例は、そうでない場合に何が起こるかを示しています。
CREATE TABLE Nvarchar_example2 (
id int PRIMARY KEY,
data VARCHAR(10) NOT NULL
);
それでは、いくつかのデータを挿入しましょう。
INSERT INTO Nvarchar_example2 VALUES (1, 'Size is fifteen');
ご覧のとおり、出力にはデータ型のサイズに関するエラーが表示されます。
VARCHAR
を使用する重要な理由の 1つは、データ型の文字数を制限できることです。 string
の挿入に制約を加える必要がある場合に便利です。
PostgreSQL は、長さ指定子の定義された制限を超える文字を追加できないようにエラーをスローします。
PostgreSQL の VARCHAR
と TEXT
の比較
上記の特徴を説明した後、これらのデータ型のいずれかを使用する場合と使用しない場合をより明確に判断できるようになると思います。 最後に、理解を深めるためにいくつかの一般的なシナリオについて説明します。
他のデータベースでは、これらのデータ型のいずれかを使用するとパフォーマンスにかなりの影響がありますが、PostgreSQL では、2つの型の間に顕著なパフォーマンスの違いはありません。
挿入前に長さ指定子の制限を検証するために、ストレージ容量が増加したり、追加の CPU
サイクルが数回必要になる場合がありますが、それは無視できます。
2つのデータ型に関連する実際のパフォーマンス上の利点はないため、唯一の基本的かつ重要な点は、挿入される文字のサイズを制限するかどうかです。
VARCHAR(n)
は検証を提供し、定義された制限を超えた場合、PostgreSQL はエラー メッセージを表示します。
それ以外では、通常の VARCHAR
を TEXT
よりも優先して使用することはお勧めしません。どちらも同等の機能を提供するためであり、TEXT
には覚えやすく、文字列の長さに制限がない別の名前が付けられているためです。
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