模块 8 · 第 2 课(共 4)课程中的30/57~10 min
模块课程(2/4)
更新和删除:UPDATE 和 DELETE
UPDATE 修改现有行; DELETE 删除它们。两者共享
相同的基本黄金规则:WHERE 子句决定哪些行
触摸。忘记它意味着修改/删除整个表。
更新
SQL
UPDATE tabella
SET colonna1 = nuovo_valore,
colonna2 = altra_espressione
WHERE condizione;示例:
SQL
-- Aumenta del 10% i prezzi di tutti i prodotti della categoria 5 (Computer):
UPDATE products
SET price = price * 1.10
WHERE category_id = 5;
-- Aggiorna due colonne contemporaneamente:
UPDATE orders
SET status = 'shipped',
shipped_at = NOW()
WHERE id = 12;SET col = espressione:表达式可以引用行的当前
值 (price * 1.10),也可以使用 NOW()、NULL 或
子查询。
删除
SQL
DELETE FROM tabella
WHERE condizione;示例:
SQL
-- Cancella tutte le recensioni con rating < 3:
DELETE FROM reviews
WHERE rating < 3;
-- Cancella un ordine specifico:
DELETE FROM orders WHERE id = 999;也回到这里
像 INSERT 一样,UPDATE 和 DELETE 也接受 RETURNING 所以你知道
他们的行动:
SQL
DELETE FROM reviews
WHERE rating < 3
RETURNING id, customer_id, rating;对于一次性记录删除/修改的内容很有用。
外键和删除
尝试删除另一个表通过外键引用的行 产生错误:
SQL
DELETE FROM customers WHERE id = 1;
-- ERROR: update or delete on table "customers" violates foreign key constraint
-- on table "orders"解决方案:先删除子行,或者定义FK
ON DELETE CASCADE 当您创建表时(我们将在
下一节 DDL 课程)。
轮到你了
锻炼#sql.m8.l2.e1
尝试:0加载中...
第 5 类(计算机)中每种产品的价格上涨 10%。单个 UPDATE 语句。
正在加载编辑器...
显示提示
SET 右侧的表达式可以引用该列本身:价格 * 1.10。
3 次尝试后可用的解决方案
复习练习
锻炼#sql.m8.l2.e2
尝试:0加载中...
删除所有评分低于 3 的评论(非常负面的评论)。
正在加载编辑器...
显示提示
评级 < 3 的地方。
3 次尝试后可用的解决方案