update 表名 set 字段A=值1 where 符合什么條件再update操作;
創(chuàng)新互聯(lián)建站是一家以網(wǎng)站建設(shè)公司、網(wǎng)頁設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、成都網(wǎng)站營銷、小程序App開發(fā)等移動(dòng)開發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為成都門窗定制等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務(wù)。
你問題可以再描述的清楚一些,比如表有幾個(gè)字段,需要怎么更新,update語句本身演變很大的,可以實(shí)現(xiàn)很多操作的。
看具體怎么更新了,一般語法是:
update?表名?set?字段='xxx'?where?條件;
commit;
這個(gè)所有數(shù)據(jù)庫基本一致,都是這個(gè)語法
C#利用update更新數(shù)據(jù)到oracle數(shù)據(jù)庫:
第一步:打開oracle數(shù)據(jù)庫
public static string connString = "";
public static OracleConnection conn = null;
//打開數(shù)據(jù)庫連接
public static bool Open()
{
//從配置文件中獲取連接字符串
//配置文件需要放在項(xiàng)目目錄下的bin\Release中
connString = getXmlValue("connString");
conn = new OracleConnection(getXmlValue("connString"));
try
{
conn.Open();
Console.WriteLine("數(shù)據(jù)庫連接成功");
return true;
}
catch (System.Exception ex)
{
Console.Write(ex.Message);
MessageBox.Show("未能連接到數(shù)據(jù)庫");
return false;
}
第二步:執(zhí)行更新方法:
public static int update(int ruleId, int equipmentId, String equipmentName, String propertyName, int ruleType, String ruleRequest, String ruleRequestOther, String ruleExplain)
{
String sql = "update Device_Attr t set t.BASEID = :equipmentId, t.BASENAME = :equipmentName,t.CA_NAME = :propertyName,t.CA_RULETYPE = :ruleType,t.CA_RULETEXT = :ruleRequest,t.CA_RULETEXT2 = :ruleRequestOther,t.CONTENT = :ruleExplain where t.CA_ID =:ruleId";
OracleCommand cmd = new OracleCommand(sql, conn);
OracleParameter param_1 = new OracleParameter(":equipmentId", equipmentId);
cmd.Parameters.Add(param_1);
OracleParameter param_2 = new OracleParameter(":equipmentName", equipmentName + "$");
cmd.Parameters.Add(param_2);
OracleParameter param_3 = new OracleParameter(":propertyName", propertyName);
cmd.Parameters.Add(param_3);
OracleParameter param_4 = new OracleParameter(":ruleType", ruleType);
cmd.Parameters.Add(param_4);
OracleParameter param_5 = new OracleParameter(":ruleRequest", ruleRequest);
cmd.Parameters.Add(param_5);
OracleParameter param_6 = new OracleParameter(":ruleRequestOther", ruleRequestOther);
cmd.Parameters.Add(param_6);
OracleParameter param_7 = new OracleParameter(":ruleExplain", ruleExplain);
cmd.Parameters.Add(param_7);
OracleParameter param_8 = new OracleParameter(":ruleId", ruleId);
cmd.Parameters.Add(param_8);
int result = cmd.ExecuteNonQuery();
return result;
}
先建立一個(gè)結(jié)構(gòu)一模一樣的表emp1,并為其插入部分?jǐn)?shù)據(jù)
create table emp1
as
select * from emp where deptno = 20;
update掉emp1中的部分?jǐn)?shù)據(jù)
update emp1
set sal = sal 100,
comm = nvl(comm,0) 50
然后我們試著使用emp1中數(shù)據(jù)來更新emp中sal 和 comm這兩列數(shù)據(jù)。
我們可以這么寫
Update emp
Set(sal,comm) = (select sal,comm. From emp1 where emp.empno = emp1.empno)
Where exists (select 1 from emp1 where emp1.empno = emp.empno)
請你尤其注意這里的where子句,你可以嘗試不寫where子句來執(zhí)行以下這句話,你將會使得emp中的很多值變成空。
這是因?yàn)樵趏racle的update語句中如果不寫where子句,oracle將會默認(rèn)的把所有的值全部更新,即使你這里使用了子查詢并且某在值并不能在子查詢里找到,你就會想當(dāng)然的以為,oracle或許將會跳過這些值吧,你錯(cuò)了,oracle將會把該行的值更新為空。
我們還還可以這么寫:
update (select a.sal asal,b.sal bsal,a.comm acomm,
b.comm bcomm from emp a,emp1 b where a.empno = b.empno)
set asal = bsal,
acomm = bcomm;
這里的表是一個(gè)類視圖。當(dāng)然你執(zhí)行時(shí)可能會遇到如下錯(cuò)誤:
ERROR 位于第 2 行:
ORA-01779: 無法修改與非鍵值保存表對應(yīng)的列
這是因?yàn)樾陆ǖ谋韊mp1還沒有主鍵的緣故
下面增加一個(gè)主鍵
alter table emp1
add constraint pk_emp1 primary key (empno);
執(zhí)行之后
在執(zhí)行前面的語句就能成功。
這里我們總結(jié)一下:
在oracle中不存在update from結(jié)構(gòu),所以遇到需要從另外一個(gè)表來更新本表的值的問題的時(shí)候,有兩種解決的辦法:
一種是使用子查詢,使用子查詢時(shí)一定要注意where條件(一般后面接exists子句),除非兩個(gè)表是一一對應(yīng)的,否則where條件必不可少,遺漏掉where條件時(shí)可能會導(dǎo)致插入大量空值。
另外一種是類視圖的更新方法,這也是oracle所獨(dú)有的。先把對應(yīng)的數(shù)據(jù)全部抽取出來,然后更新表一樣更新數(shù)據(jù),這里需要注意的是,必須保證表的數(shù)據(jù)唯一型。
新聞標(biāo)題:oracle怎么更新表格,oracle如何修改表內(nèi)容
文章鏈接:http://aaarwkj.com/article10/dsiecdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、品牌網(wǎng)站制作、靜態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航、做網(wǎng)站、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)