🐬
MySQLのシノニム
sakaik さんが MySQL: desc は explain !? - sakaikの日々雑感~(T)編 という記事を上げてたのを見て、そういや最近はほかにどんなのがあるんだっけ…と思って調べてみた。
以下はMySQL 8.0.29 の sql/lex.hから抽出したもの。字句解析上のシノニム。
| <> | != | ||
| ANY | SOME | ||
| BIGINT | INT8 | ||
| CHAR | CHARACTER | ||
| COLUMNS | FIELDS | ||
| CURDATE* | CURRENT_DATE | ||
| CURTIME* | CURRENT_TIME | ||
| DATABASE | SCHEMA | ||
| DATABASES | SCHEMAS | ||
| DAY | SQL_TSI_DAY | ||
| DECIMAL | DEC | ||
| DESCRIBE | EXPLAIN | ||
| DISTINCT | DISTINCTROW | ||
| DOUBLE | FLOAT8 | ||
| FLOAT | FLOAT4 | ||
| GEOMETRYCOLLECTION | GEOMCOLLECTION | ||
| HOUR | SQL_TSI_HOUR | ||
| INT | INT4 | INTEGER | |
| MEDIUMINT | INT3 | MIDDLEINT | |
| MINUTE | SQL_TSI_MINUTE | ||
| MONTH | SQL_TSI_MONTH | ||
| NDBCLUSTER | NDB | ||
| NOW* | CURRENT_TIMESTAMP | LOCALTIME | LOCALTIMESTAMP |
| QUARTER | SQL_TSI_QUARTER | ||
| REGEXP | RLIKE | ||
| RELAY_THREAD | IO_THREAD | ||
| SECOND | SQL_TSI_SECOND | ||
| SMALLINT | INT2 | ||
| STD* | STDDEV* | STDDEV_POP* | |
| SUBSTRING* | MID* | SUBSTR* | |
| TINYINT | INT1 | ||
| USER | SESSION_USER* | SYSTEM_USER* | |
| VARCHAR | VARCHARACTER | ||
| VARIANCE* | VAR_POP* | ||
| WEEK | SQL_TSI_WEEK | ||
| YEAR | SQL_TSI_YEAR |
* がついてるのは関数でしか使えない単語。
たとえば、 SELECT CURRENT_TIMESTAMP と SELECT CURRENT_TIMESTAMP() はどちらも使えるけど、SELECT NOW はダメで、SELECT NOW() はOK。みたいな。
USER は関数形式じゃなくても使えるけど、SELECT USER みたいに使えるというわけじゃない。CREATE USER とかで使えるということ。
CHARSET を書けるところは CHARACTER SET とも書けるんだけど、これは字句解析じゃなくて構文解析の処理の方なのでここには書いてない。構文解析を調べるのはめんどくさい。
Discussion