资源描述:
《oracle多表做updateinsert语句》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、update语法最常用的update语法是:UPDATESET=,SET=如果我的更新值Value是从一条select语句拿出来,而且有很多列的话,用这种语法就很麻烦第一,要select出来放在临时变量上,有很多个哦第二,再将变量进行赋值。列多起来非常麻烦,能不能像Insert那样,把整个Select语句的结果进行插入呢?就好象下面insertintotable1(c1,c2,c3)(selectv1,v2,v3fromtable2)答案是可以的,具体的语法
2、如下:UPDATESET(,)=(SELECT(,)FROMWHERE=)WHERE; 下面是这样一个例子:两个表a、b,想使b中的memo字段值等于a表中对应id的name值表a:id,name1王2李3张表b:id,ClientName
3、 123(MSSQLServer)语句:updateb set ClientName =a.name froma,b wherea.id=b.id (Oralce)语句:updateb set (ClientName) = (SELECTnameFROMaWHEREb.id=a.id)updatesetfrom语句格式当where和set都需要关联一个表进行查询时,整个update执行时,就需要对被关联的表进行两次扫描,显然效率比较低。对于这种情况,Sybase和SQLSERVER的解决办法是使用UPDATE...SET...FROM.
4、..WHERE...的语法,实际上就是从源表获取更新数据。在SQL中,表连接(leftjoin、rightjoin、innerjoin等)常常用于select语句,其实在SQL语法中,这些连接也是可以用于update和delete语句的,在这些语句中使用join还常常得到事半功倍的效果。UpdateT_OrderFormSETT_OrderForm.SellerID=B.L_TUserIDFROMT_OrderFormALEFTJOINT_ProductInfo BONB.L_ID=A.ProductID用来同步两个表的数据!Oralce和DB2都支持的语法:U
5、PDATEASET(A1,A2,A3)=(SELECTB1,B2,B3FROMBWHEREA.ID=B.ID)MSSQLServer不支持这样的语法,相对应的写法为:UPDATEA SETA1=B1,A2=B2,A3=B3 FROMALEFTJOINBONA.ID=B.ID个人感觉MSSQLServer的Update语法功能更为强大。MSSQLSERVER的写法:UPDATEASETA1=B1,A2=B2,A3=B3FROMA,BWHEREA.ID=B.ID在Oracle和DB2中的写法就比较麻烦了,如下:UPDATEASET(A1,A2,A3)=(SELEC
6、TB1,B2,B3FROMBWHEREA.ID=B.ID)WHEREIDIN(SELECTB.IDFROMBWHEREA.ID=B.ID)SELECTINTO和INSERTINTOSELECT两种表复制语句SELECTINTO和INSERTINTOSELECT两种表复制语句 Insert是T-sql中常用语句,InsertINTOtable(field1,field2,...)values(value1,value2,...)这种形式的在应用程序开发中必不可少。但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到
7、table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECTINTO和INSERTINTOSELECT表复制语句了。 1.INSERTINTOSELECT语句 语句形式为:InsertintoTable2(field1,field2,...)selectvalue1,value2,...fromTable1 要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。示例如下:INSERTINTOSELECT语句复制表数据 --1.创建测试表
8、 cr