oracle表结构和表内容差异比对

Posted 万物生长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle表结构和表内容差异比对相关的知识,希望对你有一定的参考价值。

oracle表结构和表内容差异比对

oracle中有三种集合操作,他们会把左边和右边的select 结果集进行集合操作.

  • union 并集
  • intersect 交集
  • minus 差集

假设有如下两张表 STUDENT_A 和 STUDENT_B

create table STUDENT_A  
(  
  id   VARCHAR2(36) not null,  
  name VARCHAR2(100),  
  age  NUMBER,  
  sex  VARCHAR2(2)  
);  
  
insert into STUDENT_A (id, name, age, sex)  
values (\'1\', \'bobo\', 28, \'1\');  
insert into STUDENT_A (id, name, age, sex)  
values (\'2\', \'sisi\', 29, \'2\');  
commit;  
  
  
create table STUDENT_B  
(  
  id    VARCHAR2(36) not null,  
  name  VARCHAR2(100),  
  age   NUMBER,  
  clazz VARCHAR2(36)  
);  
  
insert into STUDENT_B (id, name, age, clazz)  
values (\'1\', \'bobo\', 28, \'1\');  
insert into STUDENT_B (id, name, age, clazz)  
values (\'2\', \'sisi\', 29, \'2\');  
insert into STUDENT_B (id, name, age, clazz)  
values (\'3\', \'kiki\', 30, \'1\');  
commit; 

效果图如下:

 

 

 

 

比较两表结构差异语句:

注意下面的小括号不能省,因为是从左到右计算的,如果省掉计算公式就不一样了哦,大家可以自行脑补.

(
  SELECT column_name FROM user_tab_columns WHERE table_name = \'STUDENT_A\'
  MINUS 
  SELECT COLUMN_name FROM user_tab_columns WHERE table_name = \'STUDENT_B\'
)
UNION
(
  SELECT column_name FROM user_tab_columns WHERE table_name = \'STUDENT_B\'
  MINUS 
  SELECT COLUMN_name FROM user_tab_columns WHERE table_name = \'STUDENT_A\'
)

 

结果图如下:

 

 

比较两表内容语句:

注意下面的小括号不能省,因为是从左到右计算的,如果省掉计算公式就不一样了哦,大家可以自行脑补.

(
  SELECT * FROM  STUDENT_A
  MINUS 
  SELECT * FROM  STUDENT_B
)
UNION
(
  SELECT * FROM  STUDENT_B
  MINUS 
  SELECT * FROM  STUDENT_A
)

结果图如下:

 同上图可知比较内容的时候,是不关心字段名是否有差异的,它只关心字段的类型和值.

 

以上是关于oracle表结构和表内容差异比对的主要内容,如果未能解决你的问题,请参考以下文章

SQL两个表数据对比

如何比较mysql数据库的表结构和表内容的差异

我想比较两个oracle数据库表结构的差异,有现成的工具或脚本吗

使用python实现MySQL表结构比对初级版

oracle 查看表结构,表里的数据

如何在Oracle中复制表结构和表数据