このトピックでは、Lindorm SQL の基本的な字句構造について説明します。
背景情報
SQL 文は一連のトークンで構成され、セミコロン(;)で終わります。トークンは、キーワード、識別子、定数、または特殊文字です。2 つのトークンは、通常、スペース、タブ、または改行で区切られます。
識別子
識別子は、SQL 文で使用され、データベース、テーブル、列などのデータオブジェクトを示します。 Lindorm SQL の識別子は、バックティック(`)を使用して引用符で囲みます。
バックティックで引用符で囲まれていない識別子は、文字で始まり、文字、数字、およびアンダースコア(
_)のみを含めることができます。引用符で囲まれた識別子は、バックティックで開始および終了する必要があります。例:
`Employee Name`。引用符で囲まれた識別子には、すべての文字を含めることができます。
Lindorm SQL では、異なるレベルにある 2 つのデータオブジェクトは、ピリオド(.)で区切られます。たとえば、db.tbl を使用して、データベース db 内のテーブル tbl を指定できます。
定数
Lindorm SQL は、2 種類の暗黙的な定数をサポートしています。文字列定数と数値定数です。
文字列定数
文字列定数は、一重引用符(
')で囲まれた一連の文字です。例:'This is a string'。SQL パーサーは、SQL 2.8.4.8 以降のエスケープ文字を解析できます。文字列定数では、パーサーは、バックスラッシュ(
\)の後の文字に基づいて、バックスラッシュをエスケープするかどうかを判断します。次の表に、具体的なルールを示します。エスケープ文字
実際の文字
\0ASCII NUL(
X'00')\'一重引用符(
')\"二重引用符(
")\\バックスラッシュ(
\)\ZASCII 26(Control-Z)
\rキャリッジリターン
\nラインフィード
文字列定数内のバックスラッシュ(
\SQL_MODE)をエスケープ文字ではなく通常の文字として扱う場合は、 パラメーターをNO_BACKSLASH_ESCAPESに設定することで、エスケープ動作をキャンセルできます。詳細については、「セッション変数」をご参照ください。説明Lindorm SQL のバージョンの確認方法については、「SQL バージョン」をご参照ください。
SQL 文の文字列定数のみをエスケープできます。パラメーター化された書き込みまたはクエリ用に準備された文で指定された文字列パラメーターはエスケープされません。
数値定数
次の表に、Lindorm SQL でサポートされている数値定数の形式を示します。
形式
説明
digits
この形式の値は、1 つ以上の 10 進数字(0 ~ 9)を示します。
digitse[+-]digits
この形式の値は、指数記号(e)を含む数値定数を示します。例:4e3。
digits.[digits][e[+-]digits]
この形式の値は、小数点(
.)と指数記号(e)を含む数値定数を示します。例:5.3e2。[digits].digits[e[+-]digits]
重要数値定数には、スペース、または上記の形式に含まれていない文字を含めることはできません。
数値定数に小数点(
.)が含まれている場合は、小数点の前に少なくとも 1 つの 10 進数字が必要です。数値定数に指数記号(e)が含まれている場合は、指数記号の前に少なくとも 1 つの 10 進数字が必要です。
特殊文字
特殊文字の中には、シナリオによって特定の用途を持つものがあります。
かっこ(
())のペアは、式をグループ化し、その中のコンテンツに優先順位を付けるために使用されます。特定の場合、かっこは SQL 構文で使用できます。カンマ(
,)は、一部の構文で、リストされた要素を区切るために使用されます。セミコロン(
;)は、SQL 文を終了するために使用されます。セミコロンは、SQL 文の末尾、または文字列定数内でのみ使用できます。コロン(
:)は、識別子内でカラムファミリー名とカラム名を区切るために使用できます。アスタリスク(
*)は、テーブル内のすべてのフィールド、またはコンテキスト内の値の組み合わせを示すために使用されます。ピリオド(
.)は、主に数値定数で小数点として使用されます。ピリオドは、識別子内で異なるレベルのデータオブジェクトを区切るためにも使用できます。
キーワード
SQL キーワードは、予約キーワードと非予約キーワードに分類されます。SQL の定義によれば、予約キーワードは真のキーワードであり、引用符で参照される場合にのみ識別子として使用できます。非予約キーワードは、特定のコンテキストでのみ特別なセマンティクスを持ち、非セマンティックコンテキストでは識別子として使用できます。
このトピックで説明されているキーワードは、すぐに更新されない場合があります。したがって、LindormTable 2.6.3 以降のバージョンでは、INFORMATION_SCHEMA.KEYWORDS システムビューをクエリして、Lindorm SQL の予約キーワードと非予約キーワードを取得することをお勧めします。
SELECT * FROM information_schema.keywords WHERE WORD=UPPER('<疑わしい単語>'); 文を実行して、単語が予約キーワードかどうかを確認できます。返された結果セットが空ではなく、RESERVED フィールドの値が 1 の場合、その単語は予約キーワードです。
たとえば、CASCADED という単語が予約キーワードかどうかを確認するには、SELECT * FROM information_schema.keywords WHERE WORD=UPPER('CASCADED'); 文を実行します。
Lindorm SQL の予約キーワード
次の表に、Lindorm SQL の予約キーワードを示します。
頭文字 | 予約キーワード |
A | ABS, ALL, ALLOCATE, ALLOW, ALTER, AND, ANY, ARE, ARRAY, ARRAY_MAX_CARDINALITY, AS, ASENSITIVE, ASYMMETRIC, AT, ATOMIC, AUTHORIZATION, AVG |
B | BEGIN, BEGIN_FRAME, BEGIN_PARTITION, BETWEEN, BIGINT, BINARY, BIT, BLOB, BOOLEAN, BOTH, BY |
C | CALL, CALLED, CARDINALITY, CASCADED, CASE, CAST, CEIL, CEILING, CHAR, CHARACTER, CHARACTER_LENGTH, CHAR_LENGTH, CHECK, CLASSIFIER, CLOB, CLOSE, COALESCE, COLLATE, COLLECT, COLUMN, COMMIT, CONDITION, CONNECT, CONSTRAINT, CONTAINS, CONVERT, CORR, CORRESPONDING, COUNT, COVAR_POP, COVAR_SAMP, CREATE, CROSS, CUBE, CUME_DIST, CURRENT, CURRENT_CATALOG, CURRENT_DATE, CURRENT_DEFAULT_TRANSFORM_GROUP, CURRENT_PATH, CURRENT_ROLE, CURRENT_ROW, CURRENT_SCHEMA, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_TRANSFORM_GROUP_FOR_TYPE, CURRENT_USER, CURSOR, CYCLE |
D | DATE, DATETIME, DAY, DEALLOCATE, DEC, DECIMAL, DECLARE, DEFAULT, DEFINE, DELETE, DENSE_RANK, DEREF, DESCRIBE, DETERMINISTIC, DISALLOW, DISCONNECT, DISTINCT, DOUBLE, DROP, DYNAMIC |
E | EACH, ELEMENT, ELSE, EMPTY, END, END-EXEC, END_FRAME, END_PARTITION, EQUALS, ESCAPE, EVERY, EXCEPT, EXEC, EXECUTE, EXISTS, EXP, EXPLAIN, EXTEND, EXTERNAL, EXTRACT |
F | FALSE, FETCH, FILTER, FIRST_VALUE, FLOAT, FLOOR, FOR, FOREIGN, FRAME_ROW, FREE, FRIDAY, FROM, FULL, FUNCTION, FUSION |
G | GEOMETRYCOLLECTION, GET, GLOBAL, GRANT, GROUP, GROUPING, GROUPS |
H | HAVING, HOLD, HOUR |
I | IDENTITY, IMPORT, IN, INDICATOR, INITIAL, INNER, INOUT, INSENSITIVE, INSERT, INT, INTEGER, INTERSECT, INTERSECTION, INTERVAL, INTO, IS |
J | JOIN, JSON_ARRAY, JSON_ARRAYAGG, JSON_EXISTS, JSON_OBJECT, JSON_OBJECTAGG, JSON_QUERY, JSON_VALUE |
L | LAG, LANGUAGE, LARGE, LAST_VALUE, LATERAL, LEAD, LEADING, LEFT, LIKE, LIKE_REGEX, LIMIT, LINESTRING, LN, LOCAL, LOCALTIME, LOCALTIMESTAMP, LOWER |
M | MATCH, MATCHES, MATCH_NUMBER, MATCH_RECOGNIZE, MAX, MEASURES, MEMBER, MERGE, METHOD, MIN, MINUS, MINUTE, MOD, MODIFIES, MODULE, MONDAY, MONTH, MULTILINESTRING, MULTIPOINT, MULTIPOLYGON, MULTISET |
N | NATIONAL, NATURAL, NCHAR, NCLOB, NEW, NEXT, NO, NONE, NORMALIZE, NOT, NTH_VALUE, NTILE, NULL, NULLIF, NUMERIC |
O | OCCURRENCES_REGEX, OCTET_LENGTH, OF, OFFSET, OLD, OMIT, ON, ONE, ONLY, OPEN, OR, ORDER, ORDINAL, OUT, OUTER, OVER, OVERLAPS, OVERLAY |
P | PARAMETER, PARTITION, PATTERN, PER, PERCENT, PERCENT_RANK, PERIOD, PERMUTE, PORTION, POSITION, POSITION_REGEX, POINT, POLYGON, POWER, PRECEDES, PRECISION, PREPARE, PREV, PRIMARY, PROCEDURE |
Q | QUALIFY |
R | RANGE, RANK, READS, REAL, RECURSIVE, REF, REFERENCES, REFERENCING, REGR_AVGX, REGR_AVGY, REGR_COUNT, REGR_INTERCEPT, REGR_R2, REGR_SLOPE, REGR_SXX, REGR_SXY, REGR_SYY, RELEASE, RESET, RESULT, RETURN, RETURNS, REVOKE, RIGHT, ROLLBACK, ROLLUP, ROW, ROWS, ROW_NUMBER, RUNNING |
S | SAFE_CAST, SAFE_OFFSET, SAFE_ORDINAL, SATURDAY, SAVEPOINT, SCOPE, SCROLL, SEARCH, SECOND, SEEK, SELECT, SENSITIVE, SESSION_USER, SET, SHOW, SIMILAR, SKIP, SMALLINT, SOME, SPECIFIC, SPECIFICTYPE, SQL, SQLEXCEPTION, SQLSTATE, SQLWARNING, SQRT, START, STATIC, STDDEV_POP, STDDEV_SAMP, STREAM, SUBMULTISET, SUBSET, SUBSTRING, SUBSTRING_REGEX, SUCCEEDS, SUM, SUNDAY, SYMMETRIC, SYSTEM, SYSTEM_TIME, SYSTEM_USER |
T | TABLE, TABLESAMPLE, THEN, THURSDAY, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, TINYINT, TO, TRAILING, TRANSLATE, TRANSLATE_REGEX, TRANSLATION, TREAT, TRIGGER, TRIM, TRIM_ARRAY, TRUE, TRUNCATE, TRY_CAST, TUESDAY |
U | UESCAPE, UNION, UNIQUE, UNKNOWN, UNNEST, UPDATE, UPPER, UPSERT, USER, USING |
V | VALUE, VALUES, VALUE_OF, VARBINARY, VARCHAR, VARYING, VAR_POP, VAR_SAMP, VERSIONING, WEDNESDAY |
W | WHEN, WHENEVER, WHERE, WIDTH_BUCKET, WINDOW, WITH, WITHIN, WITHOUT |
Y | YEAR |
Lindorm SQL の非予約キーワード
次の表に、Lindorm SQL の非予約キーワードを示します。
頭文字 | 非予約キーワード |
A | A, ABSENT, ABSOLUTE, ACTION, ADA, ADD, ADMIN, AFTER, AGGREGATORS, ALWAYS, APPLY, ARRAY_AGG, ARRAY_CONCAT_AGG, ASC, ASSERTION, ASSIGNMENT, ATTR, ATTRIBUTE, ATTRIBUTES, AUTO_INCREMENT |
B | BEFORE, BERNOULLI, BREADTH |
C | C, CASCADE, CATALOG, CATALOG_NAME, CENTURY, CHAIN, CHARACTERISTICS, CHARACTERS, CHARACTER_SET_CATALOG, CHARACTER_SET_NAME, CHARACTER_SET_SCHEMA, CLASS_ORIGIN, COBOL, COLLATION, COLLATION_CATALOG, COLLATION_NAME, COLLATION_SCHEMA, COLUMN_FAMILY, COLUMN_NAME, COLUMNS, COMMAND_FUNCTION, COMMAND_FUNCTION_CODE, COMMENT, COMMITTED, CONDITIONAL, COMPACT, CONDITION_NUMBER, CONNECTION, CONNECTION_NAME, CONSTRAINTS, CONSTRAINT_CATALOG, CONSTRAINT_NAME, CONSTRAINT_SCHEMA, CONSTRUCTOR, CONTINUE, CONTINUOUS, CURSOR_NAME |
D | DATA, DATABASE, DATETIME_DIFF, DATETIME_INTERVAL_CODE, DATETIME_INTERVAL_PRECISION, DATETIME_TRUNC, DATE_DIFF, DATE_TRUNC, DAYOFWEEK, DAYOFYEAR, DAYS, DECADE, DEFAULTS, DEFERRABLE, DEFERRED, DEFINED, DEFINER, DEGREE, DEPTH, DERIVED, DESC, DESCRIPTION, DESCRIPTOR, DIAGNOSTICS, DISPATCH, DOMAIN, DOT, DOW, DOY, DYNAMIC_FUNCTION, DYNAMIC_FUNCTION_CODE |
E | ENCODING, EPOCH, ERROR, EXCEPTION, EXCLUDE, EXCLUDING |
F | FINAL, FIRST, FOLLOWING, FORMAT, FORTRAN, FOUND, FRAC_SECOND |
G | G, GENERAL, GENERATED, GEOMETRY, GO, GOTO, GRANTED, GROUP_CONCAT |
H | HBOOLEAN, HDOUBLE, HIERARCHY, HINTEGER, HLONG, HOP, HOURS, HSHORT, HSTRING |
I | IGNORE, IF, ILIKE, IMMEDIATE, IMMEDIATELY, IMPLEMENTATION, INCLUDE, INCLUDING, INCREMENT, INITIALLY, INPUT, INSTANCE, INSTANTIABLE, INVOKER, ISODOW, ISOLATION, ISOYEAR |
J | JAVA, JSON |
K | K, KEY, KEY_MEMBER, KEY_TYPE |
L | LABEL, LAST, LENGTH, LEVEL, LIBRARY, LOCATOR |
M | M, MAP, MATCHED, MAXVALUE, MESSAGE_LENGTH, MESSAGE_OCTET_LENGTH, MESSAGE_TEXT, MICROSECOND, MILLENNIUM, MILLISECOND, MINUTES, MINVALUE, MONTHS, MORE, MUMPS |
N | NAME, NAMES, NAMESPACE, NANOSECOND, NESTING, NORMALIZED, NULLABLE, NULLS, NUMBER |
O | OBJECT, OCTETS, OPTION, OPTIONS, ORDERING, ORDINALITY, OTHERS, OUTPUT, OVERRIDING |
P | PAD, PARAMETER_MODE, PARAMETER_NAME, PARAMETER_ORDINAL_POSITION, PARAMETER_SPECIFIC_CATALOG, PARAMETER_SPECIFIC_NAME, PARAMETER_SPECIFIC_SCHEMA, PARTIAL, PARTITIONS, PASCAL, PASSING, PASSTHROUGH, PASSWORD, PAST, PATH, PERCENTILE_CONT, PERCENTILE_DISC, PIVOT, PLACING, PLAN, PLI, PRECEDING, PREDOWNSAMPLE, PREDOWNSAMPLES, PRESERVE, PRIOR, PRIVILEGES, PUBLIC |
Q | QUARTER, QUARTERS, QUERY, QUERIES |
R | READ, RELATIVE, REPEATABLE, REPLACE, RESPECT, RESTART, RESTRICT, RETURNED_CARDINALITY, RETURNED_LENGTH, RETURNED_OCTET_LENGTH, RETURNED_SQLSTATE, RETURNING, RLIKE, ROLE, ROUTINE, ROUTINE_CATALOG, ROUTINE_NAME, ROUTINE_SCHEMA, ROW, ROW_COUNT |
S | SCALAR, SCALE, SCHEMA, SCHEMA_NAME, SCOPE_CATALOGS, SCOPE_NAME, SCOPE_SCHEMA, SEARCH, SECONDS, SECTION, SECURITY, SELF, SEPARATOR, SEQUENCE, SERIALIZABLE, SERVER, SERVER_NAME, SESSION, SETS, SIMPLE, SIZE, SOURCE, SPACE, SPECIFIC_NAME, SQL_BIGINT, SQL_BINARY, SQL_BIT, SQL_BLOB, SQL_BOOLEAN, SQL_CHAR, SQL_CLOB, SQL_DATE, SQL_DECIMAL, SQL_DOUBLE, SQL_FLOAT, SQL_INTEGER, SQL_INTERVAL_DAY, SQL_INTERVAL_DAY_TO_HOUR, SQL_INTERVAL_DAY_TO_MINUTE, SQL_INTERVAL_DAY_TO_SECOND, SQL_INTERVAL_HOUR, SQL_INTERVAL_HOUR_TO_MINUTE, SQL_INTERVAL_HOUR_TO_SECOND, SQL_INTERVAL_MINUTE, SQL_INTERVAL_MINUTE_TO_SECOND, SQL_INTERVAL_MONTH, SQL_INTERVAL_SECOND, SQL_INTERVAL_YEAR, SQL_INTERVAL_YEAR_TO_MONTH, SQL_LONGVARBINARY, SQL_LONGVARCHAR, SQL_LONGVARNCHAR, SQL_NCHAR, SQL_NCLOB, SQL_NUMERIC, SQL_NVARCHAR, SQL_REAL, SQL_SMALLINT, SQL_TIME, SQL_TIMESTAMP, SQL_TINYINT, SQL_TSI_DAY, SQL_TSI_FRAC_SECOND, SQL_TSI_HOUR, SQL_TSI_MICROSECOND, SQL_TSI_MINUTE, SQL_TSI_MONTH, SQL_TSI_QUARTER, SQL_TSI_SECOND, SQL_TSI_WEEK, SQL_TSI_YEAR, SQL_VARBINARY, SQL_VARCHAR, STATE, STATEMENT, STRING_AGG, STRUCTURE, STYLE, SUBCLASS_ORIGIN, SUBSTITUTE |
T | TABLES, TABLE_NAME, TAG, TEMPORARY, TIES, TIMESTAMPADD, TIMESTAMPDIFF, TIMESTAMP_DIFF, TIMESTAMP_TRUNC, TIME_DIFF, TIME_TRUNC, TOP_LEVEL_COUNT, TRANSACTION, TRANSACTIONS_ACTIVE, TRANSACTIONS_COMMITTED, TRANSACTIONS_ROLLED_BACK, TRANSFORM, TRANSFORMS, TRASH, TRIGGER_CATALOG, TRIGGER_NAME, TRIGGER_SCHEMA, TTL, TUMBLE, TYPE |
U | UNBOUNDED, UNCOMMITTED, UNCONDITIONAL, UNDER, UNMAP, UNNAMED, UNPIVOT, USAGE, USE, USERS, USER_DEFINED_TYPE_CATALOG, USER_DEFINED_TYPE_CODE, USER_DEFINED_TYPE_NAME, USER_DEFINED_TYPE_SCHEMA, UTF16, UTF32, UTF8 |
V | VARIABLES, VERSION, VIEW, WEEK, WEEKS |
W | WILDCARD, WORK, WRAPPER, WRITE |
X | XML |
Y | YEARS |
Z | ZONE |