有时候会有某种需求:需要对比两个表的表结构是否一致,有时候甚至是整个数据库所有表的表结构对比......。表结构对比无非就是字段名、字段类型、字段数据类型、以及字段的顺序的对比。如果需要对比表结构,可以通过下面简单的脚本实现:

SELECT M.OWNER
      ,M.TABLE_NAME
      ,M.COLUMN_ID
      ,M.COLUMN_NAME
      ,M.DATA_TYPE
      ,M.DATA_LENGTH
      ,N.OWNER
      ,N.TABLE_NAME
      ,N.COLUMN_ID
      ,N.COLUMN_NAME
      ,N.DATA_TYPE
      ,N.DATA_LENGTH
FROM
(
SELECT OWNER
      ,TABLE_NAME
      ,COLUMN_ID
      ,COLUMN_NAME
      ,DATA_TYPE
      ,DATA_LENGTH
FROM DBA_TAB_COLUMNS
WHERE OWNER=&OWNER_A
  AND TABLE_NAME=&TABLE_NAME_A
) M LEFT JOIN
(
SELECT OWNER
      ,TABLE_NAME
      ,COLUMN_ID
      ,COLUMN_NAME
      ,DATA_TYPE
      ,DATA_LENGTH
FROM DBA_TAB_COLUMNS
WHERE OWNER=&OWNER_B
  AND TABLE_NAME=&TABLE_NAME_B
) N ON  M.COLUMN_ID =N.COLUMN_ID
    AND M.COLUMN_NAME = N.COLUMN_NAME 
    AND M.DATA_TYPE = N.DATA_TYPE 
    AND M.DATA_LENGTH= N.DATA_LENGTH
ORDER BY M.TABLE_NAME, M.COLUMN_ID;

但是如果A表与B表前面的字段一致,然而B表有一些额外的字段,那么上面的SQL(左连接)就会查不出两者之间结构的不同。此时需要使用右连接才能对比出真正的表结构。所以如果需要对比两者的表结构是否一致,最好左连接查一次,右连接查一次。才能真正的确认两者的表结构的异同。

SELECT M.OWNER
      ,M.TABLE_NAME
      ,M.COLUMN_ID
      ,M.COLUMN_NAME
      ,M.DATA_TYPE
      ,M.DATA_LENGTH
      ,N.OWNER
      ,N.TABLE_NAME
      ,N.COLUMN_ID
      ,N.COLUMN_NAME
      ,N.DATA_TYPE
      ,N.DATA_LENGTH
FROM
(
SELECT OWNER
      ,TABLE_NAME
      ,COLUMN_ID
      ,COLUMN_NAME
      ,DATA_TYPE
      ,DATA_LENGTH
FROM DBA_TAB_COLUMNS
WHERE OWNER=&OWNER_A
  AND TABLE_NAME=&TABLE_NAME_A
) M RIGHT JOIN
(
SELECT OWNER
      ,TABLE_NAME
      ,COLUMN_ID
      ,COLUMN_NAME
      ,DATA_TYPE
      ,DATA_LENGTH
FROM DBA_TAB_COLUMNS
WHERE OWNER=&OWNER_B
  AND TABLE_NAME=&TABLE_NAME_B
) N ON  M.COLUMN_ID =N.COLUMN_ID
    AND M.COLUMN_NAME = N.COLUMN_NAME 
    AND M.DATA_TYPE = N.DATA_TYPE 
    AND M.DATA_LENGTH= N.DATA_LENGTH
ORDER BY M.TABLE_NAME, M.COLUMN_ID;

ORACLE数据库对比表结构相关推荐

  1. Oracle数据库的表结构 简单表的建立

    转载于:https://www.cnblogs.com/chouji717/p/5948299.html

  2. 数据库间表结构对比和数据对比

    概述 对于企业软件开发或实施人员,在软件实施过程中,经常会遇到了这么一个问题,我们在客户那边安装了整个ERP程序并且向数据库中导入了客户提供给我的基础资料,程序进入试运行阶段,在试运行期间,客户反映出 ...

  3. MySQL 对比数据库的表结构

    有时候,需要对比一下测试环境和生产环境中,数据库的表结构是否有所差异.有两个常用的工具. AmpNmp.DatabaseCompare GUI 界面,支持多种数据库(MySQL.SQL Server. ...

  4. oracle实验报告2:: Oracle数据库物理存储结构管理(含实验小结)

    目录 实验目的 实验设备及器材 实验内容 实验步骤 实验过程 实验小结 实验目的 1.熟悉Oracle数据库物理存储结构: 2.掌握Oracle数据库数据文件的管理: 3.掌握Oracle数据库控制文 ...

  5. SQL巩固以及数据库、表结构优化

    SQL巩固&数据库.表结构优化 前言 对于初级程序开发工程师而言,SQL是很多人的弱项,为此我给大家来做一下总结,希望能够帮到你们. 课程说明 1.介绍项目实战开发过程中常用的MySQL函数及 ...

  6. Oracle数据更新,表结构,约束

    Oracle数据更新,表结构,约束 数据插入 insert into 表名称[(列名称1,列名称2,-)] values (值1,值2-): 字符串:使用单引号声明,例如:'sasda'; 数字:直接 ...

  7. oracle两个表数据比较,oracle数据库两表数据比较

    1 引言 在程序设计的过程中,往往会遇到两个记录集的比较.如华东电网PMS接口中实现传递一天中变更(新增.修改.删除)的数据.实现的方式有多种,如编程存储过程返回游标,在存储过程中对两批数据进行比较等 ...

  8. 【Oracle数据库丢失表排查思路】

    Oracle数据库丢失表排查思路 说明:由于系统采用ID取模分表法进行Oracle数据存储,某日发现Oracle数据库中缺少对应的几张业务数据表,遂进行相关问题查询,简单记录一下排查思路: 由于我们代 ...

  9. oracle删除表的一个字段的数据库,学会Oracle数据库删除表字段和Oracle数据库表增加字段方法...

    Oracle数据库添加字段的语法:alter table tablename add (column datatype [default  value][null/not null],-.); Ora ...

最新文章

  1. 计算机视觉的基本概念
  2. vue 背景透明度_一款媒体小白喜爱的视频编辑软件,vue视频编辑APP,想学就来...
  3. 使用docker安装mysql服务
  4. 得到app文稿导出_再见了扫描仪!微信打开这个功能,一键将纸质文稿扫描成电子档...
  5. Qt Creator将纹理附加到材质
  6. LocalDateTime、LocalDate、Date的相互转换(亲测LocalDateTime转LocalDate)
  7. JQuery实现动态插入HTML模块
  8. visual studio 2019 HTML怎么自动生成代码_敲代码和编程适合什么样的笔记本?深度推荐...
  9. python画图显示不了中文_完美解决Python matplotlib绘图时汉字显示不正常的问题
  10. linux ubuntu软件中心,安装Lubuntu 软件中心
  11. 【7】测试用例设计-等价类分析法
  12. HTML5 学习(1) -- 介绍
  13. linux daemon 函数,Daemon 进程的创建
  14. 24种设计模式与6大原则
  15. android--关于apk加密那点事的思考
  16. 拓扑排序 java_[Java]聊聊拓扑排序算法
  17. 恭贺武汉大学国际软件学院考生集体通过LPI一级认证
  18. ROS学习笔记之——MAC安装ubuntu虚拟机
  19. Astalavista被蹂躏过程(转载自baoz.net)
  20. Ubuntu 16.04 笔记本双显卡安装 CUDA9.0

热门文章

  1. 面试官:来说说单点登录的三种实现方式
  2. Lombok经常用,却不知道它的原理是什么
  3. 用鸿蒙跑了个 “hello world”!鸿蒙开发初体验
  4. Google 开源的依赖注入库,比 Spring 更小更快!
  5. 运维想吃透监控系统,就这一篇足够了
  6. 一起学设计模式 - 观察者模式
  7. Datawhale与Tianchi助力产学研融合-华北电力大学专场
  8. 可解释机器学习发展和常见方法!
  9. 如何使ResNet优于EfficientNet?
  10. 时间就是金钱!Windows 上必装的 10 款高效软件