paint-brush
Как использовать временные таблицы в MariaDBк@alejandroduarte
480 чтения
480 чтения

Как использовать временные таблицы в MariaDB

к Alejandro Duarte4m2024/05/02
Read on Terminal Reader

Слишком долго; Читать

Временные таблицы полезны для временных операций с данными. Временная таблица существует только на протяжении сеанса, в котором она была создана, и другие сеансы не смогут ее увидеть. Например, рассмотрим таблицу «продукты» в нашей базе данных. Мы можем создать временную таблицу, имитирующую структуру «продуктов».
featured image - Как использовать временные таблицы в MariaDB
Alejandro Duarte HackerNoon profile picture

Давайте рассмотрим, как работают временные таблицы в MariaDB. Сначала нам нужно подключиться к серверу. Например (используйте свои собственные данные подключения):

 mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo


Теперь, чтобы отметить кое-что, давайте создадим стандартную (постоянную) таблицу. Вот как:

 CREATE TABLE t ( c INT );


Эта таблица t сохранится в базе данных даже после выхода из клиента:

 exit


Когда мы переподключаемся и проверяем существующие таблицы с помощью SHOW TABLES; , таблица t по-прежнему будет указана:

 mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo
 SHOW TABLES;
 +----------------+ | Tables_in_demo | +----------------+ | t | +----------------+


Все это довольно очевидно, но теперь давайте воссоздадим эту таблицу и попробуем что-то другое:

 CREATE OR REPLACE TEMPORARY TABLE t ( c INT );


Обратите внимание на ключевое слово TEMPORARY . Если после создания этой таблицы мы запустим SHOW TABLES; , он появится в списке. Мы можем вставлять в него данные, запрашивать их и объединять с другими таблицами. Во время текущего сеанса он ведет себя как обычная таблица. Однако, если мы выйдем из клиента, подключимся снова и выполним SHOW TABLES; опять же, временная таблица t не будет указана.


Временная таблица существует только на протяжении сеанса, в котором она была создана, и другие сеансы не смогут ее увидеть.

Вариант использования временных таблиц

Временные таблицы весьма полезны для временных операций с данными. Например, рассмотрим таблицу « products в нашей базе данных:

 CREATE TABLE products ( id INT NOT NULL AUTO_INCREMENT, code VARCHAR(100) NOT NULL, name VARCHAR(250) NOT NULL, description TEXT DEFAULT NULL, PRIMARY KEY (id), UNIQUE KEY code (code) )


Мы можем создать временную таблицу, имитирующую структуру products :

 CREATE TEMPORARY TABLE t LIKE products;


Мы можем подтвердить это, выполнив:

 DESCRIBE t;
 +-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | code | varchar(100) | NO | UNI | NULL | | | name | varchar(250) | NO | | NULL | | | description | text | YES | | NULL | | +-------------+--------------+------+-----+---------+----------------+


Первоначально t будет пустым. Однако предположим, что мы хотим перенести некоторые данные из products в t . Предположим, мы хотим включить в код только те продукты, которые содержат цифру 0:

 INSERT INTO t SELECT * FROM products WHERE code LIKE '%0%';


Если после запуска этой команды мы запросим временную таблицу t :

 SELECT * FROM t;
 +----+--------+------------------+---------------------------------------------------+ | id | code | name | description | +----+--------+------------------+---------------------------------------------------+ | 1 | BG2024 | BugBlaster | Eradicates software bugs with a single scan. | | 3 | FW001 | FireWhale | An oversized, comprehensive firewall solution. | | 4 | CLD404 | CloudNine Finder | Find your way back from cloud outages and errors. | +----+--------+------------------+---------------------------------------------------+

Мы видим отфильтрованные данные.

Заключение

Временные таблицы предлагают мощный способ обработки данных для временной обработки, не затрагивая постоянное хранилище данных. Они особенно полезны в сценариях, где данными необходимо временно манипулировать или преобразовывать. Вы можете использовать постоянные таблицы для такого рода манипуляций с данными, но временные таблицы полезны, когда вам нужна автоматическая очистка, снижение риска конфликтов имен, изоляция и безопасность, а также управление ресурсами для производительности запросов.