Spec-Zone.ru › MySQL 9.2

15.2.16 Заявление TABLE

Это оператор DML, который возвращает строки и столбцы указанной таблицы.

TABLE table_name
    [ORDER BY column_name]
    [LIMIT number [OFFSET number]]
    [INTO OUTFILE 'file_name'
        [{FIELDS | COLUMNS}
            [TERMINATED BY 'string']
            [[OPTIONALLY] ENCLOSED BY 'char']
            [ESCAPED BY 'char']
        ]
        [LINES
            [STARTING BY 'string']
            [TERMINATED BY 'string']
        ]
    | INTO DUMPFILE 'file_name'
    | INTO var_name [, var_name] ...]

Оператор TABLE в некотором смысле действует как SELECT. Учитывая существование таблицы с именем t, следующие два оператора производят идентичный вывод:

TABLE t;

SELECT * FROM t;

Вы можете упорядочить и ограничить количество возвращаемых строк оператором TABLE, используя соответственно предложения ORDER BY и LIMIT. Эти предложения работают идентично соответствующим предложениям, используемым с SELECT (включая необязательное предложение OFFSET с LIMIT), как показано здесь:

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.21.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. См. описания этих операторов для получения дополнительной информации и примеров.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/table.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API