update?dolar?set?spay=1.5*spay?where?sno?in?(select?sno?from?employee?where?trunc(months_between(sysdate,sbirth)/12)?30)
創(chuàng)新互聯公司作為成都網站建設公司,專注重慶網站建設公司、網站設計,有關企業(yè)網站設計方案、改版、費用等問題,行業(yè)涉及成都橡塑保溫等多個領域,已為上千家企業(yè)服務,得到了客戶的尊重與認可。
可能我這個年齡算的也不嚴謹,但你那個人家只告訴你年齡30歲,你不能自己先算出來是哪年哪月哪日
設定dept表deptno列為主鍵。
alter
table
dept
add
constraint
pk_deptno
primary
key
(deptno);
在emp表deptno列上建立外鍵引用dept表deptno,指定外鍵類型為級聯刪除。
alter
table
emp
add
constraint
fk_deptno
foreign
key
(deptno)
references
dept(deptno)
on
delete
cascade;
這樣刪除dept表
只需:delete
from
dept
where
city='shanghai';
就可以自動刪除對應emp表內容。
與其說oracle如何update索引數據
還不如說如何提高更新的效率.
簡單說來:
1、暫停索引,更新后恢復.避免在更新的過程中涉及到索引的重建.
2、批量更新,每更新一些記錄后及時進行提交動作.避免大量占用回滾段和或臨時表空間.
3、創(chuàng)建一臨時的大的表空間用來應對這些更新動作.
如果update的是索引字段,就會涉及到索引的重建,暫停索引不會提高多少的速度,反而有可能降低update速度,
因為在更新是索引可以提高數據的查詢速度,重建索引引起的速度降低影響不大。
oracle優(yōu)化修改參數最多也只能把性能提高15%,大部分都是sql語句的優(yōu)化!
修改關聯數據的方法如下。
有以下兩張表:
根據test2表中的id和test1表中的id關聯,修改test1表中name字段,語句如下:
update?test1?a?set?a.name=(select?b.name?from?test2?b?where?a.id=b.id)?where?a.id?in?(select?id?from?test2);
更新后,test1表中結果:
update更新表不能用重命名
update bill set goodsname='汽車配件',torvover='5000'
where billid=6
and exists (select suppliername from supplier s where s.supplierid=bill.supplierid and s.suppliername='阿里巴巴')
不管是update還是merge每次都是只能修改一站表,還沒聽說一次修改兩張表的。
如果分別修改那就比較簡單了(先確定B列是否唯一,如果不唯一,那么可能存在修改擴大的問題,所以可能還要修改語句),update a set a.d=2 where a.b=(select b from E where h=1)(這是a表的,b表的改法更容易)
如果一起修改,那么可能只能臨時修改,也就是select的時候修改一下,這個一般沒什么用。