標籤:技術 strong int where 計算公式 計算 color 欄位 style
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表結構和表內容差異比對