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. | +----+--------+------------------+---------------------------------------------------+
필터링된 데이터가 표시됩니다.
임시 테이블은 영구 데이터 저장소에 영향을 주지 않고 임시 처리를 위해 데이터를 처리하는 강력한 방법을 제공합니다. 이는 데이터를 일시적으로 조작하거나 변환해야 하는 시나리오에서 특히 유용합니다. 이러한 종류의 데이터 조작에는 영구 테이블을 사용할 수 있지만 자동 정리, 이름 충돌 위험 감소, 격리 및 보안, 쿼리 성능을 위한 리소스 관리가 필요한 경우 임시 테이블이 유용합니다.