TABLE 是 MySQL 8.0.19 中引入的一個 DML 語句,它返回指定表的行和列。html
1. TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]
TABLE 語句在某些方面相似於 SELECT。假設存在一個名爲 t 的表,如下兩個語句將產生相同的輸出:mysql
1. TABLE t; 2. 3. SELECT * FROM t;
能夠分別使用 ORDER BY 和 LIMIT 子句對 TABLE 生成的行數進行排序和限制。當與 SELECT (包括帶 LIMIT 的可選 OFFSET 子句)一塊兒使用時,相同的子句也會有這些相同功能,以下所示:sql
1. mysql> TABLE t; 2. +----+----+ 3. | a | b | 4. +----+----+ 5. | 1 | 2 | 6. | 6 | 7 | 7. | 9 | 5 | 8. | 10 | -4 | 9. | 11 | -1 | 10. | 13 | 3 | 11. | 14 | 6 | 12. +----+----+ 13. 7 rows in set (0.00 sec) 14. 15. mysql> TABLE t ORDER BY b; 16. +----+----+ 17. | a | b | 18. +----+----+ 19. | 10 | -4 | 20. | 11 | -1 | 21. | 1 | 2 | 22. | 13 | 3 | 23. | 9 | 5 | 24. | 14 | 6 | 25. | 6 | 7 | 26. +----+----+ 27.7 rows in set (0.00 sec) 28. 29. mysql> TABLE t LIMIT 3; 30. +---+---+ 31. | a | b | 32. +---+---+ 33. | 1 | 2 | 34. | 6 | 7 | 35. | 9 | 5 | 36. +---+---+ 37. 3 rows in set (0.00 sec) 38. 39. mysql> TABLE t ORDER BY b LIMIT 3; 40. +----+----+ 41. | a | b | 42. +----+----+ 43. | 10 | -4 | 44. | 11 | -1 | 45. | 1 | 2 | 46. +----+----+ 47. 3 rows in set (0.00 sec) 48. 49. mysql> TABLE t ORDER BY b LIMIT 3 OFFSET 2; 50. +----+----+ 51. | a | b | 52. +----+----+ 53. | 1 | 2 | 54. | 13 | 3 | 55. | 9 | 5 | 56. +----+----+ 57. 3 rows in set (0.00 sec)
TABLE 與 SELECT 在兩個主要的不一樣:ide
● TABLE 始終顯示錶的全部列。code
● TABLE 不容許任意篩選行;也就是說,TABLE 不支持任何 WHERE 子句。htm
要限制返回哪些表列,篩選超出使用 ORDER BY 和 LIMIT 能夠控制的行,請使用 SELECT 語句。排序
TABLE 能夠與臨時表一塊兒使用。get
在許多其餘結構中,TABLE 也能夠用來代替 SELECT,包括下面列出的那些:it
● 與 UNION 一塊兒使用,以下所示:table
1. mysql> TABLE t1; 2. +---+----+ 3. | a | b | 4. +---+----+ 5. | 2 | 10 | 6. | 5 | 3 | 7. | 7 | 8 | 8. +---+----+ 9. 3 rows in set (0.00 sec) 10. 11. mysql> TABLE t2; 12. +---+---+ 13. | a | b | 14. +---+---+ 15. | 1 | 2 | 16. | 3 | 4 | 17. | 6 | 7 | 18. +---+---+ 19. 3 rows in set (0.00 sec) 20. 21. mysql> TABLE t1 UNION TABLE t2; 22. +---+----+ 23. | a | b | 24. +---+----+ 25. | 2 | 10 | 26. | 5 | 3 | 27. | 7 | 8 | 28. | 1 | 2 | 29. | 3 | 4 | 30. | 6 | 7 | 31. +---+----+ 32. 6 rows in set (0.00 sec)
以上顯示的 UNION 至關於如下語句:
1. mysql> SELECT * FROM t1 UNION SELECT * FROM t2; 2. +---+----+ 3. | a | b | 4. +---+----+ 5. | 2 | 10 | 6. | 5 | 3 | 7. | 7 | 8 | 8. | 1 | 2 | 9.| 3 | 4 | 10. | 6 | 7 | 11. +---+----+ 12. 6 rows in set (0.00 sec)
TABLE 也能夠與 SELECT 語句、VALUES 語句一塊兒使用。
● 與 INTO 一塊兒使用,填充用戶變量,與 INTO OUTFILE 或 INTO DUMPFILE 一塊兒使用,將表數據寫入文件。
● 在許多狀況下,能夠使用子查詢。若是表 t1 有一個列 a,而第二個表 t2 只有一個列,則能夠使用如下語句:
1. SELECT * FROM t1 WHERE a IN (TABLE t2);
假設表 ts 的惟一列名爲 x,則前面的語句等價於這裏顯示的每一個語句(在任何一種狀況下都會產生徹底相同的結果):
1. SELECT * FROM t1 WHERE a IN (SELECT x FROM t2); 2.SELECT * FROM t1 WHERE a IN (SELECT * FROM t2);
● 用於 INSERT 和 REPLACE 語句,也能夠使用 SELECT *。
● 在許多狀況下,TABLE 也能夠用來代替 CREATE TABLE ... SELECT 或 CREATE VIEW ... SELECT 中的 SELECT。