Topik ini menjelaskan struktur leksikal dasar dari SQL Lindorm.
Informasi latar belakang
Pernyataan SQL terdiri dari urutan token dan diakhiri dengan titik koma (;). Token dapat berupa kata kunci, pengenal, konstanta, atau karakter khusus. Dua token biasanya dipisahkan oleh spasi, tab, atau baris baru.
Pengenal
Pengenal digunakan dalam pernyataan SQL untuk menunjukkan objek data seperti basis data, tabel, atau kolom. Dalam SQL Lindorm, pengenal dikutip menggunakan tanda kutip balik (`).
Pengenal tanpa tanda kutip balik harus dimulai dengan huruf dan hanya boleh mengandung huruf, angka, serta garis bawah (
_).Pengenal yang dikutip harus dimulai dan diakhiri dengan tanda kutip balik. Contoh:
`Nama Karyawan`. Pengenal tersebut dapat berisi semua jenis karakter.
Dalam SQL Lindorm, dua objek data pada level berbeda dipisahkan oleh titik (.). Sebagai contoh, Anda dapat menggunakan db.tbl untuk menentukan tabel bernama tbl dalam database bernama db.
Selain batasan leksikal umum yang disebutkan sebelumnya, pengenal juga harus mengikuti batasan mesin Lindorm tempat mereka digunakan secara aktual.
Untuk informasi lebih lanjut tentang batasan LindormTable, lihat Batasan Umum.
Untuk informasi lebih lanjut tentang batasan LindormTSDB, lihat Batasan.
Konstanta
SQL Lindorm mendukung dua jenis konstanta implisit: konstanta string dan konstanta numerik.
Konstanta String
Konstanta string merupakan urutan karakter yang diapit oleh tanda kutip tunggal (
'), contohnya:'Ini adalah string'.Parser SQL dapat mem-parsing karakter escape dalam SQL 2.8.4.8 dan versi setelahnya. Dalam konstanta string, parser menentukan apakah akan meloloskan backslash (
\) berdasarkan karakter setelah backslash. Tabel berikut menggambarkan aturan spesifik.Karakter escape
Karakter sebenarnya
\0ASCII NUL (
X'00')\'Tanda kutip tunggal (
')\"Tanda kutip ganda (
")\\Backslash (
\)\ZASCII 26 (Control-Z)
\rCarriage return
\nLine feed
Jika Anda ingin agar backslash (
\) dalam konstanta string diperlakukan sebagai karakter biasa dan bukan karakter escape, Anda dapat membatalkan perilaku escape dengan mengatur parameter SQL_MODE keNO_BACKSLASH_ESCAPES. Untuk informasi lebih lanjut, lihat Variabel Sesi.nullUntuk informasi lebih lanjut tentang cara melihat versi SQL Lindorm, lihat Versi SQL.
Hanya konstanta string dalam pernyataan SQL yang dapat di-escape. Parameter string yang ditentukan dalam pernyataan yang disiapkan untuk penulisan atau kueri berparameter tidak di-escape.
Konstanta Numerik
Tabel berikut menggambarkan format konstanta numerik yang didukung oleh SQL Lindorm.
Format
Deskripsi
digit
Nilai dalam format ini menunjukkan satu atau lebih digit desimal (0 hingga 9).
digitse[+-]digits
Nilai dalam format ini menunjukkan konstanta numerik yang berisi tanda eksponen (e). Contoh: 4e3.
angka.[angka][e[+-]angka]
Nilai dalam format ini menunjukkan konstanta numerik yang berisi tanda desimal (
.) dan tanda eksponen (e). Contoh: 5.3e2.[angka].angka[e[+-]angka]
nullKonstanta numerik tidak boleh berisi spasi atau karakter yang tidak termasuk dalam format sebelumnya.
Jika konstanta numerik mencakup tanda desimal (
.), setidaknya satu digit harus ada sebelum tanda desimal.Jika konstanta numerik berisi tanda eksponen (e), setidaknya satu digit desimal diperlukan sebelum tanda eksponen.
Karakter khusus
Beberapa karakter khusus mungkin memiliki penggunaan tertentu dalam skenario yang berbeda.
Sepasang tanda kurung (
()) digunakan untuk mengelompokkan ekspresi dan memprioritaskan konten di dalamnya, termasuk dalam sintaksis SQL pada kasus tertentu.Koma (
,) digunakan dalam berbagai sintaksis untuk memisahkan elemen yang terdaftar.Tanda titik koma (
;) digunakan untuk mengakhiri pernyataan SQL dan hanya dapat ditempatkan di akhir pernyataan SQL atau dalam konstanta string.Tanda titik dua (
:) dapat digunakan dalam pengenal untuk memisahkan nama keluarga kolom dari nama kolom.Asterisk (
*) digunakan untuk menunjukkan semua bidang dalam tabel atau kombinasi nilai dalam konteks tertentu.Tanda titik (
.) umumnya digunakan dalam konstanta numerik sebagai pemisah desimal. Selain itu, tanda titik juga dapat digunakan dalam pengenal untuk memisahkan objek data pada level yang berbeda.
Kata kunci
Kata kunci SQL diklasifikasikan menjadi kata kunci tercadang dan kata kunci non-reserved. Menurut definisi SQL, kata kunci tercadang adalah kata kunci sebenarnya yang hanya dapat digunakan sebagai pengenal ketika dirujuk dengan tanda kutip. Kata kunci non-reserved memiliki semantik khusus hanya dalam konteks tertentu dan dapat digunakan sebagai pengenal dalam konteks non-semantik.
Kata kunci yang dijelaskan dalam topik ini mungkin tidak diperbarui pada kesempatan pertama. Oleh karena itu, kami sarankan Anda untuk menanyakan tampilan sistem INFORMATION_SCHEMA.KEYWORDS untuk mendapatkan kata kunci tercadang dan non-reserved dalam SQL Lindorm di LindormTable 2.6.3 dan versi setelahnya.
Anda dapat menjalankan pernyataan SELECT * FROM information_schema.keywords WHERE WORD=UPPER('<Kata mencurigakan'); untuk memeriksa apakah suatu kata adalah kata kunci tercadang. Jika hasil set yang dikembalikan tidak kosong dan nilai bidang RESERVED adalah 1, kata tersebut adalah kata kunci tercadang.
Sebagai contoh, jika Anda ingin memeriksa apakah kata CASCADED adalah kata kunci tercadang, Anda dapat menjalankan pernyataan SELECT * FROM information_schema.keywords WHERE WORD=UPPER('CASCADED');.
Kata kunci tercadang dalam SQL Lindorm
Tabel berikut mencantumkan kata kunci tercadang dalam SQL Lindorm.
Inisial | Kata kunci tercadang |
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 |
Kata kunci non-reserved dalam SQL Lindorm
Tabel berikut mencantumkan kata kunci non-reserved dalam SQL Lindorm.
Inisial | Kata kunci non-reserved |
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 |