PostgreSQL | PostgreSQL 基本構文 | 識別子とキーワード

PostgreSQL の識別子とキーワードについて説明する。

識別子とキーワード

たとえば、次の SQL コマンドを例に見てみる。

SELECT * FROM MYTBL;

このとき、SELECTFROM のように SQL で意味を持つ単語をキーワードと呼び、テーブル名として使用されている MYTBL を識別子と呼ぶ。

キーワードは、引用符を付けない場合は識別子として使用できない。たとえば、テーブル名としてキーワード SELECT を使用してテーブルを作成しようとするとエラーが発生する。

postgres=# create table select (id integer);
エラー:  "select" 付近で構文エラー
行 1: create table select (id integer);
                   ^
postgres=#

識別子とキーワードは、引用識別子を除いて大文字と小文字を区別しない。そのため、次の 2 つの SQL コマンドは同じ意味である。

SELECT * FROM MYTBL;
select * from mytbl;

識別子とキーワードは、最初の文字を文字またはアンダースコア (_) で始め、2 文字目以降には文字、アンダースコア、数字、ドル記号 ($) を使用できる。ただし、識別子にドル記号を使用できないデータベースもあるため、あまり使用しない方がよい。

引用識別子

SELECTUPDATE など SQL として意味を持つ単語は、キーワードとして PostgreSQL に登録されている。キーワードは基本的に識別子として使用できない。ただし、キーワードや通常は使用できない空白を含む値は、引用することでデータベース名やテーブル名の識別子として使用できる。

引用識別子を使用するには、文字列をダブルクォート (") で囲む。たとえば、テーブル名としてキーワード SELECT を使用してテーブルを作成するには、次のように引用識別子を使用する。

postgres=# create table "select"(id integer);
CREATE TABLE
postgres=#

今回はエラーが発生せず、テーブルを作成できた。ここでは、テーブル名を 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 の識別子とキーワードについて説明した。