MySQL 8.0 语法结构
可使用 单引号 或 双引号 包裹。
Examples: 'a string' "another string"
连续的引号包裹的字符串,将被合并为一个。
| Escape Sequence | Character Represented by Sequence | 
|---|---|
\0 | 
An ASCII NUL (X'00') character | 
\' | 
A single quote (') character | 
\" | 
A double quote (") character | 
\b | 
A backspace character | 
\n | 
A newline (linefeed) character | 
\r | 
A carriage return character | 
\t | 
A tab character | 
\Z | 
ASCII 26 (Control+Z); see note following the table | 
\\ | 
A backslash (\) character | 
\% | 
A % character; see note following the table | 
\_ | 
A _ character; see note following the table | 
包括 exact-value(整数 integer DECIMAL NUMERIC DEC FIXED 同义词)和 approximate-value(浮点 FLOAT DOUBLE)。
exact-value (fixed-point) number Examples: 1, .2, 3.4, -5, -6.78, +9.10.
approximate-value (floating-point) number Examples: 1.2E3, 1.2E-3, -1.2E3, -1.2E-3.
它们的值可以用很多格式代表,比如引用字符串或数字。
支持的格式:
- 
标准 SQL 和 ODBC 的日期和时间:
DATE 'str'TIME 'str'TIMESTAMP 'str'{ d 'str' } { t 'str' } { ts 'str' }TIMESTAMP(1970-2038) 语法产生 DATETIME(0001-9999) 值。
 - 
字符串和数字:
yyyy-mm-ddyy-mm-dd(允许不严格语法,如'2012/12/31','2012^12^31'20070523'20070523')DATETIME 和 TIMESTAMP 的格式则是:
yyyy-mm-dd hh-mm-ssyy-mm-dd hh-mm-ss(也允许不严格语法20070523091528'19830905132800')对于 两位 的年份,如何解析?
70-99认为1970-1999,而00-69认为2000-2069。 
使用 x'val' 或 0xval
Examples: x'01af’ X'01AF’ 0x01AF 0x01af
使用 b'val' 或 0bval,默认 binary 字符串。
Examples: b'01’ B'01’ 0b01
TRUE trueand FALSE  false 相当于 1 and 0。
表示没有数据。
MySQL 中的对象,包括 database, table, index, column, alias, view, stored procedure, partition, tablespace, resource group and other object names are known as identifiers.
标识符可以以数字开头,但引号内不能完全由数字组成。
数据库、表和列名不能以空格字符结尾。
标识符引号是反引号(`)。
| Identifier Type | Maximum Length (characters) | 
|---|---|
| Database | 64 (includes NDB Cluster 8.0.18 and later) | 
| Table | 64 (includes NDB Cluster 8.0.18 and later) | 
| Column | 64 | 
| Index | 64 | 
| Constraint | 64 | 
| Stored Program | 64 | 
| View | 64 | 
| Tablespace | 64 | 
| Server | 64 | 
| Log File Group | 64 | 
| Alias | 256 (see exception following table) | 
| Compound Statement Label | 16 | 
| User-Defined Variable | 64 | 
| Resource Group | 64 | 
对象名称可以是不合格的(没有歧义时允许)或合格的。
虽然数据库、表和触发器名称在某些平台上对大小写不敏感,但是不应该在同一语句中使用不同的大小写来引用这些名称。
分区、子分区、列、索引、存储例程、事件和资源组名在任何平台上都不区分大小写,列别名也不区分大小写。
详见 MySQL 8.0 Keywords and Reserved Words
您可以在一条语句中将值存储在用户定义的变量中,然后在另一条语句中引用它。这使您能够将值从一个语句传递到另一个语句。
用户变量被写为@var name,其中变量名var name由字母 数字 、. 、_和$组成。如果将用户变量名引用为字符串或标识符,则该变量名可以包含其他字符(例如@'my-var'、@"my-var"或 反引号包裹的)。
SET @v1 = X'41';
SET @v2 = X'41'+0;
SET @v3 = CAST(X'41' AS UNSIGNED);
SELECT @v1, @v2, @v3;
expr:
    expr OR expr
  | expr || expr
  | expr XOR expr
  | expr AND expr
  | expr && expr
  | NOT expr
  | ! expr
  | boolean_primary IS [NOT] {TRUE | FALSE | UNKNOWN}
  | boolean_primary
boolean_primary:
    boolean_primary IS [NOT] NULL
  | boolean_primary <=> predicate
  | boolean_primary comparison_operator predicate
  | boolean_primary comparison_operator {ALL | ANY} (subquery)
  | predicate
comparison_operator: = | >= | > | <= | < | <> | !=
predicate:
    bit_expr [NOT] IN (subquery)
  | bit_expr [NOT] IN (expr [, expr] ...)
  | bit_expr [NOT] BETWEEN bit_expr AND predicate
  | bit_expr SOUNDS LIKE bit_expr
  | bit_expr [NOT] LIKE simple_expr [ESCAPE simple_expr]
  | bit_expr [NOT] REGEXP bit_expr
  | bit_expr
bit_expr:
    bit_expr | bit_expr
  | bit_expr & bit_expr
  | bit_expr << bit_expr
  | bit_expr >> bit_expr
  | bit_expr + bit_expr
  | bit_expr - bit_expr
  | bit_expr * bit_expr
  | bit_expr / bit_expr
  | bit_expr DIV bit_expr
  | bit_expr MOD bit_expr
  | bit_expr % bit_expr
  | bit_expr ^ bit_expr
  | bit_expr + interval_expr
  | bit_expr - interval_expr
  | simple_expr
simple_expr:
    literal
  | identifier
  | function_call
  | simple_expr COLLATE collation_name
  | param_marker
  | variable
  | simple_expr || simple_expr
  | + simple_expr
  | - simple_expr
  | ~ simple_expr
  | ! simple_expr
  | BINARY simple_expr
  | (expr [, expr] ...)
  | ROW (expr, expr [, expr] ...)
  | (subquery)
  | EXISTS (subquery)
  | {identifier expr}
  | match_expr
  | case_expr
  | interval_expr
三种格式:
#直到行末--(double-dash) 直到行末/* */C 风格