MySQL 增加、更新、删除
文章目錄
- 1. 增加 INSERT
- 2. 更新 UPDATE
- 3. 刪除 DELETE
- 練習(xí) LeetCode 196. 刪除重復(fù)的電子郵箱
- 練習(xí) LeetCode 627. 交換工資
學(xué)習(xí)自 廖雪峰的官方網(wǎng)站
1. 增加 INSERT
- 添加一條記錄
-
沒(méi)有列出id字段,因?yàn)閕d字段是一個(gè)自增主鍵,由數(shù)據(jù)庫(kù)自己推算
-
如果一個(gè)字段有默認(rèn)值,那么在INSERT語(yǔ)句中可以不出現(xiàn)
-
字段順序隨意,前后兩個(gè)()內(nèi)一一對(duì)應(yīng)即可,如 INSERT INTO students (score, gender, name, class_id) …,對(duì)應(yīng)的VALUES變成(80, 'M', '大牛', 2)
-
一次添加多條記錄,在VALUES子句中指定多個(gè)記錄值,每個(gè)記錄是由(...)包含的一組值
2. 更新 UPDATE
- 更新一條記錄
- 更新多條記錄
- 使用表達(dá)式更新
- 如果where沒(méi)有匹配到行,不報(bào)錯(cuò),無(wú)操作
- 操作時(shí),如果沒(méi)有where子句,會(huì)對(duì)整張表操作,小心
3. 刪除 DELETE
DELETE FROM <表名> WHERE ...;DELETE FROM students WHERE id=1; 刪除 id=1 的學(xué)生 DELETE FROM students WHERE id>=5 AND id<=7; 刪除 多個(gè)學(xué)生- 如果where沒(méi)有匹配到行,不報(bào)錯(cuò),無(wú)操作
- 操作時(shí),如果沒(méi)有where子句,會(huì)刪除整張表,小心
練習(xí) LeetCode 196. 刪除重復(fù)的電子郵箱
題目:
編寫(xiě)一個(gè) SQL 查詢,來(lái)刪除 Person 表中所有重復(fù)的電子郵箱,重復(fù)的郵箱里只保留 Id 最小 的那個(gè)。
+----+------------------+ | Id | Email | +----+------------------+ | 1 | john@example.com | | 2 | bob@example.com | | 3 | john@example.com | +----+------------------+ Id 是這個(gè)表的主鍵。 例如,在運(yùn)行你的查詢語(yǔ)句之后,上面的 Person 表應(yīng)返回以下幾行: +----+------------------+ | Id | Email | +----+------------------+ | 1 | john@example.com | | 2 | bob@example.com | +----+------------------+ 提示: 執(zhí)行 SQL 之后,輸出是整個(gè) Person 表。 使用 delete 語(yǔ)句。來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/delete-duplicate-emails
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
解題:
自連接比對(duì) # 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
練習(xí) LeetCode 627. 交換工資
題目:
給定一個(gè) salary 表,如下所示,有 m = 男性 和 f = 女性 的值。
交換所有的 f 和 m 值(例如,將所有 f 值更改為 m,反之亦然)。
要求只使用一個(gè)更新(Update)語(yǔ)句,并且沒(méi)有中間的臨時(shí)表。
注意,您必只能寫(xiě)一個(gè) Update 語(yǔ)句,請(qǐng)不要編寫(xiě)任何 Select 語(yǔ)句。
例如: | id | name | sex | salary | |----|------|-----|--------| | 1 | A | m | 2500 | | 2 | B | f | 1500 | | 3 | C | m | 5500 | | 4 | D | f | 500 |運(yùn)行你所編寫(xiě)的更新語(yǔ)句之后,將會(huì)得到以下表: | id | name | sex | salary | |----|------|-----|--------| | 1 | A | f | 2500 | | 2 | B | m | 1500 | | 3 | C | f | 5500 | | 4 | D | m | 500 |來(lái)源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/swap-salary
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
解題:
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'))更多練習(xí):
- LintCode 1927. 硬幣翻面
總結(jié)
以上是生活随笔為你收集整理的MySQL 增加、更新、删除的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LeetCode 1480. 一维数组的
- 下一篇: linux cmake编译源码,linu