TABLE
是一个 DML 语句,它返回命名表的行和列。
TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]
在某些方面,TABLE
语句类似于 SELECT
。如果存在名为 t
的表,则以下两个语句会生成相同的输出
TABLE t;
SELECT * FROM t;
您可以使用 ORDER BY
和 LIMIT
子句分别对 TABLE
生成的行进行排序和限制数量。这些功能与与 SELECT
一起使用时相同的子句完全相同(包括与 LIMIT
一起使用的可选 OFFSET
子句),如您在此处看到的
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 t ORDER 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 t LIMIT 3;
+---+---+
| a | b |
+---+---+
| 1 | 2 |
| 6 | 7 |
| 9 | 5 |
+---+---+
3 rows in set (0.00 sec)
mysql> TABLE t ORDER BY b LIMIT 3;
+----+----+
| a | b |
+----+----+
| 10 | -4 |
| 11 | -1 |
| 1 | 2 |
+----+----+
3 rows in set (0.00 sec)
mysql> TABLE t ORDER BY b LIMIT 3 OFFSET 2;
+----+----+
| a | b |
+----+----+
| 1 | 2 |
| 13 | 3 |
| 9 | 5 |
+----+----+
3 rows in set (0.00 sec)
TABLE
与 SELECT
在两个关键方面有所不同
TABLE
始终显示表的全部列。例外:
TABLE
的输出不 包括不可见列。请参阅 第 15.1.20.10 节,“不可见列”.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 t1 UNION 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 t1 UNION 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
语句或两者一起用于集合运算。有关更多信息和示例,请参见 第 15.2.18 节,“UNION 子句”、第 15.2.4 节,“EXCEPT 子句” 和 第 15.2.8 节,“INTERSECT 子句”。另请参见 第 15.2.14 节,“使用 UNION、INTERSECT 和 EXCEPT 进行集合运算”。使用
INTO
来填充用户变量,并使用INTO OUTFILE
或INTO DUMPFILE
将表数据写入文件。有关更具体的信息和示例,请参见 第 15.2.13.1 节,“SELECT ... INTO 语句”。在许多情况下,您可以使用子查询。给定任何具有名为
a
的列的表t1
,以及具有单个列的第二个表t2
,可以执行以下语句。SELECT * FROM t1 WHERE a IN (TABLE t2);
假设表
t1
的单个列名为x
,则前面内容等效于这里显示的每个语句(在任一情况下都生成完全相同的结果)。SELECT * FROM t1 WHERE a IN (SELECT x FROM t2); SELECT * FROM t1 WHERE a IN (SELECT * FROM t2);
有关更多信息,请参见 第 15.2.15 节,“子查询”。
使用
INSERT
和REPLACE
语句,您将在其中使用SELECT *
。有关更多信息和示例,请参见 第 15.2.7.1 节,“INSERT ... SELECT 语句”。TABLE
也可在许多情况下用于代替SELECT
,用于CREATE TABLE ... SELECT
或CREATE VIEW ... SELECT
。有关更多信息和示例,请参见这些语句的说明。