A while ago I noticed a
forum with tips for changing the colour of some results of the mysql utility. They’re nifty but tricky and don’t look appropriate for ordinary users. So I’ll concentrate on what a GUI can do instead. I illustrate with ocelotgui but any good product should be similar.
My example table is
CREATE TABLE elements (atomic_number INTEGER PRIMARY KEY, name VARCHAR(20));
INSERT INTO elements VALUES
(48,'Cadmium'),(20,'Calcium'),(98,'Californium'),(6,'Carbon'),(58,'Cerium'),
(55,'Cesium'),(17,'Chlorine'),(24,'Chromium'),
(27,'Cobalt'),(112,'Copernicium'),(29,'Copper'),(96,'Curium');
Obvious and simple things with a Settings menu
Of course there will be a menu item for Settings that puts up a dialog box.

The important items on it will be for changing background colour and font. For example these three displays show what happens after the settings menu has changed background colours and fonts.

I prefer to use the dialog box initially and then make the changes
permanent with client statements or startup options.
HTML in the select list
HTML is designed for people who want to customize colours and fonts, and many SQL users are familiar with it, so it’s natural to want it for changing colours and fonts in an SQL result set.
For example, with a WHEN trick, here we display a column as bold, or as italic, depending on the value:
SELECT CASE
WHEN name LIKE '%ium' THEN '<b>' || name || '</i>'
ELSE '<i>' || name || '</i>'
END
AS name,
atomic_number
FROM elements;

For example, with a UNION trick, here we display in red or in blue, depending on the value:
SELECT
'<p style="color:red">' ||
CAST(atomic_number AS VARCHAR(20)) AS atomic_number,
'<p style="color:red">' || name AS name
FROM elements
WHERE atomic_number < 90
UNION ALL
SELECT atomic_number,
'<p style="color:blue">' || name AS name
FROM elements
WHERE atomic_number >= 90;

You could accomplish the same effects with REPLACE() or with stored procedures. An obvious usage is for emphasizing NULLs which otherwise are hard to distinguish from blanks. The advantage of this technique is that, even if your GUI isn’t this sophisticated, you can still get the effect by piping the result set to a file where a browser can read it. The distadvantages of this technique are: (a) it’s forcing the server to do a client job, (b) the column might contain ‘<‘ or ‘>’ or other entities, (c) some data types won’t work with the || concatenate operator (or the CONCAT function). So it’s best to have it as a non-default option (and that’s what the “HTML effects” option is for, on the first screenshot that I showed for Settings menu).
Conditional settings
The more general technique is to use a separate instruction for the setting, that will apply for all result sets, for cells that have certain characteristics. This is a bit like using cascading style sheets rather than inline HTML, but the best syntax is SQL-like, since that’s the language that users are bound to know. For example here is an instruction that changes a cell’s background colour and height if certain conditions are met (REGEXP means “regular expression”) (“SET ocelot_…” is a client-side statement that won’t get passed to the server):
SET ocelot_grid_background_color='yellow',
ocelot_grid_cell_height=40
WHERE column_name REGEXP 'number'
AND row_number <> 4 ;
SELECT * FROM elements LIMIT 6;

Images
Here is a cheap bar graph:
SELECT atomic_number,
SUBSTR('------------',1, atomic_number / 10) AS bar,
name
FROM elements;
MySQL/MariaDB users might prefer REPEAT(‘a’,atomic_number / 10) AS bar instead of SUBSTR. Unicode-character-set users might prefer Unicode 2588 â–ˆ (full block) instead of ‘-‘, to get a solid bar,

or might prefer a series of emojis.
Every good GUI can display .png of .jpg images too, so it’s not particularly hard to store them in the database and add them to the result via joins or subqueries. For example, with thanks to Wikipedia for the original picture,
SELECT atomic_number,
name,
(SELECT png
FROM "timages"
WHERE caption = 'copper')
AS png
FROM elements
WHERE name = 'copper';

but I hesitate to say that .png and .jpg images make good decoration, because they are never small.
ocelotgui 1.5.0
To be specific: the examples were all done with ocelotgui 1.5.0 and I used the options|detach menu choices so I could show only the select and grid widgets in a left-to-right order. Some of the functionality, particularly the new layout of the settings menu, is new. As always, the release is available on github.
This is a remake of the 2017 “Reserved words” blog post.
I have updated the lists and the news, and uploaded the source code to a GitHub repository.
In the 1990s C.J.Date said: “The rule by which it is determined within the standard that one key word needs to be reserved while another need not be is not clear to this writer.”
Nothing has changed since then, except there are more reserved words. No DBMS uses the standard list. So I think that it is probably best to know what words are reserved in product X that are not reserved in product Y. If you know, you can avoid syntax errors when you update or migrate.
I’ll present several comparisons, ending with a grand chart of all the reserved words in the standard and six current DBMSs.
First here’s a screenshot of ocelotgui where I’m hovering over the word BEGIN.

What I’m illustrating is that you can’t depend on intuition and assume BEGIN is reserved, but a GUI client can tell you from context: it’s a declared variable.
16 words are reserved in MariaDB but not in MySQL:
+-------------------------+
| word |
+-------------------------+
| CURRENT_ROLE |
| DO_DOMAIN_IDS |
| GENERAL |
| IGNORE_DOMAIN_IDS |
| IGNORE_SERVER_IDS |
| INTERSECT |
| MASTER_HEARTBEAT_PERIOD |
| PAGE_CHECKSUM |
| PARSE_VCOL_EXPR |
| POSITION |
| REF_SYSTEM_ID |
| RETURNING |
| SLOW |
| STATS_AUTO_RECALC |
| STATS_PERSISTENT |
| STATS_SAMPLE_PAGES |
+-------------------------+
29 words are reserved in MySQL but not in MariaDB:
+-----------------+
| word |
+-----------------+
| CUBE |
| CUME_DIST |
| DENSE_RANK |
| EMPTY |
| FIRST_VALUE |
| FUNCTION |
| GENERATED |
| GET |
| GROUPING |
| GROUPS |
| IO_AFTER_GTIDS |
| IO_BEFORE_GTIDS |
| JSON_TABLE |
| LAG |
| LAST_VALUE |
| LATERAL |
| LEAD |
| MASTER_BIND |
| NTH_VALUE |
| NTILE |
| OF |
| OPTIMIZER_COSTS |
| PERCENT_RANK |
| RANK |
| ROW |
| ROW_NUMBER |
| STORED |
| SYSTEM |
| VIRTUAL |
+-----------------+
6 words are reserved in all of (DB2 and Oracle and Microsoft) but not in (MySQL or MariaDB):
+---------+
| word |
+---------+
| ANY |
| CURRENT |
| FILE |
| PUBLIC |
| USER |
| VIEW |
+---------+
We said in SQL-99 Complete, Really: “[The standard] suggests that you include either a digit or an underline character in your regular identifiers and avoid names that begin with CURRENT_, SESSION_, SYSTEM_, or TIMEZONE_ and those that end with _LENGTH to avoid conflicts with reserved keywords added in future revisions.” It’s also good to avoid words that begin with SYS, or words that begin with the product name such as “IBM…” or “sql…”. And of course it might also be good to use “delimiters”, if you can avoid case-sensitivity confusions.
My original reason for making lists was to answer some questions about Tarantool. I do some paid work for this group, including tutorials about SQL like this one. In a post The Tarantool SQL alpha I showed why I believe that this product is far ahead of the others that I discussed in an earlier post, What’s in the SQL of NoSQL and even has some useful characteristics that MySQL/MariaDB lack. Since then it has become GA.
News about ocelotgui: on 2021-02-09 we uploaded version 1.3. As always the executables for Linux and Windows, and the source, are in
the ocelotui GitHub repository.
There is a separate README for Tarantool on the ocelotgui-tarantool GitHub repository.
There is a major fix due to a behaviour change in the latest MariaDB/MySQL versions which caused connection failure when secure_auth=1.
There is a major new feature for conditional settings of grid cells, for example you can say that the text colour will be brown and the background colour will be pink where column_name = x or row_number >= y and value regexp z.
To end this post, here is the grand finale list — all reserved words in all dialects. Sta = Standard, Mar = MariaDB, MyS = MySQL, Db2 = DB2, Ora = Oracle, Mic = Microsoft, Odb = Odbc, Tar = Tarantool. (The Mic and Odb columns represent what Microsoft recommends but doesn’t always enforce.) (The Tar column is still subject to change.)
tarantool>SELECT * FROM finale ORDER BY word;
OK 822 rows selected (0.0 seconds)
+----------------------------------+-----+-----+-----+-----+-----+-----+-----+-----+
| WORD | Sta | Mar | MyS | Db2 | Ora | Mic | Odb | Tar |
+----------------------------------+-----+-----+-----+-----+-----+-----+-----+-----+
| ABS | x | | | | | | | |
| ABSOLUTE | | | | | | | x | |
| ACCESS | | | | | x | | | |
| ACCESSIBLE | | x | x | | | | | |
| ACOS | x | | | | | | | |
| ACTION | | | | | | | x | |
| ACTIVATE | | | | x | | | | |
| ADA | | | | | | | x | |
| ADD | | x | x | x | x | x | x | |
| AFTER | | | | x | | | | |
| ALIAS | | | | x | | | | |
| ALL | x | x | x | x | x | x | x | x |
| ALLOCATE | x | | | x | | | x | |
| ALLOW | | | | x | | | | |
| ALTER | x | x | x | x | x | x | x | x |
| ANALYZE | | x | x | | | | | x |
| AND | x | x | x | x | x | x | x | x |
| ANY | x | | | x | x | x | x | x |
| ARE | x | | | | | | x | |
| ARRAY | x | | | | | | | |
| ARRAY_AGG | x | | | | | | | |
| ARRAY_MAX_CARDINALITY | x | | | | | | | |
| AS | x | x | x | x | x | x | x | x |
| ASC | | x | x | | x | x | x | x |
| ASENSITIVE | x | x | x | x | | | | x |
| ASIN | x | | | | | | | |
| ASSERTION | | | | | | | x | |
| ASSOCIATE | | | | x | | | | |
| ASUTIME | | | | x | | | | |
| ASYMMETRIC | x | | | | | | | |
| AT | x | | | x | | | x | |
| ATAN | x | | | | | | | |
| ATOMIC | x | | | | | | | |
| ATTRIBUTES | | | | x | | | | |
| AUDIT | | | | x | x | | | |
| AUTHORIZATION | x | | | x | | x | x | |
| AUTOINCREMENT | | | | | | | | x |
| AUX | | | | x | | | | |
| AUXILIARY | | | | x | | | | |
| AVG | x | | | | | | x | |
| BACKUP | | | | | | x | | |
| BEFORE | | x | x | x | | | | |
| BEGIN | x | | | x | | x | x | x |
| BEGIN_FRAME | x | | | | | | | |
| BEGIN_PARTITION | x | | | | | | | |
| BETWEEN | x | x | x | x | x | x | x | x |
| BIGINT | x | x | x | | | | | |
| BINARY | x | x | x | x | | | | x |
| BIT | | | | | | | x | |
| BIT_LENGTH | | | | | | | x | |
| BLOB | x | x | x | | | | | x |
| BOOL | | | | | | | | x |
| BOOLEAN | x | | | | | | | x |
| BOTH | x | x | x | | | | x | x |
| BREAK | | | | | | x | | |
| BROWSE | | | | | | x | | |
| BUFFERPOOL | | | | x | | | | |
| BULK | | | | | | x | | |
| BY | x | x | x | x | x | x | x | x |
| CACHE | | | | x | | | | |
| CALL | x | x | x | x | | | | x |
| CALLED | x | | | x | | | | |
| CAPTURE | | | | x | | | | |
| CARDINALITY | x | | | x | | | | |
| CASCADE | | x | x | | | x | x | |
| CASCADED | x | | | x | | | x | |
| CASE | x | x | x | x | | x | x | x |
| CAST | x | | | x | | | x | x |
| CATALOG | | | | | | | x | |
| CCSID | | | | x | | | | |
| CEIL | x | | | | | | | |
| CEILING | x | | | | | | | |
| CHANGE | | x | x | | | | | |
| CHAR | x | x | x | x | x | | x | x |
| CHARACTER | x | x | x | x | | | x | x |
| CHARACTER_LENGTH | x | | | | | | x | |
| CHAR_LENGTH | x | | | | | | x | |
| CHECK | x | x | x | x | x | x | x | x |
| CHECKPOINT | | | | | | x | | |
| CLASSIFIER | x | | | | | | | |
| CLOB | x | | | | | | | |
| CLONE | | | | x | | | | |
| CLOSE | x | | | x | | x | x | |
| CLUSTER | | | | x | x | | | |
| CLUSTERED | | | | | | x | | |
| COALESCE | x | | | | | x | x | |
| COLLATE | x | x | x | | | x | x | x |
| COLLATION | | | | | | | x | |
| COLLECT | x | | | | | | | |
| COLLECTION | | | | x | | | | |
| COLLID | | | | x | | | | |
| COLUMN | x | x | x | x | x | x | x | x |
| COLUMN_VALUE | | | | | x | | | |
| COMMENT | | | | x | x | | | |
| COMMIT | x | | | x | | x | x | x |
| COMPRESS | | | | | x | | | |
| COMPUTE | | | | | | x | | |
| CONCAT | | | | x | | | | |
| CONDITION | x | x | x | x | | | | x |
| CONNECT | x | | | x | x | | x | x |
| CONNECTION | | | | x | | | x | |
| CONSTRAINT | x | x | x | x | | x | x | x |
| CONSTRAINTS | | | | | | | x | |
| CONTAINS | x | | | x | | x | | |
| CONTAINSTABLE | | | | | | x | | |
| CONTINUE | | x | x | x | | x | x | |
| CONVERT | x | x | x | | | x | x | |
| COPY | x | | | | | | | |
| CORR | x | | | | | | | |
| CORRESPONDING | x | | | | | | x | |
| COS | x | | | | | | | |
| COSH | x | | | | | | | |
| COUNT | x | | | x | | | x | |
| COUNT_BIG | | | | x | | | | |
| COVAR_POP | x | | | | | | | |
| COVAR_SAMP | x | | | | | | | |
| CREATE | x | x | x | x | x | x | x | x |
| CROSS | x | x | x | x | | x | x | x |
| CUBE | x | | x | | | | | |
| CUME_DIST | x | | x | | | | | |
| CURRENT | x | | | x | x | x | x | x |
| CURRENT_CATALOG | x | | | | | | | |
| CURRENT_DATE | x | x | x | x | | x | x | x |
| CURRENT_DEFAULT_TRANSFORM_GROUP | x | | | | | | | |
| CURRENT_LC_CTYPE | | | | x | | | | |
| CURRENT_PATH | x | | | x | | | | |
| CURRENT_ROLE | x | x | | | | | | |
| CURRENT_ROW | x | | | | | | | |
| CURRENT_SCHEMA | x | | | x | | | | |
| CURRENT_SERVER | | | | x | | | | |
| CURRENT_TIME | x | x | x | x | | x | x | x |
| CURRENT_TIMESTAMP | x | x | x | x | | x | x | x |
| CURRENT_TIMEZONE | | | | x | | | | |
| CURRENT_TRANSFORM_GROUP_FOR_TYPE | x | | | | | | | |
| CURRENT_USER | x | x | x | x | | x | x | x |
| CURSOR | x | x | x | x | | x | x | x |
| CYCLE | x | | | x | | | | |
| DATA | | | | x | | | | |
| DATABASE | | x | x | x | | x | | |
| DATABASES | | x | x | | | | | |
| DATAPARTITIONNAME | | | | x | | | | |
| DATAPARTITIONNUM | | | | x | | | | |
| DATE | x | | | x | x | | x | x |
| DATETIME | | | | | | | | x |
| DAY | x | | | x | | | x | |
| DAYS | | | | x | | | | |
| DAY_HOUR | | x | x | | | | | |
| DAY_MICROSECOND | | x | x | | | | | |
| DAY_MINUTE | | x | x | | | | | |
| DAY_SECOND | | x | x | | | | | |
| DB2GENERAL | | | | x | | | | |
| DB2GENRL | | | | x | | | | |
| DB2SQL | | | | x | | | | |
| DBCC | | | | | | x | | |
| DBINFO | | | | x | | | | |
| DBPARTITIONNAME | | | | x | | | | |
| DBPARTITIONNUM | | | | x | | | | |
| DEALLOCATE | x | | | x | | x | x | |
| DEC | x | x | x | | | | x | |
| DECFLOAT | x | | | | | | | |
| DECIMAL | x | x | x | | x | | x | x |
| DECLARE | x | x | x | x | | x | x | x |
| DEFAULT | x | x | x | x | x | x | x | x |
| DEFAULTS | | | | x | | | | |
| DEFERRABLE | | | | | | | x | x |
| DEFERRED | | | | | | | x | |
| DEFINE | x | | | | | | | |
| DEFINITION | | | | x | | | | |
| DELAYED | | x | x | | | | | |
| DELETE | x | x | x | x | x | x | x | x |
| DENSERANK | | | | x | | | | |
| DENSE_RANK | x | | x | x | | | | x |
| DENY | | | | | | x | | |
| DEREF | x | | | | | | | |
| DESC | | x | x | | x | x | x | x |
| DESCRIBE | x | x | x | x | | | x | x |
| DESCRIPTOR | | | | x | | | x | |
| DETERMINISTIC | x | x | x | x | | | | x |
| DIAGNOSTICS | | | | x | | | x | |
| DISABLE | | | | x | | | | |
| DISALLOW | | | | x | | | | |
| DISCONNECT | x | | | x | | | x | |
| DISK | | | | | | x | | |
| DISTINCT | x | x | x | x | x | x | x | x |
| DISTINCTROW | | x | x | | | | | |
| DISTRIBUTED | | | | | | x | | |
| DIV | | x | x | | | | | |
| DO | | | | x | | | | |
| DOCUMENT | | | | x | | | | |
| DOMAIN | | | | | | | x | |
| DOUBLE | x | x | x | x | | x | x | x |
| DO_DOMAIN_IDS | | x | | | | | | |
| DROP | x | x | x | x | x | x | x | x |
| DSSIZE | | | | x | | | | |
| DUAL | | x | x | | | | | |
| DUMP | | | | | | x | | |
| DYNAMIC | x | | | x | | | | |
| EACH | x | x | x | x | | | | x |
| EDITPROC | | | | x | | | | |
| ELEMENT | x | | | | | | | |
| ELSE | x | x | x | x | x | x | x | x |
| ELSEIF | | x | x | x | | | | x |
| EMPTY | x | | x | | | | | |
| ENABLE | | | | x | | | | |
| ENCLOSED | | x | x | | | | | |
| ENCODING | | | | x | | | | |
| ENCRYPTION | | | | x | | | | |
| END | x | | | x | | x | x | x |
| END-EXEC | x | | | x | | | x | |
| ENDING | | | | x | | | | |
| END_FRAME | x | | | | | | | |
| END_PARTITION | x | | | | | | | |
| EQUALS | x | | | | | | | |
| ERASE | | | | x | | | | |
| ERRLVL | | | | | | x | | |
| ESCAPE | x | | | x | | x | x | x |
| ESCAPED | | x | x | | | | | |
| EVERY | x | | | x | | | | |
| EXCEPT | x | x | x | x | | x | x | x |
| EXCEPTION | | | | x | | | x | |
| EXCLUDING | | | | x | | | | |
| EXCLUSIVE | | | | x | x | | | |
| EXEC | x | | | | | x | x | |
| EXECUTE | x | | | x | | x | x | |
| EXISTS | x | x | x | x | x | x | x | x |
| EXIT | | x | x | x | | x | | |
| EXP | x | | | | | | | |
| EXPLAIN | | x | x | x | | | | x |
| EXTENDED | | | | x | | | | |
| EXTERNAL | x | | | x | | x | x | |
| EXTRACT | x | | | x | | | x | |
| FALSE | x | x | x | | | | x | x |
| FENCED | | | | x | | | | |
| FETCH | x | x | x | x | | x | x | x |
| FIELDPROC | | | | x | | | | |
| FILE | | | | x | x | x | | |
| FILLFACTOR | | | | | | x | | |
| FILTER | x | | | | | | | |
| FINAL | | | | x | | | | |
| FIRST | | | | | | | x | |
| FIRST1 | | | | x | | | | |
| FIRST_VALUE | x | | x | | | | | |
| FLOAT | x | x | x | | x | | x | x |
| FLOAT4 | | x | x | | | | | |
| FLOAT8 | | x | x | | | | | |
| FLOOR | x | | | | | | | |
| FOR | x | x | x | x | x | x | x | x |
| FORCE | | x | x | | | | | |
| FOREIGN | x | x | x | x | | x | x | x |
| FORTRAN | | | | | | | x | |
| FOUND | | | | | | | x | |
| FRAME_ROW | x | | | | | | | |
| FREE | x | | | x | | | | |
| FREETEXT | | | | | | x | | |
| FREETEXTTABLE | | | | | | x | | |
| FROM | x | x | x | x | x | x | x | x |
| FULL | x | | | x | | x | x | x |
| FULLTEXT | | x | x | | | | | |
| FUNCTION | x | | x | x | | x | | x |
| FUSION | x | | | | | | | |
| GENERAL | | x | | x | | | | |
| GENERATED | | | x | x | | | | |
| GET | x | | x | x | | | x | x |
| GLOBAL | x | | | x | | | x | |
| GO | | | | x | | | x | |
| GOTO | | | | x | | x | x | |
| GRANT | x | x | x | x | x | x | x | x |
| GRAPHIC | | | | x | | | | |
| GROUP | x | x | x | x | x | x | x | x |
| GROUPING | x | | x | | | | | |
| GROUPS | x | | x | | | | | |
| HANDLER | | | | x | | | | |
| HASH | | | | x | | | | |
| HASHED_VALUE | | | | x | | | | |
| HAVING | x | x | x | x | x | x | x | x |
| HIGH_PRIORITY | | x | x | | | | | |
| HINT | | | | x | | | | |
| HOLD | x | | | x | | | | |
| HOLDLOCK | | | | | | x | | |
| HOUR | x | | | x | | | x | |
| HOURS | | | | x | | | | |
| HOUR_MICROSECOND | | x | x | | | | | |
| HOUR_MINUTE | | x | x | | | | | |
| HOUR_SECOND | | x | x | | | | | |
| IDENTIFIED | | | | | x | | | |
| IDENTITY | x | | | x | | x | x | |
| IDENTITYCOL | | | | | | x | | |
| IDENTITY_INSERT | | | | | | x | | |
| IF | | x | x | x | | x | | x |
| IGNORE | | x | x | | | | | |
| IGNORE_DOMAIN_IDS | | x | | | | | | |
| IGNORE_SERVER_IDS | | x | | | | | | |
| IMMEDIATE | | | | x | x | | x | x |
| IMPORT | | | | x | | | | |
| IN | x | x | x | x | x | x | x | x |
| INCLUDE | | | | | | | x | |
| INCLUDING | | | | x | | | | |
| INCLUSIVE | | | | x | | | | |
| INCREMENT | | | | x | x | | | |
| INDEX | | x | x | x | x | x | x | x |
| INDICATOR | x | | | x | | | x | |
| INDICATORS | | | | x | | | | |
| INF | | | | x | | | | |
| INFILE | | x | x | | | | | |
| INFINITY | | | | x | | | | |
| INHERIT | | | | x | | | | |
| INITIAL | x | | | | x | | | |
| INITIALLY | | | | | | | x | |
| INNER | x | x | x | x | | x | x | x |
| INOUT | x | x | x | x | | | | x |
| INPUT | | | | | | | x | |
| INSENSITIVE | x | x | x | x | | | x | x |
| INSERT | x | x | x | x | x | x | x | x |
| INT | x | x | x | | | | x | x |
| INT1 | | x | x | | | | | |
| INT2 | | x | x | | | | | |
| INT3 | | x | x | | | | | |
| INT4 | | x | x | | | | | |
| INT8 | | x | x | | | | | |
| INTEGER | x | x | x | | x | | x | x |
| INTEGRITY | | | | x | | | | |
| INTERSECT | x | x | | x | x | x | x | x |
| INTERSECTION | x | | | | | | | |
| INTERVAL | x | x | x | | | | x | |
| INTO | x | x | x | x | x | x | x | x |
| IO_AFTER_GTIDS | | | x | | | | | |
| IO_BEFORE_GTIDS | | | x | | | | | |
| IS | x | x | x | x | x | x | x | x |
| ISNULL | | | | x | | | | |
| ISOBID | | | | x | | | | |
| ISOLATION | | | | x | | | x | |
| ITERATE | | x | x | x | | | | x |
| JAR | | | | x | | | | |
| JAVA | | | | x | | | | |
| JOIN | x | x | x | x | | x | x | x |
| JSON_ARRAY | x | | | | | | | |
| JSON_ARRAYAGG | x | | | | | | | |
| JSON_EXISTS | x | | | | | | | |
| JSON_OBJECT | x | | | | | | | |
| JSON_OBJECTAGG | x | | | | | | | |
| JSON_QUERY | x | | | | | | | |
| JSON_TABLE | x | | x | | | | | |
| JSON_TABLE_PRIMITIVE | x | | | | | | | |
| JSON_VALUE | x | | | | | | | |
| KEEP | | | | x | | | | |
| KEY | | x | x | x | | x | x | |
| KEYS | | x | x | | | | | |
| KILL | | x | x | | | x | | |
| LABEL | | | | x | | | | |
| LAG | x | | x | | | | | |
| LANGUAGE | x | | | x | | | x | |
| LARGE | x | | | | | | | |
| LAST | | | | | | | x | |
| LAST3 | | | | x | | | | |
| LAST_VALUE | x | | x | | | | | |
| LATERAL | x | | x | x | | | | |
| LC_CTYPE | | | | x | | | | |
| LEAD | x | | x | | | | | |
| LEADING | x | x | x | | | | x | x |
| LEAVE | | x | x | x | | | | x |
| LEFT | x | x | x | x | | x | x | x |
| LEVEL | | | | | x | | x | |
| LIKE | x | x | x | x | x | x | x | x |
| LIKE_REGEX | x | | | | | | | |
| LIMIT | | x | x | x | | | | x |
| LINEAR | | x | x | | | | | |
| LINENO | | | | | | x | | |
| LINES | | x | x | | | | | |
| LINKTYPE | | | | x | | | | |
| LISTAGG | x | | | | | | | |
| LN | x | | | | | | | |
| LOAD | | x | x | | | x | | |
| LOCAL | x | | | x | | | x | |
| LOCALDATE | | | | x | | | | |
| LOCALE | | | | x | | | | |
| LOCALTIME | x | x | x | x | | | | x |
| LOCALTIMESTAMP | x | x | x | x | | | | x |
| LOCATOR | | | | x | | | | |
| LOCATORS | | | | x | | | | |
| LOCK | | x | x | x | x | | | |
| LOCKMAX | | | | x | | | | |
| LOCKSIZE | | | | x | | | | |
| LOG | x | | | | | | | |
| LOG10 | x | | | | | | | |
| LONG | | x | x | x | x | | | |
| LONGBLOB | | x | x | | | | | |
| LONGTEXT | | x | x | | | | | |
| LOOP | | x | x | x | | | | x |
| LOWER | x | | | | | | x | |
| LOW_PRIORITY | | x | x | | | | | |
| MAINTAINED | | | | x | | | | |
| MASTER_BIND | | | x | | | | | |
| MASTER_HEARTBEAT_PERIOD | | x | | | | | | |
| MASTER_SSL_VERIFY_SERVER_CERT | | x | x | | | | | |
| MATCH | x | x | x | | | | x | x |
| MATCHES | x | | | | | | | |
| MATCH_NUMBER | x | | | | | | | |
| MATCH_RECOGNIZE | x | | | | | | | |
| MATERIALIZED | | | | x | | | | |
| MAX | x | | | | | | x | |
| MAXEXTENTS | | | | | x | | | |
| MAXVALUE | | x | x | x | | | | |
| MEDIUMBLOB | | x | x | | | | | |
| MEDIUMINT | | x | x | | | | | |
| MEDIUMTEXT | | x | x | | | | | |
| MEMBER | x | | | | | | | |
| MERGE | x | | | | | x | | |
| METHOD | x | | | | | | | |
| MICROSECOND | | | | x | | | | |
| MICROSECONDS | | | | x | | | | |
| MIDDLEINT | | x | x | | | | | |
| MIN | x | | | | | | x | |
| MINUS | | | | | x | | | |
| MINUTE | x | | | x | | | x | |
| MINUTES | | | | x | | | | |
| MINUTE_MICROSECOND | | x | x | | | | | |
| MINUTE_SECOND | | x | x | | | | | |
| MINVALUE | | | | x | | | | |
| MLSLABEL | | | | | x | | | |
| MOD | x | x | x | | | | | |
| MODE | | | | x | x | | | |
| MODIFIES | x | x | x | x | | | | |
| MODIFY | | | | | x | | | |
| MODULE | x | | | | | | x | |
| MONTH | x | | | x | | | x | |
| MONTHS | | | | x | | | | |
| MULTISET | x | | | | | | | |
| NAMES | | | | | | | x | |
| NAN | | | | x | | | | |
| NATIONAL | x | | | | | x | x | |
| NATURAL | x | x | x | | | | x | x |
| NCHAR | x | | | | | | x | |
| NCLOB | x | | | | | | | |
| NESTED_TABLE_ID | | | | | x | | | |
| NEW | x | | | x | | | | |
| NEW_TABLE | | | | x | | | | |
| NEXT | | | | | | | x | |
| NEXTVAL | | | | x | | | | |
| NO | x | | | x | | | x | |
| NOAUDIT | | | | | x | | | |
| NOCACHE | | | | x | | | | |
| NOCHECK | | | | | | x | | |
| NOCOMPRESS | | | | | x | | | |
| NOCYCLE | | | | x | | | | |
| NODENAME | | | | x | | | | |
| NODENUMBER | | | | x | | | | |
| NOMAXVALUE | | | | x | | | | |
| NOMINVALUE | | | | x | | | | |
| NONCLUSTERED | | | | | | x | | |
| NONE | x | | | x | | | x | |
| NOORDER | | | | x | | | | |
| NORMALIZE | x | | | | | | | |
| NORMALIZED | | | | x | | | | |
| NOT | x | x | x | | x | x | x | x |
| NOT2 | | | | x | | | | |
| NOTNULL | | | | x | | | | |
| NOWAIT | | | | | x | | | |
| NO_WRITE_TO_BINLOG | | x | x | | | | | |
| NTH_VALUE | x | | x | | | | | |
| NTILE | x | | x | | | | | |
| NULL | x | x | x | x | x | x | x | x |
| NULLIF | x | | | | | x | x | |
| NULLS | | | | x | | | | |
| NUM | | | | | | | | x |
| NUMBER | | | | | x | | | x |
| NUMERIC | x | x | x | | | | x | x |
| NUMPARTS | | | | x | | | | |
| OBID | | | | x | | | | |
| OCCURRENCES_REGEX | x | | | | | | | |
| OCTET_LENGTH | x | | | | | | x | |
| OF | x | | x | x | x | x | x | x |
| OFF | | | | x | | x | | |
| OFFLINE | | | | | x | | | |
| OFFSET | x | | | x | | | | |
| OFFSETS | | | | | | x | | |
| OLD | x | | | x | | | | |
| OLD_TABLE | | | | x | | | | |
| OMIT | x | | | | | | | |
| ON | x | x | x | x | x | x | x | x |
| ONE | x | | | | | | | |
| ONLINE | | | | | x | | | |
| ONLY | x | | | | | | x | |
| OPEN | x | | | x | | x | x | |
| OPENDATASOURCE | | | | | | x | | |
| OPENQUERY | | | | | | x | | |
| OPENROWSET | | | | | | x | | |
| OPENXML | | | | | | x | | |
| OPTIMIZATION | | | | x | | | | |
| OPTIMIZE | | x | x | x | | | | |
| OPTIMIZER_COSTS | | | x | | | | | |
| OPTION | | x | x | x | x | x | x | |
| OPTIONALLY | | x | x | | | | | |
| OR | x | x | x | x | x | x | x | x |
| ORDER | x | x | x | x | x | x | x | x |
| OUT | x | x | x | x | | | | x |
| OUTER | x | x | x | x | | x | x | x |
| OUTFILE | | x | x | | | | | |
| OUTPUT | | | | | | | x | |
| OVER | x | x | x | x | | x | | x |
| OVERLAPS | x | | | | | | x | |
| OVERLAY | x | | | | | | | |
| OVERRIDING | | | | x | | | | |
| PACKAGE | | | | x | | | | |
| PAD | | | | | | | x | |
| PADDED | | | | x | | | | |
| PAGESIZE | | | | x | | | | |
| PAGE_CHECKSUM | | x | | | | | | |
| PARAMETER | x | | | x | | | | |
| PARSE_VCOL_EXPR | | x | | | | | | |
| PART | | | | x | | | | |
| PARTIAL | | | | | | | x | x |
| PARTITION | x | x | x | x | | | | x |
| PARTITIONED | | | | x | | | | |
| PARTITIONING | | | | x | | | | |
| PARTITIONS | | | | x | | | | |
| PASCAL | | | | | | | x | |
| PASSWORD | | | | x | | | | |
| PATH | | | | x | | | | |
| PATTERN | x | | | | | | | |
| PCTFREE | | | | | x | | | |
| PER | x | | | | | | | |
| PERCENT | x | | | x | | x | | |
| PERCENTILE_CONT | x | | | | | | | |
| PERCENTILE_DISC | x | | | | | | | |
| PERCENT_RANK | x | | x | | | | | |
| PERIOD | x | | | | | | | |
| PIECESIZE | | | | x | | | | |
| PIVOT | | | | | | x | | |
| PLAN | | | | x | | x | | |
| PORTION | x | | | | | | | |
| POSITION | x | x | | x | | | x | |
| POSITION_REGEX | x | | | | | | | |
| POWER | x | | | | | | | |
| PRAGMA | | | | | | | | x |
| PRECEDES | x | | | | | | | |
| PRECISION | x | x | x | x | | x | x | x |
| PREPARE | x | | | x | | | x | |
| PRESERVE | | | | | | | x | |
| PREVVAL | | | | x | | | | |
| PRIMARY | x | x | x | x | | x | x | x |
| PRINT | | | | | | x | | |
| PRIOR | | | | | x | | x | |
| PRIQTY | | | | x | | | | |
| PRIVILEGES | | | | x | | | x | |
| PROC | | | | | | x | | |
| PROCEDURE | x | x | x | x | | x | x | x |
| PROGRAM | | | | x | | | | |
| PSID | | | | x | | | | |
| PTF | x | | | | | | | |
| PUBLIC | | | | x | x | x | x | |
| PURGE | | x | x | | | | | |
| QUERY | | | | x | | | | |
| QUERYNO | | | | x | | | | |
| RAISERROR | | | | | | x | | |
| RANGE | x | x | x | x | | | | x |
| RANK | x | | x | x | | | | x |
| RAW | | | | | x | | | |
| READ | | x | x | x | | x | x | |
| READS | x | x | x | x | | | | x |
| READTEXT | | | | | | x | | |
| READ_WRITE | | x | x | | | | | |
| REAL | x | x | x | | | | x | x |
| RECONFIGURE | | | | | | x | | |
| RECOVERY | | | | x | | | | |
| RECURSIVE | x | x | x | | | | | x |
| REF | x | | | | | | | |
| REFERENCES | x | x | x | x | | x | x | x |
| REFERENCING | x | | | x | | | | |
| REFRESH | | | | x | | | | |
| REF_SYSTEM_ID | | x | | | | | | |
| REGEXP | | x | x | | | | | x |
| REGR_AVGX | x | | | | | | | |
| REGR_AVGY | x | | | | | | | |
| REGR_COUNT | x | | | | | | | |
| REGR_INTERCEPT | x | | | | | | | |
| REGR_R2 | x | | | | | | | |
| REGR_SLOPE | x | | | | | | | |
| REGR_SXX | x | | | | | | | |
| REGR_SXY | x | | | | | | | |
| REGR_SYY | x | | | | | | | |
| RELATIVE | | | | | | | x | |
| RELEASE | x | x | x | x | | | | x |
| RENAME | | x | x | x | x | | | x |
| REPEAT | | x | x | x | | | | x |
| REPLACE | | x | x | | | | | x |
| REPLICATION | | | | | | x | | |
| REQUIRE | | x | x | | | | | |
| RESET | | | | x | | | | |
| RESIGNAL | | x | x | x | | | | x |
| RESOURCE | | | | | x | | | |
| RESTART | | | | x | | | | |
| RESTORE | | | | | | x | | |
| RESTRICT | | x | x | x | | x | x | |
| RESULT | x | | | x | | | | |
| RESULT_SET_LOCATOR | | | | x | | | | |
| RETURN | x | x | x | x | | x | | x |
| RETURNING | | x | | | | | | |
| RETURNS | x | | | x | | | | |
| REVERT | | | | | | x | | |
| REVOKE | x | x | x | x | x | x | x | x |
| RIGHT | x | x | x | x | | x | x | x |
| RLIKE | | x | x | | | | | |
| ROLE | | | | x | | | | |
| ROLLBACK | x | | | x | | x | x | x |
| ROLLUP | x | | | | | | | |
| ROUND_CEILING | | | | x | | | | |
| ROUND_DOWN | | | | x | | | | |
| ROUND_FLOOR | | | | x | | | | |
| ROUND_HALF_DOWN | | | | x | | | | |
| ROUND_HALF_EVEN | | | | x | | | | |
| ROUND_HALF_UP | | | | x | | | | |
| ROUND_UP | | | | x | | | | |
| ROUTINE | | | | x | | | | |
| ROW | x | | x | x | x | | | x |
| ROWCOUNT | | | | | | x | | |
| ROWGUIDCOL | | | | | | x | | |
| ROWID | | | | | x | | | |
| ROWNUM | | | | | x | | | |
| ROWNUMBER | | | | x | | | | |
| ROWS | x | x | x | x | x | | x | x |
| ROWSET | | | | x | | | | |
| ROW_NUMBER | x | | x | x | | | | x |
| RRN | | | | x | | | | |
| RULE | | | | | | x | | |
| RUN | | | | x | | | | |
| RUNNING | x | | | | | | | |
| SAVE | | | | | | x | | |
| SAVEPOINT | x | | | x | | | | x |
| SCALAR | | | | | | | | x |
| SCHEMA | | x | x | x | | x | x | |
| SCHEMAS | | x | x | | | | | |
| SCOPE | x | | | | | | | |
| SCRATCHPAD | | | | x | | | | |
| SCROLL | x | | | x | | | x | |
| SEARCH | x | | | x | | | | |
| SECOND | x | | | x | | | x | |
| SECONDS | | | | x | | | | |
| SECOND_MICROSECOND | | x | x | | | | | |
| SECQTY | | | | x | | | | |
| SECTION | | | | | | | x | |
| SECURITY | | | | x | | | | |
| SECURITYAUDIT | | | | | | x | | |
| SEEK | x | | | | | | | |
| SELECT | x | x | x | x | x | x | x | x |
| SEMANTICKEYPHRASETABLE | | | | | | x | | |
| SEMANTICSIMILARITYDETAILSTABLE | | | | | | x | | |
| SEMANTICSIMILARITYTABLE | | | | | | x | | |
| SENSITIVE | x | x | x | x | | | | x |
| SEPARATOR | | x | x | | | | | |
| SEQUENCE | | | | x | | | | |
| SESSION | | | | x | x | | x | x |
| SESSION_USER | x | | | x | | x | x | |
| SET | x | x | x | x | x | x | x | x |
| SETUSER | | | | | | x | | |
| SHARE | | | | | x | | | |
| SHOW | x | x | x | | | | | |
| SHUTDOWN | | | | | | x | | |
| SIGNAL | | x | x | x | | | | x |
| SIMILAR | x | | | | | | | |
| SIMPLE | | | | x | | | | x |
| SIN | x | | | | | | | |
| SINH | x | | | | | | | |
| SIZE | | | | | x | | x | |
| SKIP | x | | | | | | | |
| SLOW | | x | | | | | | |
| SMALLINT | x | x | x | | x | | x | x |
| SNAN | | | | x | | | | |
| SOME | x | | | x | | x | x | |
| SOURCE | | | | x | | | | |
| SPACE | | | | | | | x | |
| SPATIAL | | x | x | | | | | |
| SPECIFIC | x | x | x | x | | | | x |
| SPECIFICTYPE | x | | | | | | | |
| SQL | x | x | x | x | | | x | x |
| SQLCA | | | | | | | x | |
| SQLCODE | | | | | | | x | |
| SQLERROR | | | | | | | x | |
| SQLEXCEPTION | x | x | x | | | | | |
| SQLID | | | | x | | | | |
| SQLSTATE | x | x | x | | | | x | |
| SQLWARNING | x | x | x | | | | x | |
| SQL_BIG_RESULT | | x | x | | | | | |
| SQL_CALC_FOUND_ROWS | | x | x | | | | | |
| SQL_SMALL_RESULT | | x | x | | | | | |
| SQRT | x | | | | | | | |
| SSL | | x | x | | | | | |
| STACKED | | | | x | | | | |
| STANDARD | | | | x | | | | |
| START | x | | | x | x | | | x |
| STARTING | | x | x | x | | | | |
| STATEMENT | | | | x | | | | |
| STATIC | x | | | x | | | | |
| STATISTICS | | | | | | x | | |
| STATMENT | | | | x | | | | |
| STATS_AUTO_RECALC | | x | | | | | | |
| STATS_PERSISTENT | | x | | | | | | |
| STATS_SAMPLE_PAGES | | x | | | | | | |
| STAY | | | | x | | | | |
| STDDEV_POP | x | | | | | | | |
| STDDEV_SAMP | x | | | | | | | |
| STOGROUP | | | | x | | | | |
| STORED | | | x | | | | | |
| STORES | | | | x | | | | |
| STRAIGHT_JOIN | | x | x | | | | | |
| STRING | | | | | | | | x |
| STYLE | | | | x | | | | |
| SUBMULTISET | x | | | | | | | |
| SUBSET | x | | | | | | | |
| SUBSTRING | x | | | x | | | x | |
| SUBSTRING_REGEX | x | | | | | | | |
| SUCCEEDS | x | | | | | | | |
| SUCCESSFUL | | | | | x | | | |
| SUM | x | | | | | | x | |
| SUMMARY | | | | x | | | | |
| SYMMETRIC | x | | | | | | | |
| SYNONYM | | | | x | x | | | |
| SYSDATE | | | | | x | | | |
| SYSFUN | | | | x | | | | |
| SYSIBM | | | | x | | | | |
| SYSPROC | | | | x | | | | |
| SYSTEM | x | | x | x | | | | x |
| SYSTEM_TIME | x | | | | | | | |
| SYSTEM_USER | x | | | x | | x | x | |
| TABLE | x | x | x | x | x | x | x | x |
| TABLESAMPLE | x | | | | | x | | |
| TABLESPACE | | | | x | | | | |
| TAN | x | | | | | | | |
| TANH | x | | | | | | | |
| TEMPORARY | | | | | | | x | |
| TERMINATED | | x | x | | | | | |
| TEXT | | | | | | | | x |
| TEXTSIZE | | | | | | x | | |
| THEN | x | x | x | x | x | x | x | x |
| TIME | x | | | x | | | x | |
| TIMESTAMP | x | | | x | | | x | |
| TIMEZONE_HOUR | x | | | | | | x | |
| TIMEZONE_MINUTE | x | | | | | | x | |
| TINYBLOB | | x | x | | | | | |
| TINYINT | | x | x | | | | | |
| TINYTEXT | | x | x | | | | | |
| TO | x | x | x | x | x | x | x | x |
| TOP | | | | | | x | | |
| TRAILING | x | x | x | | | | x | x |
| TRAN | | | | | | x | | |
| TRANSACTION | | | | x | | x | x | x |
| TRANSLATE | x | | | | | | x | |
| TRANSLATE_REGEX | x | | | | | | | |
| TRANSLATION | x | | | | | | x | |
| TREAT | x | | | | | | | |
| TRIGGER | x | x | x | x | x | x | | x |
| TRIM | x | | | x | | | x | x |
| TRIM_ARRAY | x | | | | | | | |
| TRUE | x | x | x | | | | x | x |
| TRUNCATE | x | | | x | | x | | x |
| TRY_CONVERT | | | | | | x | | |
| TSEQUAL | | | | | | x | | |
| TYPE | | | | x | | | | |
| UESCAPE | x | | | | | | | |
| UID | | | | | x | | | |
| UNDO | | x | x | x | | | | |
| UNION | x | x | x | x | x | x | x | x |
| UNIQUE | x | x | x | x | x | x | x | x |
| UNKNOWN | x | | | | | | x | x |
| UNLOCK | | x | x | | | | | |
| UNNEST | x | | | | | | | |
| UNPIVOT | | | | | | x | | |
| UNSIGNED | | x | x | | | | | x |
| UNTIL | | | | x | | | | |
| UPDATE | x | x | x | x | x | x | x | x |
| UPDATETEXT | | | | | | x | | |
| UPPER | x | | | | | | x | |
| USAGE | | x | x | x | | | x | |
| USE | | x | x | | | x | | |
| USER | x | | | x | x | x | x | x |
| USING | x | x | x | x | | | x | x |
| UTC_DATE | | x | x | | | | | |
| UTC_TIME | | x |