Postgres VARCHAR vs TEXT

はじめに

PostgreSQLを使用している場合、データベーステーブルを作成する際に正しいものを選択できるように、異なるデータ型をしっかり理解することが重要です。 PostgreSQLで使用される2つの一般的な文字型はTEXTとVARCHAR型です。 この2つの型には多くの類似点がありますが、いくつかの重要な違いもあります。 この記事では、これらの文字型について詳しく学び、Postgres VARCHARとTEXTの違いを比較します。

Prerequisites

Postgres VARCHARとTEXTの比較を行う前に、この記事の例に従うために必要ないくつかの前提条件を確認しておきましょう。 サービスはバックグラウンドで実行されている必要があります。

LinuxおよびWindowsユーザーは、ここからPostgreSQLをダウンロードできます。

  • Linux 環境でPostgreSQLサーバーを起動するには、次のコマンドを使用します。
1
sudo service postgresql start
  • サービスの実行は、以下に示したコマンドで確認することができます。
1
service postgresql status

このコマンドの出力は以下のようなものです。

1
2
3
4
5
6
7
8
9
â— postgresql.service – PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor prese
Active: active (exited) since Thu 2019-08-01 14:51:20 PST; 36min ago
Process.Loaded: ロードされています。 1230 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 1230 (code=exited, status=0/SUCCESS)
Aug 01 14:51:20 user-UX330UAK systemd: PostgreSQL RDBMSの起動…
Aug 01 14:51:20 user-UX330UAK systemd: PostgreSQL RDBMS を開始しました。
1-8/8 行目 (END)
  • Windows マシンで作業している場合、以下の手順で PostgreSQL サーバーを起動、停止、再起動することが可能です。
  1. Open Control Panel
  2. Open Administrative Tools
  3. Open Services
  4. Location the PostgreSQL Server service
  5. Final, start, stop or restart the service

What are PostgreSQL Characters Types?

PostgreSQLには3つの文字型があります。 character(n)は通称char(n)character varying(n)は通称varchar(n)textは通称

です。 これらの型では、nの値は正の整数でなければなりません。 PostgreSQLの全ての文字型はn文字までの文字列を格納することができます。

このPostgreSQLの文字型の列にそれ以上の文字列を格納しようとすると、制限を超える文字が全てスペースで構成されていない限り、エラーとなります。

nの値が指定されない場合、VARCHARデータ型はTEXTデータ型と同様の動作をします。 nが省略された場合の両文字型の性能も同様です。

他のデータベースと異なり、PostgreSQLの文字型はそれらの間で性能に差はありません。 ほとんどの場合、必要に応じてTEXTまたはVARCHARを使用します。VARCHAR(n)はPostgreSQLに長さ制限のチェックを行わせたい場合に使用します。

PostgreSQL文字型を使った例

この例では、VARCHARとTEXTの比較を継続しながら文字型をより詳細に見て、それらがPostgreSQLデータベースでどう機能するかを見て行きます。

この例を進める前に、テーブルを作成する必要があります。

CREATE TABLE pgsql_char_sample (
id serial PRIMARY KEY,
my_char VARCHAR (8),
my_text TEXT
).と入力し、テーブルを作成する必要があります。

1
2
3
4
5

テーブルを作成した後、挿入操作を実行できます。

<290><4324><7069>INSERT INTO pgsql_char_sample (my_char, my_text)
VALUES
(
‘このサンプル文字列はvarchar列用です’,
‘このサンプル文字列はPostgreSQLテーブルに挿入されるtext列用です’
);

1
2
3
4
5
6

INSERT INTO pgsql_char_sample (my_char.Char_sample)

上に示したステートメントはエラーになります。

1
error.B>

1
1
エラー。 VALUE too long FOR TYPE CHARACTER VARYING(8)

このエラーは、データ型が varchar(8) である my_char 列に 8 文字より多い文字列を挿入しようとしたため発生しました。

サンプルデータをもう一度、今度は異なる値で挿入してみましょう。

1
2
3
4
5
6
INSERT INTO pgsql_char_sample (my_char, my_text)
VALUES
(
‘String’,
このサンプル文字列はPostgreSQLテーブルに挿入するtextカラム用です’
)と入力します。

挿入操作が成功したことを確認するには、次のステートメントを使用します。

1
SELECT * FROM pgsql_char_sample;

結果はこのような感じでしょう。

1
2
3
4
id | my_char | my_text
—-+———+———————————————————————

ID | my_char | my_text_5840>+———————————————————

2
4
4

1 | String | このサンプル文字列は、PostgreSQL TABLE
(1 ROW) に挿入されるテキストCOLUMNのものです

我々が見た例では、次のようになります。 VARCHAR(n)列とTEXT列の唯一の違いは、VARCHAR列に対して制限を設定できることであることがわかります。 この場合、VARCHARの長さを8文字に設定し、それ以上の長さの文字列は挿入できないようにしています。 前に述べたように、VARCHARとTEXTの文字型は性能に観察できる違いはありません。

結論

PostgreSQLで文字データを格納する場合、テーブル内の各列に対して正しいデータ型を選択することが重要です。 この記事では、PostgresのVARCHARとTEXTの文字型を比較し、その基本的な類似点と相違点について説明しました。 この記事で提供された情報により、あなたはPostgreSQLで独自のデータベーステーブルを設計し、ニーズに合わせて正しいデータ型を選択する準備ができます

コメントを残す

メールアドレスが公開されることはありません。