您的位置:首页 > 文旅 > 美景 > 建筑网站architect_免费网站建设总部_创意营销案例_广告接单网站

建筑网站architect_免费网站建设总部_创意营销案例_广告接单网站

2025/4/16 6:07:17 来源:https://blog.csdn.net/weixin_41826215/article/details/147055084  浏览:    关键词:建筑网站architect_免费网站建设总部_创意营销案例_广告接单网站
建筑网站architect_免费网站建设总部_创意营销案例_广告接单网站

在 Oracle 中快速创建表结构(仅复制表结构,不复制数据)可以通过以下方法实现,适用于需要快速复制表定义或生成空表的场景

1. 使用 CREATE TABLE AS SELECT (CTAS) 方法

-- 复制源表的全部列和数据类型,但不复制数据
CREATE TABLE new_table AS SELECT * FROM source_table WHERE 1=0;

-- 示例:从 employees 表复制结构
CREATE TABLE employees_copy AS SELECT * FROM employees WHERE 1=0;

  • 仅复制列名、数据类型和 NOT NULL 约束。

  • 不会复制主键、外键、索引、默认值、注释等元数据。

  • 适用于快速生成临时表或测试表。

 2. 使用 DBMS_METADATA 生成 DDL

 通过 Oracle 内置包 DBMS_METADATA 获取表的完整 DDL 语句,手动修改表名后执行:

获取源表的 DDL: 

-- 设置输出格式
SET LONG 1000000
SET PAGESIZE 0

-- 获取表结构的 DDL
SELECT DBMS_METADATA.GET_DDL('TABLE', 'SOURCE_TABLE') FROM DUAL;

修改表名并执行

将生成的 DDL 语句中的 SOURCE_TABLE 替换为新表名,

CREATE TABLE new_table (
    id NUMBER PRIMARY KEY,
    name VARCHAR2(50) NOT NULL,
    ...
);

  • 完整复制表结构(包括约束、索引、注释等)。

  • 需要手动修改表名和其他参数(如表空间)。

3. 使用 SELECT * FROM 结合 UNION ALL

 -- 示例:快速定义与 employees 结构相同的空表
CREATE TABLE employees_empty AS
SELECT 
    NULL AS employee_id,  -- 数据类型自动继承
    NULL AS first_name,
    NULL AS last_name,
    NULL AS hire_date,
    NULL AS salary,
    NULL AS department_id
FROM DUAL 
WHERE 1=0;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com