識別子とキーワード
PostgreSQL ではテーブル名などの名前を識別子と呼びます。また SELECT などの特別な意味を持つ単語はキーワードと呼ばれます。ここでは における識別子とキーワードについて解説し、あわせて PostgreSQL で用意されているキーワードの一覧について解説します。
(Last modified: )
識別子とキーワードについて
例えば次のように SQL コマンドをを例に見てみます。
SELECT * FROM MYTBL;
この時 SELECT や FROM のように SQL の中に意味を持っている単語はキーワードと呼ばれます。それに対してテーブル名に使われている MYTBL は識別子と呼ばれます。
キーワードはあとで説明する引用符を付けない場合は識別子として利用できません。例えばテーブル名としてキーワードの SELECT を使用してテーブルを作成しようとするとエラーが発生します。
create table select (id integer);
識別子とキーワードは引用符付き識別子以外は大文字と小文字の区別をしません。なので次の 2 つの SQL コマンドは同じ意味となります。
SELECT * FROM MYTBL;
select * from mytbl;
識別子とキーワードは 1 文字目は文字またはアンダーバー(_)で始まり、 2 文字目以降は文字、アンダーバー、数字、ドル記号($)を使用できます。ただ識別子にドル記号は使用できないデータベースもあるのであまり使用しない方がいいかもしれません。
引用符付き識別子
SELECT や UPDATE など SQL として意味を持つ単語はキーワードとして PostgreSQL に登録されています。キーワードは識別子には基本的に利用できません。ただキーワードや通常使用できない空白などを含む値は引用符付きにすることで識別子としてデータベース名やテーブル名に使用できます。
引用符付き識別子にするには文字列をダブルクォーテーション(")で囲います。例えばテーブル名としてキーワードの SELECT を使用してテーブルを作成する場合は次のように引用符付き識別子にします。
create table "select" (id integer);
今度はエラーとならずにテーブルを作成できました。なおテーブル名は SELECT ではなく "SELECT" となりますのでご注意ください。
引用符付き識別子ではどんな文字でも含めることができます。ダブルクォーテーション自身を文字として使用する場合は 2 つ重ねて( "" )記述してください。
PostgreSQLで登録されているキーワードの一覧
PostgreSQL で登録されているキーワードには次のようなものがあります。
ALL ANALYSE ANALYZE AND ANY ARRAY AS ASC ASYMMETRIC AUTHORIZATION (関数または型として使用可) BINARY (関数または型として使用可) BOTH CASE CAST CHECK COLLATE COLLATION (関数または型として使用可) COLUMN CONCURRENTLY (関数または型として使用可) CONSTRAINT CREATE CROSS (関数または型として使用可) CURRENT_CATALOG CURRENT_DATE CURRENT_ROLE CURRENT_SCHEMA (関数または型として使用可) CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER DEFAULT DEFERRABLE DESC DISTINCT DO ELSE END EXCEPT FALSE FETCH FOR FOREIGN FREEZE (関数または型として使用可) FROM FULL (関数または型として使用可) GLOBAL GRANT GROUP HAVING ILIKE (関数または型として使用可) IN INLINE INNER (関数または型として使用可) INTERSECT INTO IS (関数または型として使用可) ISNULL (関数または型として使用可) LATERAL LEFT (関数または型として使用可) LIKE (関数または型として使用可) LIMIT LOCALTIME LOCALTIMESTAMP NATURAL (関数または型として使用可) NOT NOTNULL (関数または型として使用可) NULL OFFSET ON ONLY OR ORDER OUTER (関数または型として使用可) OVERLAPS (関数または型として使用可) PLACING PRIMARY REFERENCES RETURNING RIGHT (関数または型として使用可) SELECT SESSION_USER SIMILAR (関数または型として使用可) SOME SYMMETRIC TABLE TABLESAMPLE (関数または型として使用可) THEN TO TRAILING TRUE UNION UNIQUE USER USING VARIADIC VERBOSE (関数または型として使用可) WHEN WHERE WINDOW WITH
-- --
PostgreSQL における識別子とキーワードについて解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。