<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 練習 41:SQL 更新 > 原文:[Exercise 41: Updating with SQL](https://learncodethehardway.org/more-python-book/ex41.html) > 譯者:[飛龍](https://github.com/wizardforcel) > 協議:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) > 自豪地采用[谷歌翻譯](https://translate.google.cn/) 現在,你了解了 CRUD 的 CR 部分,還剩下更新和刪除操作。與所有其他 SQL 命令一樣,`UPDATE`命令遵循類似于`DELETE`的格式,但它會更改行中的列,而不是刪除它們。 ```sql UPDATE person SET first_name = "Hilarious Guy" WHERE first_name = "Zed"; UPDATE pet SET name = "Fancy Pants" WHERE id=0; SELECT * FROM person; SELECT * FROM pet; ``` 在上面的代碼中,我將我的名字改為`"Hilarious Guy"`,因為這更準確。為了展示我的新綽號,我將我的獨角獸更名為`"Fancy Pants"`。他喜歡它。 這不應該很難弄清楚,只是以防萬一,我拆解第一個: + 以`UPDATE`開始,這是你將要更新的表,這里是`person`。 + 接下來使用`SET`來說明,哪些列應該被設置為什么值。只要你用逗號分隔,如`first_name = "Zed", last_name = "Shaw"`,你可以按需更改盡可能多的列。 + 然后指定一個`WHERE`子句,為每行提供一個`SELECT`風格的測試集。當`UPDATE`找到匹配時,它執行更新,并會將列`SET`為你規定的樣子。 ## 復雜表的更新 在上一個練習中,我讓你使用`UPDATE`執行子查詢,現在我要求你,將所有我擁有的寵物的名稱更改為`"Zed's Pet"`。 ```sql SELECT * FROM pet; UPDATE pet SET name = "Zed's Pet" WHERE id IN ( SELECT pet.id FROM pet, person_pet, person WHERE person.id = person_pet.person_id AND pet.id = person_pet.pet_id AND person.first_name = "Zed" ); SELECT * FROM pet; ``` 這是根據另一個表的信息更新一個表的方法。還有其他一些方法,可以做同樣的事情,但是這樣做是最容易理解。 ## 更新數據 我將向你展示一種插入數據的替代方式,有助于原子地替換一行。你不一定經常需要它,但是如果必須替換整個記錄,并且不希望在不使用事務的情況下執行更復雜的UPDATE,那么它將會有所幫助。 這里,我想用另一個人替換我的記錄,但僅僅保留 ID。問題是我必須在事務中執行`DELETE/INSERT`才能使其成為原子,否則我需要執行一個完整的`UPDATE`。 另一個更簡單的方法是使用`REPLACE`命令,或者將其添加到`INSERT`作為修飾符。這里有一些 SQL,我首先無法插入新的記錄,然后我使用這兩種形式的`REPLACE`來實現它: ```sql /* This should fail because 0 is already taken. */ INSERT INTO person (id, first_name, last_name, age) VALUES (0, 'Frank', 'Smith', 100); /* We can force it by doing an INSERT OR REPLACE. */ INSERT OR REPLACE INTO person (id, first_name, last_name, age) VALUES (0, 'Frank', 'Smith', 100); SELECT * FROM person; /* And shorthand for that is just REPLACE. */ REPLACE INTO person (id, first_name, last_name, age) VALUES (0, 'Zed', 'Shaw', 37); /* Now you can see I'm back. */ SELECT * FROM person; ``` ## 挑戰練習 + 使用`UPDATE`,通過我的`person.id`,將我的名字改回`"Zed"`。 + 寫一個`UPDATE`,將任何死亡動物重命名為`"DECEASED"`。如果你嘗試說他們是`"DEAD"`,它會失敗,因為 SQL 會認為你的意思是,將其設置為名為`"DEAD"`的列,這不是你想要的。 + 嘗試使用一個子查詢,比如在`DELETE`中。 + 訪問 [SQL As Understood By SQLite](http://www.sqlite.org/lang.html) 頁面,并開始閱讀`CREATE TABLE`,`DROP TABLE`,`INSERT`,`DELETE`,`SELECT`和`UPDATE`的文檔。 + 嘗試在這些文檔中找到一些有趣的事情,并記錄你不明白的事情,以便你可以稍后研究它們。
                  <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>

                              哎呀哎呀视频在线观看