TABLE
是一個 DML 陳述式,它會傳回指定資料表的列和欄。
TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]
在某些方面,TABLE
陳述式的行為類似於 SELECT
。假設存在一個名為 t
的資料表,則下列兩個陳述式會產生相同的輸出
TABLE t;
SELECT * FROM t;
您可以使用 ORDER BY
和 LIMIT
子句分別排序和限制 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)
TABLE
與 SELECT
在兩個關鍵方面有所不同
TABLE
一律顯示資料表的所有欄。例外:
TABLE
的輸出不包含隱藏欄。請參閱 第 15.1.20.10 節, 「隱藏欄」。TABLE
不允許對資料列進行任意篩選;也就是說,TABLE
不支援任何WHERE
子句。
若要限制傳回的資料表欄位、篩選資料列的範圍超出使用 ORDER BY
和 LIMIT
(或兩者皆用) 所能達成的效果,請使用 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
。如需更多資訊和範例,請參閱這些陳述式的說明。