MySQL 8.0 Release Notes
MySQL 8.0 Source Code Documentation
DOexpr[,expr] ...
DO
executes the expressions but does not return any results. In most respects,DO
is shorthand forSELECT
, but has the advantage that it is slightly faster when you do not care about the result.expr
, ...
DO
is useful primarily with functions that have side effects, such asRELEASE_LOCK()
.
Example: ThisSELECT
statement pauses, but also produces a result set:
mysql> SELECT SLEEP(5); +----------+ | SLEEP(5) | +----------+ | 0 | +----------+ 1 row in set (5.02 sec)
DO
, on the other hand, pauses without producing a result set.:
mysql> DO SLEEP(5); Query OK, 0 rows affected (4.99 sec)
This could be useful, for example in a stored function or trigger, which prohibit statements that produce result sets.
DO
only executes expressions. It cannot be used in all cases whereSELECT
可以使用。例如,DO id FROM t1
is invalid because it references a table.