Oracle數據庫--------------------數據更新(修改數據Update)

關於Oracle數據庫的學習記錄:數據庫

二十3、數據更新(修改數據)
當須要進行更新的時候,採用以下語法:
UPDATE 表名稱 SET 字段 1=值 1,字段 2=值 2,...[WHERE 更新條件(s)];
在使用更新的時候,WHERE子句裏面的內容可使用IN、BETWEEN...AND、LIKE等限定查詢
範例:將SMITH的工資修改成8000,佣金修改成9000
UPDATE myemp SET sal=8000,comm=9000 WHERE ename='SMITH';
範例:將ALLEN的工資修改成SCOTT的工資
UPDATE myemp SET sal=(
             SELECT sal
             FROM myemp
             WHERE ename='SCOTT')
WHERE ename='ALLEN';
範例:將工資低於公司平均工資的僱員工資上漲20%
**公司的平均工資:
SELECT avg(sal) FROM myemp;
**更新工資信息:
UPDATE myemp SET sal=sal*(1+0.2) WHERE sal<(SELECT avg(sal) FROM myemp)

若是更新影響了多條記錄,那麼也會同時返回更新的數據量的信息

範例:將全部僱員的僱傭日期改成今天
UPDATE myemp SET hiredate=SYSDATE;

實際上在數據庫更新數據的時候,其餘的用戶是不能針對當前的數據進行任何操做的

案例:若是說如今有一個某大型社交網站,已經註冊的用戶有3億人,每一個人若是要想使用這個網站,都會實現一次自動更新最後登陸日期的操做(用戶表上保存最後一次更新日期),忽然有一天,要更新數據表上每一字段的內容,而且要求所有更新,那麼要如何處理這個問題?

問題麻煩點:若是如今執行了所有更新的操做(WHEER子句不存在),那麼按照每10條更新要花費1秒的時間來操做,總共3億條數據,要花347天時間才能所有更新完成,那麼意味着這347天內都不能登陸
軟件判斷效率的方式有兩個:時間複雜度和空間複雜度。
軟件性能平衡方式有兩種:以時間換空間、以空間換時間
雲計算:谷歌和亞馬遜比較厲害

首先,若是更新所有的數據哪100%是不可取的,可是能夠進行拆分操做,若是是活躍用戶,那麼每次要使用的時候確定要登錄一次,登錄的時候除了驗證用戶名和密碼以外,再額外的執行一條更新操做,這樣是以時間換空間

總結:只要是寫更新操做,不可能不寫WHERE子句
性能