TEMPORARY创建临时表时可以使用该关键字。临时表仅在当前会话中可见,并在会话关闭时自动删除。这意味着两个不同的会话可以使用相同的临时表名称,而不会相互冲突或与现有的同名非表发生冲突TEMPORARY。(现有表将被隐藏,直到临时表被删除。)创建数据表请使用 CREATE TABLE语句。
CREATE TEMPORARY TABLE [IF NOT EXISTS] <临时表名> (<列名1> <类型1> [,…] <列名n> <类型n>) [表选项] [分区选项];
[ ]中的内容是可选的,…代表可有多个,<>是中文解释,逗号','代表分隔号。语法说明:
<临时表名>:创建临时表的名称。
IF NOT EXISTS:在创建临时表库之前进行判断,只有该临时表目前尚不存在时才能执行操作。此选项可以用来避免临时表已经存在而重复创建的错误。
<列名1><类型1>: 表创建定义,由列名(col_name)、列的定义(column_definition)以及可能的空值说明、完整性约束或表索引组成。数据类型选择可参考 MySQL数据类型。
[表选项]、[分区选项]:为可不填项,而其定义不常用较为复杂,这里不多解释了
创建一个b临时表,b表有两列分别是id和string列。id列为int整形类型没有指定长度其内容不允许为NULL,string为varchar数据类型长度为10内容可为NULL
CREATE TEMPORARY TABLE `b` ( `id` int NOT NULL, `string` varchar(10) NULL )
mysql> select * from b; Empty set (0.00 sec)
CREATE TEMPORARY TABLE [IF NOT EXISTS] <临时表名> (<列名1> <类型1> [,…] <列名n> <类型n>) [表选项] [分区选项] [IGNORE | REPLACE] [AS <查询表达式>]
语法说明:
[IF NOT EXISTS]、<临时表名>、<列名1><类型1>、[表选项]、[分区选项]:同语法1。
[IGNORE | REPLACE]:选项指示在使用语句复制表时如何处理重复唯一键值的行。在唯一键值上重复现有行的行将被丢弃。使用 时 REPLACE,新行将替换具有相同唯一键值的行。如果既没有指定IGNORE也没有 REPLACE指定,重复的唯一键值会导致错误。
[AS <查询表达式>]:要从另一个表创建一个表。
将对a表查询结果创建为名叫b的临时表
CREATE TEMPORARY TABLE b select * from a;
语法2在创建b临时表的时候是有数据的,因为是以查询结果新建的。 |
CREATE TEMPORARY TABLE [IF NOT EXISTS] <临时表名> { LIKE <旧表名> | (LIKE <旧表名>) }
以a表的表结构创建一个名叫b临时表
CREATE TEMPORARY TABLE b like a;
会话创建临时表后,服务器不再对该表执行进一步的权限检查。创建会话可以对表执行任何操作,例如DROP TABLE、 INSERT、 UPDATE、 或 SELECT。