TABLE 是一种 DML 语句,返回命名表的行和列。
TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]
表语句在某些方面类似于 SELECT。假设存在一个名为 t 的表,则以下两个语句将产生相同的输出:
TABLE t;
SELECT * FROM t;
您可以使用 ORDER BY 和 LIMIT 子句来排序和限制 TABLE 产生的行数。这些子句的功能与 SELECT 语句中的相同(包括可选的 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不支持任何WHERE子句来过滤行。
要限制返回的表列或过滤行,请使用 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 语句”,以获取更多信息和示例。 -
在许多可以使用子查询的地方。假设存在一个表
t1,其中有一列名为a,另一个表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中。见这些语句的描述,以获取更多信息和示例。