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表结构和表内容差异比对的主要内容,如果未能解决你的问题,请参考以下文章