TABLE语句
TABLE
是MySQL 8.0.19中引入的DML语句,它返回命名表的行和列。
TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]
该TABLE
语句在某些方面的行为类似于SELECT
。给定存在名为的表t
,以下两个语句产生相同的输出:
TABLE t;SELECT *FROM t;
您可以分别TABLE
使用ORDER BY
和LIMIT
子句来排序和限制产生的行数。与一起使用时,这些功能与相同的子句相同SELECT
(包括带有的可选OFFSET
子句LIMIT
),如您在此处看到的:
mysql>TABLE t; +---- +---- + | a | b | +---- +---- + | 1 | 2 | | 6 | 7 | | 9 | 5 | | 10 | -4 | | 11 | -1 | | 13 | 3 | | 14 | 6 | +---- +---- + 7 rows in set (0.00 sec) mysql>TABLE tORDER BY b; +---- +---- + | a | b | +---- +---- + | 10 | -4 | | 11 | -1 | | 1 | 2 | | 13 | 3 | | 9 | 5 | | 14 | 6 | | 6 | 7 | +---- +---- + 7 rows in set (0.00 sec) mysql>TABLE tLIMIT 3; +--- +--- + | a | b | +--- +--- + | 1 | 2 | | 6 | 7 | | 9 | 5 | +--- +--- + 3 rows in set (0.00 sec) mysql>TABLE tORDER BY bLIMIT 3; +---- +---- + | a | b | +---- +---- + | 10 | -4 | | 11 | -1 | | 1 | 2 | +---- +---- + 3 rows in set (0.00 sec) mysql>TABLE tORDER BY bLIMIT 3OFFSET 2; +---- +---- + | a | b | +---- +---- + | 1 | 2 | | 13 | 3 | | 9 | 5 | +---- +---- + 3 rows in set (0.00 sec)
TABLE
SELECT
在两个关键方面有所不同:
TABLE
始终显示表的所有列。TABLE
不允许对行进行任意过滤;也就是说,TABLE
不支持任何WHERE
子句。
为了限制返回哪些表列,使用ORDER BY
和LIMIT
或同时使用和过滤超出的行SELECT
。
TABLE
可以与临时表一起使用。
TABLE
也可以代替SELECT
许多其他结构使用,包括此处列出的结构:
使用
UNION
,如下所示:mysql>
TABLE t1; +--- +---- + | a | b | +--- +---- + | 2 | 10 | | 5 | 3 | | 7 | 8 | +--- +---- + 3 rows in set (0.00 sec) mysql>TABLE t2; +--- +--- + | a | b | +--- +--- + | 1 | 2 | | 3 | 4 | | 6 | 7 | +--- +--- + 3 rows in set (0.00 sec) mysql>TABLE t1UNION TABLE t2; +--- +---- + | a | b | +--- +---- + | 2 | 10 | | 5 | 3 | | 7 | 8 | | 1 | 2 | | 3 | 4 | | 6 | 7 | +--- +---- + 6 rows in set (0.00 sec)在
UNION
刚刚展示等效于以下语句:mysql>
SELECT *FROM t1UNION SELECT *FROM t2; +--- +---- + | a | b | +--- +---- + | 2 | 10 | | 5 | 3 | | 7 | 8 | | 1 | 2 | | 3 | 4 | | 6 | 7 | +--- +---- + 6 rows in set (0.00 sec)TABLE
也可以与SELECT
语句,VALUES
语句或两者结合使用。请参见“ UNION子句”。- 用
INTO
填充用户变量,用INTO OUTFILE
或INTO DUMPFILE
将表数据写入文件。有关更多特定信息和示例,请参见“ SELECT ... INTO语句”。 在许多情况下,您可以使用子选择。给定任何
t1
具有名为的列的表a
,以及t2
具有单个列的第二个表,则可以执行以下语句:SELECT *FROM t1WHERE aIN (TABLE t2);假设表的单列
ts
被命名为x
,则前面的语句等效于此处显示的每个语句(在两种情况下都产生完全相同的结果):SELECT *FROM t1WHERE aIN (SELECT xFROM t2);SELECT *FROM t1WHERE aIN (SELECT *FROM t2);有关更多信息,请参见“子查询”。
- 使用
INSERT
和REPLACE
语句,否则将使用SELECT *
。有关更多信息和示例,请参见“ INSERT ... SELECT语句”。 TABLE
也可以在许多情况下代替SELECT
inCREATE TABLE ... SELECT
或CREATE VIEW ... SELECT
。有关更多信息和示例,请参见这些语句的描述。