Атрибут TYPE отнюдь не является единственной возможностью воздействовать на параметры создаваемых таблиц. Существует несколько других атрибутов, присущих только СУБД MySQL. В табл. 8.3 приведен перечень наиболее интересных из них.
Как и в случае с базами данных, MySQL поддерживает использование предложения IF NOT EXISTS в команде CREATE TABLE. Это очень полезно при работе со сценариями, т.к. позволяет избежать ошибок при наличии одноименной таблицы.
Другие модификаторы таблиц
Другие модификаторы таблиц
Копирование таблиц
В версии MySQL 3.23 появилась возможность комбинировать операторы CREATE TABLE и SELECT в целях создания таблицы и ее динамического заполнения результатами запроса SELECT. Например, предположим, что у нас имеется следующая таблица.
Другие модификаторы таблиц
Другие модификаторы таблиц
MySQL 4.1 также поддерживает альтернативные способы выполнения задачи из предыдущего примера.
Листинг 8.50.
mysql> CREATE TABLE grades LIKE marks;
Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0
Для определения команды, с помощью которой была создана таблица, можно воспользоваться командой SHOW CREATE TABLE. Эта информация может использоваться при дублировании структуры существующей таблицы. Рассмотрим следующий пример, в котором продемонстрирован синтаксис команды CREATE TABLE при определении таблицы разрешений host.
Другие модификаторы таблиц
Интересный вариант предыдущего примера представляет собой сочетание операторов CREATE TABLE и SELECT в целях создания гибридной таблицы, содержащей как новые поля, так и поля из результирующего набора оператора SELECT. Рассмотрим следующий пример, в котором создается таблица, содержащая два столбца из существующей таблицы (полученная с помощью оператора SELECT) и два новых столбца (они определены оператором CREATE TABLE).
Другие модификаторы таблиц
Другие модификаторы таблиц
Временное решение
MySQL позволяет создавать с помощью команды CREATE TEMPORARY TABLE временные таблицы. Эти таблицы имеют такое название потому, что они существуют только на протяжении одного сеанса MySQL и автоматически удаляются, когда клиент, при работе которого они были созданы, прерывает сеанс работы с сервером MySQL. Эти таблицы удобны для кратковременного хранения данных или выполнения вычислений. И поскольку они работают в пределах одного сеанса, два различных сеанса могут использовать в своей работе одно и то же имя таблицы, не вызывая при этом какого-либо конфликта:
Другие модификаторы таблиц
Таким образом, таблица session_key существует на протяжении только одного клиентского сеанса. Когда сессия клиента завершается, временная таблица и ее содержимое автоматически удаляются MySQL.