当前位置: 首页 > news >正文

oracle 快速创建表结构

在 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;

相关文章:

  • C语言基础20
  • 基于SpringBoot的“智慧医疗采购系统”的设计与实现(源码+数据库+文档+PPT)
  • 【题解】AtCoder AT_abc400_c 2^a b^2
  • d202547
  • AF3 OpenFoldMultimerDataModule类解读
  • 【零基础入门unity游戏开发——动画篇】Animation动画窗口,创建编辑动画
  • uniapp微信小程序地图marker自定义气泡 customCallout偶尔显示不全解决办法
  • 本地大模型构建个人知识库(Ragflow)
  • Oracle序列介绍
  • Web开发:常用 HTML 表单标签介绍
  • 数据类型与判断
  • 【后端开发面试题】每日 3 题(三十)
  • CentralCache
  • 登录窗口布局
  • 具身智能零碎知识点(一):深入解析Transformer位置编码
  • oracle 包的管理
  • ffmpeg提取字幕
  • 八大排序——c++版
  • 如何使用 Coze 的 HTTP 请求节点实现高效数据交互
  • 《深度揭秘:借助MySQL实现AI模型训练全程追溯》
  • ps手绘网站有哪些/网络营销专业介绍
  • 为某公司或企业做的门户网站/青岛网站建设优化
  • 淘宝了做网站卖什么好/seo外链工具
  • 专业做装修设计的网站/网站收录查询网
  • 网站制作公司制作网站/厦门seo小谢
  • 承德市宽城县建设局网站/广告推广网站