Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


15.2.16 表语句

TABLE 是一个 DML 语句,返回指定表的行和列。

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

在某些方面,TABLE 语句类似于SELECT。给定一个名为 t 的表,以下两个语句将产生相同的输出:

TABLE t;

SELECT * FROM t;

您可以使用 TABLE 语句中的 ORDER BYLIMIT take 语句来限制输出的行数。这些语句在使用 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)

TABLESELECT 在两个关键方面不同:

  • TABLE 总是显示表中的所有列。

    ExceptionTABLE 的输出不包括不可见的列。请参阅第15.1.20.10节,“不可见的列”

  • TABLE 不允许对行进行任意过滤;即 TABLE 不支持任何 WHERE 语句。

要限制返回的列,请使用 SELECT 语句中的 WHERE 语句。

TABLE 可以与临时表一起使用。

TABLE 也可以用作 SELECT 语句的替代品,在以下构造中使用:

  • 使用 set 操作符,如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 Clause”第15.2.4节,“EXCEPT Clause”第15.2.8节,“INTERSECT Clause”,了解更多信息和示例。请参阅第15.2.14节,“Set Operations with UNION, INTERSECT, and EXCEPT”

  • 使用 INTO 来填充用户变量,并使用 INTO OUTFILEINTO DUMPFILE 将表数据写入文件。请参阅第15.2.13.1节,“SELECT ... INTO Statement”,了解更多信息和示例。

  • 在许多情况下,您可以使用子查询。假设您有一个名为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节,“子查询”,了解更多信息。

  • 在使用INSERTREPLACE语句时,您通常将使用SELECT *。请参阅第15.2.7.1节,“INSERT ... SELECT 语句”,了解更多信息和示例。

  • TABLE也可以在许多情况下代替SELECTCREATE TABLE ... SELECTCREATE VIEW ... SELECT中。请参阅这些语句的描述,了解更多信息和示例。