MySQL 增加、更新、删除
文章目錄
- 1. 增加 INSERT
- 2. 更新 UPDATE
- 3. 刪除 DELETE
- 練習 LeetCode 196. 刪除重復的電子郵箱
- 練習 LeetCode 627. 交換工資
學習自 廖雪峰的官方網站
1. 增加 INSERT
- 添加一條記錄
-
沒有列出id字段,因為id字段是一個自增主鍵,由數據庫自己推算
-
如果一個字段有默認值,那么在INSERT語句中可以不出現
-
字段順序隨意,前后兩個()內一一對應即可,如 INSERT INTO students (score, gender, name, class_id) …,對應的VALUES變成(80, 'M', '大牛', 2)
-
一次添加多條記錄,在VALUES子句中指定多個記錄值,每個記錄是由(...)包含的一組值
2. 更新 UPDATE
- 更新一條記錄
- 更新多條記錄
- 使用表達式更新
- 如果where沒有匹配到行,不報錯,無操作
- 操作時,如果沒有where子句,會對整張表操作,小心
3. 刪除 DELETE
DELETE FROM <表名> WHERE ...;DELETE FROM students WHERE id=1; 刪除 id=1 的學生 DELETE FROM students WHERE id>=5 AND id<=7; 刪除 多個學生- 如果where沒有匹配到行,不報錯,無操作
- 操作時,如果沒有where子句,會刪除整張表,小心
練習 LeetCode 196. 刪除重復的電子郵箱
題目:
編寫一個 SQL 查詢,來刪除 Person 表中所有重復的電子郵箱,重復的郵箱里只保留 Id 最小 的那個。
+----+------------------+ | Id | Email | +----+------------------+ | 1 | john@example.com | | 2 | bob@example.com | | 3 | john@example.com | +----+------------------+ Id 是這個表的主鍵。 例如,在運行你的查詢語句之后,上面的 Person 表應返回以下幾行: +----+------------------+ | Id | Email | +----+------------------+ | 1 | john@example.com | | 2 | bob@example.com | +----+------------------+ 提示: 執行 SQL 之后,輸出是整個 Person 表。 使用 delete 語句。來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/delete-duplicate-emails
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
解題:
自連接比對 # Write your MySQL query statement below DELETE p1 FROM Person p1, Person p2 WHERE p1.Email = p2.Email AND p1.Id > p2.Id;1436 ms
# Write your MySQL query statement below DELETE FROM Person WHERE Id NOT IN (SELECT Id FROM (SELECT MIN(Id) Id FROM Person GROUP BY Email) tempTableName );1169 ms
練習 LeetCode 627. 交換工資
題目:
給定一個 salary 表,如下所示,有 m = 男性 和 f = 女性 的值。
交換所有的 f 和 m 值(例如,將所有 f 值更改為 m,反之亦然)。
要求只使用一個更新(Update)語句,并且沒有中間的臨時表。
注意,您必只能寫一個 Update 語句,請不要編寫任何 Select 語句。
例如: | id | name | sex | salary | |----|------|-----|--------| | 1 | A | m | 2500 | | 2 | B | f | 1500 | | 3 | C | m | 5500 | | 4 | D | f | 500 |運行你所編寫的更新語句之后,將會得到以下表: | id | name | sex | salary | |----|------|-----|--------| | 1 | A | f | 2500 | | 2 | B | m | 1500 | | 3 | C | f | 5500 | | 4 | D | m | 500 |來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/swap-salary
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
解題:
case <變量> when <value1> then <newValue1> ELSE <newValue2> # Write your MySQL query statement below UPDATE salary SET sex=CASE sex WHEN 'm' THEN 'f'ELSE 'm'END;or if(condition,true選擇1,not true 選擇2)
# Write your MySQL query statement below update salary set sex = IF(sex = 'm', 'f', 'm')or 異或
# Write your MySQL query statement below update salary set sex = char(ASCII(sex)^ASCII('m')^ASCII('f'))更多練習:
- LintCode 1927. 硬幣翻面
總結
以上是生活随笔為你收集整理的MySQL 增加、更新、删除的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1480. 一维数组的
- 下一篇: LeetCode MySQL 612.