文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  TABLE 语句

15.2.16 TABLE 语句

TABLE 是一个 DML 语句,它返回命名表的行和列。

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

在某些方面,TABLE 语句类似于 SELECT。如果存在名为 t 的表,则以下两个语句会生成相同的输出

TABLE t;

SELECT * FROM t;

您可以使用 ORDER BYLIMIT 子句分别对 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)

TABLESELECT 在两个关键方面有所不同

  • TABLE 始终显示表的全部列。

    例外: TABLE 的输出 包括不可见列。请参阅 第 15.1.20.10 节,“不可见列”.

  • TABLE 不允许对行进行任何任意过滤;也就是说,TABLE 不支持任何 WHERE 子句。

要限制返回的表列,过滤行(超出使用 ORDER BYLIMIT 或两者都可以实现的范围),请使用 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 OUTFILEINTO 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 节,“子查询”

  • 使用 INSERTREPLACE 语句,您将在其中使用 SELECT *。有关更多信息和示例,请参见 第 15.2.7.1 节,“INSERT ... SELECT 语句”

  • TABLE 也可在许多情况下用于代替 SELECT,用于 CREATE TABLE ... SELECTCREATE VIEW ... SELECT。有关更多信息和示例,请参见这些语句的说明。