文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  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 陳述式」

  • 在許多可以使用子查詢的情況下。假設有一個名為 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 取代 SELECT,用於 CREATE TABLE ... SELECTCREATE VIEW ... SELECT。如需更多資訊和範例,請參閱這些陳述式的說明。