<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                [TOC] # 關于 UPDATE 語句 UPDATE語句用來更新表的行記錄。 簡單的UPDATE語句語法格式如下: ~~~ UPDATE table_name SET column_name = value [, column_name = value]... [ WHERE condition ]; ~~~ 其中,column\_name 是要更新的列,等號后面的 value 是要更新的目標值,必須符合列的類型定義。WHERE 條件子句指定要更新的行記錄必須滿足的條件,沒有 WHERE 條件子句就是更新表對應列的所有記錄。 ## 示例:更新所有記錄 ~~~ obclient> update t_insert set value=value+1 ; Query OK, 4 rows affected (0.00 sec) Rows matched: 4 Changed: 4 Warnings: 0 obclient> select * from t_insert; +----+------+-------+---------------------+ | id | name | value | gmt_create | +----+------+-------+---------------------+ | 1 | CN | 10002 | 2020-04-03 17:18:06 | | 2 | US | 10003 | 2020-04-03 17:18:47 | | 3 | EN | 10004 | 2020-04-03 17:18:47 | | 4 | JP | 10005 | 2020-04-03 17:28:21 | +----+------+-------+---------------------+ 4 rows in set (0.00 sec) ~~~ 不帶條件更新的時候,如果記錄數達到幾十萬或者幾百萬,會有大事務產生,可能會失敗。所以 UPDATE 要注意控制事務不要太大。 ## 示例:更新部分記錄,違反約束報錯 ~~~ obclient> create unique index uk_name on t_insert(name); Query OK, 0 rows affected (1.99 sec) obclient> update t_insert set name='US' where id=3; ERROR 1062 (23000): Duplicate entry 'US' for key 'uk_name' ~~~ 除了顯式的 UPDATE 語句外,還有幾類語句也可以更新數據。比如說 INSERT 因為約束沖突失敗的時候,可以使用 ON DUPCLICATE KEY UPDATE 子句轉變為 UPDATE 語句更新相關字段。 #### 關于 INSERT ON DUPLICATE KEY UPDATE 子句 使用 ON DUPLICATE KEY UPDATE 子句時,要求表上面要有主鍵或唯一約束(索引)。 **示例:使用****INSERT ON DUPLICATE KEY UPDATE****避免數據插入沖突** ~~~ obclient> INSERT INTO t_insert(id, name, value) VALUES (3,'UK', 10003); ERROR 1062 (23000): Duplicate entry '3' for key 'PRIMARY' obclient> INSERT INTO t_insert(id, name, value) VALUES (3,'UK', 10003) ON DUPLICATE KEY UPDATE name='UK', value=10003 ; Query OK, 2 rows affected (0.01 sec) obclient> select * from t_insert; +----+------+-------+---------------------+ | id | name | value | gmt_create | +----+------+-------+---------------------+ | 1 | CN | 10002 | 2020-04-03 18:05:45 | | 2 | US | 10003 | 2020-04-03 18:05:54 | | 3 | UK | 10003 | 2020-04-03 18:05:54 | | 4 | JP | 10005 | 2020-04-03 18:06:08 | +----+------+-------+---------------------+ 4 rows in set (0.00 sec) ~~~ #### 關于 SELECT … FOR UPDATE 子句 使用 SELECT … FOR UPDATE 可以在讀取記錄的時候就對記錄加鎖,避免其他 DML 語句對該筆記錄進行同時修改,這種設計通常也稱為“悲觀鎖策略”。 **示例:使用****SELECT … FOR UPDATE 先鎖定記錄后修改** ~~~ obclient> select id,name,value from t_insert where id=2 for update; +----+------+-------+ | id | name | value | +----+------+-------+ | 2 | US | 10003 | +----+------+-------+ 1 row in set (0.01 sec) obclient> update t_insert set value=value+100 where id=2; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看