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

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数据库的表结构 简单表的建立

  2. Oracle查询数据表结构(字段,类型,大小,备注)

    作用:想要生成整个Oracle数据库所有表结构WORD文档(数据库设计说明书) Oracle数据库字典介绍    Oracle数据字典是有表和视图组成的,存储有关数据库结构信息的一些数据库对象.数据库 ...

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

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

  4. Oracle数据库丢失表排查思路

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

  5. WPF根据Oracle数据库的表,生成CS文件小工具

    开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...

  6. 定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表

    最近项目中有一种需求: 大致需求是这样的 通过给定的 用户名和密码 要定时从远程的数据库中取数据,然后把取出来的数据插入或更新本地的oracle数据库的表 项目的结构式struts1 hibernat ...

  7. mysql对比表结构对比同步,sqlyog架构同步工具

    mysql对比表结构对比同步,sqlyog架构同步工具 对比后的结果示例: 执行后的结果示例: 点击:"另存为(S)" 按钮可以把更新sql导出来.

  8. PowerDesigner连接Oracle数据库建表序列号实现自动增长

    原文:PowerDesigner连接Oracle数据库建表序列号实现自动增长 创建表就不说了.下面开始介绍设置自动增长列. 1 在表视图的列上创建.双击表视图,打开table properties — ...

  9. Oracle 数据库整理表碎片

    Oracle 数据库整理表碎片 转载:http://kyle.xlau.org/posts/table-fragmentation.html 表碎片的来源 当针对一个表的删除操作很多时,表会产生大量碎 ...

随机推荐

  1. apache tiles 页面模板的使用

    jar包maven <!-- Tiles 模板--> <dependency> <groupId>org.apache.tiles</groupId> ...

  2. Python自动化测试工具Splinter简介和使用实例

    Splinter 快速介绍 官方网站:http://splinter.cobrateam.info/ 官方介绍: Splinter is an open source tool for testing ...

  3. GJM : 使用浏览器的计算力,对抗密码破解 [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  4. 【转载】GUID vs INT Debate

    I recently read a blog post on what was better using GUIDs or Integer values. This is been an age lo ...

  5. 为jQuery-easyui的tab组件添加右键菜单功能

    加入了右击TAB选项卡时显示关闭的上下文菜单 具体实现代码: 右键菜单 HTML: <div id="mm" class="easyui-menu" st ...

  6. 12款高质量的响应式 HTML5/CSS3 网站模板

    HTML5 已经成为众所周知的语言,大量的 HTML5 资源和工具正在建立,以帮助开发人员和设计人员.今天,我们展示12款免费的响应式 HTML5/CSS3 网站模板,帮助你创建醒目和视觉震撼的网站. ...

  7. Intercooler.js – 让 AJAX 像锚标签一样简单

    使用 Intercooler,你可以添加 Ajax 到你的应用程序,而无需使用客户端模式的路由,认证,渲染,工厂或依赖注入.事实上,你不需要写任何的 JavaScript 代码.Intercooler ...

  8. 20款时尚的 WordPress 企业模板【免费主题下载】

    在这篇文章中,我们收集了20款时尚的 WordPress 企业模板.WordPress 作为最流行的博客系统,插件众多,易于扩充功能.安装和使用都非常方便,而且有许多第三方开发的免费模板,安装方式简单 ...

  9. 异常之JSP页面跳转出错

    今天在开发过程中发现一个问题:在页面中使用了<jsp:forward>抛错Attempt to clear a buffer that's already been flushed!! 百 ...

  10. HTML5 表单新增属性

    1. 表单内元素的form属性 在H5中可以把form放到页面的任何地方,然后为该元素指定一个form属性,属性值为该表单的id,这样就可以声明该元素从属于指定表单了 <form id=&quo ...