更新日期:2024年09月11日
功能
在创建一个表时,用户可以使用关键词TEMPORARY。临时表被限制在当前连接
中,当连接关闭时,临时表会自动地删除。这就意味着,两个不同的连接可以使用
同一个临时表名而不会发生冲突,也不会与同名现有的表冲突(现有表将被隐藏,
直到临时表被删除)。使用此种方法,一旦客户端与GBase UP 断开连接,临时表
将自动删除。
注意
临时表支持除ALTER 之外的所有DDL 及DML 操作。
临时表不能被备份。
临时表不支持使用gcdump 工具导出表结构。
临时表支持在当前连接中使用查询结果导出语句导出表中数据。
在进行集群数据重分布、备份恢复前需要清除当前连接中的临时表。
示例
示例1:创建临时表。
GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 612
gbase> USE test;
Query OK, 0 rows affected
gbase> CREATE TEMPORARY TABLE tem_table (a int);
Query OK, 0 rows affected
gbase> INSERT INTO tem_table VALUES(1),(2),(7),(9);
Query OK, 4 rows affected
Records: 4 Duplicates: 0 Warnings: 0
gbase> SELECT * FROM tem_table;
+------+
| a |
+------+
| 1 |
| 2 |
| 7 |
| 9 |
+------+
4 rows in set
gbase> EXIT
Bye
$ gccli -uroot --nice_time_format -p
Enter password
GBase UP client [DEMO] 8.6.2.18-R4 build 86926. Copyright (c) 2004-2017, GBase. All
Rights Reserved.
gbase> USE test;
Query OK, 0 rows affected
gbase> SELECT * FROM tem_table;
ERROR 1146 (42S02): Table 'test.tem_table' doesn't exist
示例2:创建的临时表与复制表同名。
gbase> CREATE TABLE t1 (a int,b varchar(10)) REPLICATED;
Query OK, 0 rows affected
gbase> CREATE TEMPORARY TABLE t1 (a int,b varchar(10));
Query OK, 0 rows affected
示例3:创建临时表,使用NOCOPIES 关键字。
GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 613
gbase> CREATE TEMPORARY TABLE t1 (a int) NOCOPIES;
Query OK, 0 rows affected
gbase> SHOW CREATE TABLE t1;
+-------+-----------------------------------------------------------------+
| Table | Create Table |
+-------+-----------------------------------------------------------------+
| t1 | CREATE TEMPORARY TABLE "t1" (
"a" int(11) DEFAULT NULL
) ENGINE=EXPRESS NOCOPIES DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace' |
+-------+-----------------------------------------------------------------+
gbase> INSERT INTO t1 VALUES(1),(2),(7),(9);
Query OK, 4 rows affected
Records: 4 Duplicates: 0 Warnings: 0
gbase> EXIT
Bye
$ gccli -uroot --nice_time_format -p
Enter password
GBase UP client [DEMO] 8.6.2.18-R4 build 86926. Copyright (c) 2004-2017, GBase. All Rights
Reserved.
gbase> USE test;
Query OK, 0 rows affected
gbase> SELECT * FROM t1;
ERROR 1146 (42S02): Table 'test.t1' doesn't exist
示例4:创建临时表,使用DISTRIBUTED BY 关键字。
gbase> CREATE TEMPORARY TABLE t1 (a int,b varchar(10)) DISTRIBUTED BY ('a');
Query OK, 0 rows affected
gbase> SHOW CREATE TABLE t1;
+-------+--------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------+
| t1 | CREATE TEMPORARY TABLE "t1" (
"a" int(11) DEFAULT NULL,
"b" varchar(10) DEFAULT NULL
)ENGINE=EXPRESS DISTRIBUTED BY('a') DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'
|+-------+--------------------------------------------------+
示例5:创建临时表,使用REPLICATED 关键字。
GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 614
gbase> CREATE TEMPORARY TABLE t1 (a int,b varchar(10)) REPLICATED;
Query OK, 0 rows affected
gbase> SHOW CREATE TABLE t1;
+-------+--------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------+
| t1 | CREATE TEMPORARY TABLE "t1" (
"a" int(11) DEFAULT NULL,
"b" varchar(10) DEFAULT NULL
)ENGINE=EXPRESS REPLICATED DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'
|+-------+--------------------------------------------------+
1 row in set
示例6:
复制全表表结构及数据来创建临时表
(CREATE TEMPORARY TABLE...AS
SELECT...)
gbase> CREATE TABLE t7(a INT, b DECIMAL, c FLOAT, d DATETIME);
Query OK, 0 rows affected
gbase> INSERT INTO t7 VALUES(1,2,3.345,'2011-11-11 11:11:11'),(3,5,5.678,'2011-11-11
22:22:22');
Query OK, 2 rows affected
Records: 2 Duplicates: 0 Warnings: 0
gbase> CREATE TEMPORARY TABLE t8 AS SELECT * FROM t7;
Query OK, 2 rows affected
gbase> EXIT
Bye
$ gccli -uroot --nice_time_format -p
Enter password
GBase UP client [DEMO] 8.6.2.18-R4 build 86926. Copyright (c) 2004-2017, GBase. All Rights
Reserved.
gbase> USE test;
Query OK, 0 rows affected
gbase> SELECT * FROM t8;
ERROR 1146 (42S02): Table 'test.t8' doesn't exist
示例7:
复制t7的表结构来创建临时表t8。
(CREATE TEMPORARY TABLE...LIKE...)
GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 615
gbase> CREATE TEMPORARY TABLE t8 LIKE t7;
Query OK, 0 rows affected
gbase> SELECT * FROM t8;
Empty set
gbase> SHOW CREATE TABLE t8;
+-------+---------------------------------------------------------+
| Table | Create Table |
+-------+---------------------------------------------------------+
| t8 | CREATE TEMPORARY TABLE "t8" (
"a" int(11) DEFAULT NULL,
"b" decimal(10,0) DEFAULT NULL,
"c" float DEFAULT NULL,
"d" datetime DEFAULT NULL
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace' |
+-------+---------------------------------------------------------+
1 row in set