工作小技巧--数据库如何基于SELECT结果集创建表

 时间:2026-02-14 21:25:40

1、首先基于 SELECT结果集创建一张新的数据库表, 语法为:

CREATE TABLE NEW_TABLE_NAME AS SELECT COL1,COL2, COL3 FROM OLD_TABLE_NAME;

运行上述语句,我们会基于 OLD_TABLE_NAME 的 COL1,COL2, COL3 列创建新的数据库表 NEW_TABLE_NAME,新表中具体包含旧表的哪些列,我们可以指定,如果想包含旧表的所有列,就使用 SELECT * FROM OLD_TABLE_NAME 即可。

MySQL 和 Oracle 数据库均可通过上述语句基于结果集创建新表(图示)。

工作小技巧--数据库如何基于SELECT结果集创建表

工作小技巧--数据库如何基于SELECT结果集创建表

2、在上述演示中,我们可以看到,创建的新表直接就包含了旧表中的所有select操作查询获取的数据。如果我们只是想创建一张和旧表表结构一样的新表,但不包含或只包含我们指定的数据,那如何操作呢?

不包含任何数据的操作

CREATE TABLE NEW_TABLE_NAME AS SELECT COL1,COL2, COL3 FROM OLD_TABLE_NAME WHERE 1 != 1;

包含我们指定的数据的操作:

CREATE TABLE NEW_TABLE_NAME AS SELECT COL1,COL2, COL3 FROM OLD_TABLE_NAME WHERE 你的查询条件;

工作小技巧--数据库如何基于SELECT结果集创建表

工作小技巧--数据库如何基于SELECT结果集创建表

3、总结:通过结果集创建新表的命令格式为:

cteate table 新表名 as select 所需列名(所有列则使用 * ) from 旧表名  where查询条件

MySQL 和 Oracle 数据库均支持这种命令形式。

1、表创建出来了,那是否能将一个SELECT操作结果集直接插入到表中呢?当然没有问题,操作如下:

INSERT INTO 表名 (列名列表) SELECT 相应的列名列表 FROM 另外的表名

如果两张表的结构完全一致(列名以及列的类型),则可以简化为如下格式:

INSERT INTO 表名 SELECT * FROM 另外的表名

MySQL 和 Oracle 数据库均可通过上述语句将一个查询结果集插入到特定表中(图示)。

工作小技巧--数据库如何基于SELECT结果集创建表

工作小技巧--数据库如何基于SELECT结果集创建表

  • linux如何删除文件
  • SQL语句不等于怎么表达
  • linux中如何将文件内容复制到另一个文件中?
  • SQL怎么改表名
  • insert into语句怎么用
  • 热门搜索
    从化旅游攻略 江苏无锡旅游 旅游特价 广州附近的旅游景点 北京旅游地图高清版 大陈岛旅游 巴厘岛旅游景点 上海旅游公司 中国旅游节 苏州三山岛旅游攻略