你意思是要建立一個中間表維持兩表之間的多對多的復雜該系是吧?
目前創(chuàng)新互聯(lián)已為近千家的企業(yè)提供了網站建設、域名、虛擬空間、綿陽服務器托管、企業(yè)網站設計、太康網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
你試試這個語句:
insert into C(a1,b1,a2,b2,) select ... from ....寫上你所要關聯(lián)的數據。一般的需求不會是笛卡爾集是吧。也就是說不可能每個數據都對應完所有數據。
insert into 新表(字段1,字段2,字段3) select 字段1,字段2,字段3 from 舊表,commit;確定新表里沒被插入的字段有默認值或者不為空,否則報錯;現在在另一個表中建一個字段(null),然后在企業(yè)管理器里用數據導出,把其他字段的鉤選空,就那個要復制的字段,這樣導出就可以了,只不過源數據庫和目標數據庫是同一個數據庫而已。
拓展回答:不同的數據庫語法不同(SQL Server和Oracle為例),且復制包括目標表已存在和目標表不存在的情況;Oracle應用產品包括財務,供應鏈,制造,項目管理、人力資源和市場與銷售等150多個模塊,榮獲多項世界大獎,現已被全球近7600多家企業(yè)所采用;由于在電子商務方面的杰出表現,Oracle公司在美國Mongan Stanley公司最新公布的權威性全球企業(yè)1000強中,從去年的第122名一躍成為第13名,成為全球第二大獨立軟件公司和最大的電子商務解決方案供應商。
update stuinfo t1
set t1.photo = (
select t2.photo from tbl_detailinfo t2
where t1.id = t2.no
)
where exists (
select t2.photo from tbl_detailinfo t2
where t1.id = t2.no
)
1.不同用戶之間的表數據復制
對于在一個數據庫上的兩個用戶A和B,假如需要把A下表old的數據復制到B下的new,請使用權限足夠的用戶登入sqlplus:
insert into B.new(select * from A.old);
如果需要加條件限制,比如復制當天的A.old數據
insert into B.new(select * from A.old where date=GMT);
藍色斜線處為選擇條件
2.同用戶表之間的數據復制
用戶B下有兩個表:B.x和B.y,如果需要從表x轉移數據到表y,使用用戶B登陸sqlpus即可:
insert into 目標表y select * from x where log_id'3049' -- 復制數據
注意:要示目標表y必須事先創(chuàng)建好
如insert into bs_log2 select * from bs_log where log_id'3049'
3.B.x中個別字段轉移到B.y的相同字段
--如果兩個表結構一樣
insert into table_name_new select * from table_name_old
如果兩個表結構不一樣:
insert into y(字段1,字段2) select 字段1,字段2 from x
4.只復制表結構 加入了一個永遠不可能成立的條件1=2,則此時表示的是只復制表結構,但是不復制表內容
create table 用戶名.表名 as select * from 用戶名.表名 where 1=2
如create table zdsy.bs_log2 as select * from zdsy.bs_log where 1=2
5完全復制表(包括創(chuàng)建表和復制表中的記錄)
create table test as select * from bs_log --bs_log是被復制表
6 將多個表數據插入一個表中
insert into 目標表test(字段1。。。字段n) (select 字段1.。。。。字段n) from 表 union all select 字段1.....字段n from 表
7、創(chuàng)建用戶budget_zlgc,權限和budget相同,(A、只復制所有表結構
B、復制所有表所有信息)
創(chuàng)建用戶budget_zlgc,并導出budge用戶數據
exp userid="\"sys/sys
as sysdba"\" file='/backup/expdb/oa0824.dmp'
log='/backup/expdb/oaex0825.log' owner=budget ignore=Y buffer=256000000
可用如下方法復制:
如果新表不存在:
比如有一張表叫test,現在要復制表結構及表內數據,可執(zhí)行代碼:
create table test as select * from test;
這樣就把表結構連同數據一起復制了。
如果表存在,可用以下代碼:
insert into test1 select * from test;commit;