### 13.2.12 TABLE 语句

[](<>)[](<>)[](<>)

[`桌子`](table.html)是 MySQL 8.0.19 中引入的 DML 语句，它返回命名表的行和列。

```
TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]
```

这[`桌子`](table.html)声明在某些方面就像[`选择`](select.html).鉴于存在名为的表`吨`，以下两个语句产生相同的输出：

```
TABLE t;

SELECT * FROM t;
```

您可以订购并限制生成的行数[`桌子`](table.html)使用`订购方式`和`限制`条款，分别。这些功能与使用时相同的子句[`选择`](select.html)（包括一个可选的`抵消`子句`限制`)，如您在此处看到的：

```
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.html)不同于[`选择`](select.html)在两个关键方面：

-   [`桌子`](table.html)始终显示表格的所有列。

-   [`桌子`](table.html)不允许对行进行任何任意过滤；那是，`桌子`不支持任何`在哪里`条款。

    为了限制返回哪些表列，过滤行超出了使用可以完成的范围`订购方式`和`限制`，或两者，使用[`选择`](select.html).

[`桌子`](table.html)可以与临时表一起使用。

`桌子`也可以用来代替[`选择`](select.html)在许多其他构造中，包括此处列出的构造：

-   和[`联盟`](union.html)，如此处所示：

    ```
    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.html)刚才显示的等价于以下语句：

    ```
    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)
    ```

    `桌子`也可以与工会一起使用[`选择`](select.html)陈述，[`价值观`](values.html)陈述，或两者兼而有之。看[第 13.2.10.3 节，“联合条款”](union.html).

-   和`进入`填充用户变量，并使用`进入档案`要么`转储文件`将表数据写入文件。看[第 13.2.10.1 节，“SELECT ... INTO 语句”](select-into.html)，以获取更具体的信息和示例。

-   在许多情况下，您可以使用子查询。给定任何表`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);
    ```

    看[第 13.2.11 节，“子查询”](subqueries.html)， 了解更多信息。

-   和[`插入`](insert.html)和[`代替`](replace.html)声明，否则您会使用[`选择 *`](select.html).看[第 13.2.6.1 节，“INSERT ... SELECT 语句”](insert-select.html)，了解更多信息和示例。

-   [`桌子`](table.html)也可以在很多情况下用来代替[`选择`](select.html)在[`创建表...选择`](create-table-select.html)要么[`创建视图...选择`](create-view.html).有关更多信息和示例，请参阅这些语句的描述。
