update 表名 set 字段A=值1 where 符合什么條件再u(mài)pdate操作;
創(chuàng)新互聯(lián)建站是一家以網(wǎng)站建設(shè)公司、網(wǎng)頁(yè)設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、成都網(wǎng)站營(yíng)銷(xiāo)、小程序App開(kāi)發(fā)等移動(dòng)開(kāi)發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為成都門(mén)窗定制等眾行業(yè)中小客戶(hù)提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開(kāi)發(fā)服務(wù)。
你問(wèn)題可以再描述的清楚一些,比如表有幾個(gè)字段,需要怎么更新,update語(yǔ)句本身演變很大的,可以實(shí)現(xiàn)很多操作的。
看具體怎么更新了,一般語(yǔ)法是:
update?表名?set?字段='xxx'?where?條件;
commit;
這個(gè)所有數(shù)據(jù)庫(kù)基本一致,都是這個(gè)語(yǔ)法
C#利用update更新數(shù)據(jù)到oracle數(shù)據(jù)庫(kù):
第一步:打開(kāi)oracle數(shù)據(jù)庫(kù)
public static string connString = "";
public static OracleConnection conn = null;
//打開(kāi)數(shù)據(jù)庫(kù)連接
public static bool Open()
{
//從配置文件中獲取連接字符串
//配置文件需要放在項(xiàng)目目錄下的bin\Release中
connString = getXmlValue("connString");
conn = new OracleConnection(getXmlValue("connString"));
try
{
conn.Open();
Console.WriteLine("數(shù)據(jù)庫(kù)連接成功");
return true;
}
catch (System.Exception ex)
{
Console.Write(ex.Message);
MessageBox.Show("未能連接到數(shù)據(jù)庫(kù)");
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
然后我們?cè)囍褂胑mp1中數(shù)據(jù)來(lái)更新emp中sal 和 comm這兩列數(shù)據(jù)。
我們可以這么寫(xiě)
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)
請(qǐng)你尤其注意這里的where子句,你可以嘗試不寫(xiě)where子句來(lái)執(zhí)行以下這句話(huà),你將會(huì)使得emp中的很多值變成空。
這是因?yàn)樵趏racle的update語(yǔ)句中如果不寫(xiě)where子句,oracle將會(huì)默認(rèn)的把所有的值全部更新,即使你這里使用了子查詢(xún)并且某在值并不能在子查詢(xún)里找到,你就會(huì)想當(dāng)然的以為,oracle或許將會(huì)跳過(guò)這些值吧,你錯(cuò)了,oracle將會(huì)把該行的值更新為空。
我們還還可以這么寫(xiě):
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è)類(lèi)視圖。當(dāng)然你執(zhí)行時(shí)可能會(huì)遇到如下錯(cuò)誤:
ERROR 位于第 2 行:
ORA-01779: 無(wú)法修改與非鍵值保存表對(duì)應(yīng)的列
這是因?yàn)樾陆ǖ谋韊mp1還沒(méi)有主鍵的緣故
下面增加一個(gè)主鍵
alter table emp1
add constraint pk_emp1 primary key (empno);
執(zhí)行之后
在執(zhí)行前面的語(yǔ)句就能成功。
這里我們總結(jié)一下:
在oracle中不存在update from結(jié)構(gòu),所以遇到需要從另外一個(gè)表來(lái)更新本表的值的問(wèn)題的時(shí)候,有兩種解決的辦法:
一種是使用子查詢(xún),使用子查詢(xún)時(shí)一定要注意where條件(一般后面接exists子句),除非兩個(gè)表是一一對(duì)應(yīng)的,否則where條件必不可少,遺漏掉where條件時(shí)可能會(huì)導(dǎo)致插入大量空值。
另外一種是類(lèi)視圖的更新方法,這也是oracle所獨(dú)有的。先把對(duì)應(yīng)的數(shù)據(jù)全部抽取出來(lái),然后更新表一樣更新數(shù)據(jù),這里需要注意的是,必須保證表的數(shù)據(jù)唯一型。
新聞標(biāo)題:oracle怎么更新表格,oracle如何修改表內(nèi)容
文章鏈接:http://chinadenli.net/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)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)