自学内容网 自学内容网

MySQL(B站CodeWithMosh)——2024.10.5(8)

ZZZZZZ目的
ZZZZZZ代码
ZZZZZZ重点
ZZZZZZ操作(非代码,需要自己手动)

6- 更新单行 | Updating a Single Row_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=36&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1. 将sql_invoicing中的invoices更新:在2019年3月1日,给invoiceid为1的顾客付了10美元
    UPDATE invoices
    SET payment_total = 10, payment_date = '2019-03-01'
    WHERE invoice_id = 1

    UPDATE语句可以更新表中的一条或者多条记录,SET子句用来指定一列或者多列的新值
  2. 假如说刚才我们弄错了,要对刚才更新的数据进行修改
    USE sql_invoicing;
    UPDATE invoices
    SET payment_total = DEFAULT, payment_date = NULL
    WHERE invoice_id = 1

    第三行的DEFAULT也可以用0
  3. 更新数据:对于invoiceid为3的顾客,我们在截止日期付了50%的数额
    UPDATE invoices
    SET payment_date = due_date, payment_total = invoice_total * 0.5
    WHERE invoice_id = 3

7- 更新多行 | Updating Multiple Rows_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=37&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1. 如果要批量更新数据,MySQL工作台可能会出现错误,因为在默认情况下,MySQL工作台会在安全模式下运行,只能更新一条数据,所以需要修改设置。点击MtSQL Workbench上方的Edit,Preference,SQL_Editor,下滑,不要勾选Safe Update(rejects UPDATEs and DELETEs with no strictions),然后点击ok,设置完成后,关闭窗口,重新从MySQL Connection中进入
  2. 将所有顾客id为3的数据更新:在截止日期付了50%的数额
    UPDATE invoices
    SET payment_date = due_date, payment_total = invoice_total * 0.5
    WHERE client_id = 3

    将所有顾客id为3和4的数据更新:在截止日期付了50%的数额
    UPDATE invoices
    SET payment_date = due_date, payment_total = invoice_total * 0.5
    WHERE client_id = (3, 4)

【练习题】
将所有在1990年之前出生顾客积分增加50
UPDATE customers
SET points = points + 50
WHERE birth_date < '1990-01-01'

8- 在Updates中用子查询 | Using Subqueries in Updates_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=38&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1. 更新sql_invoicing中所有叫Mywork的顾客的发票数据:在截止日期付了50%的数额
    UPDATE invoices
    SET payment_date = due_date, payment_total = invoice_total * 0.5
    WHERE client_id = (SELECT client_id FROM clients WHERE name = 'Myworks')

    invoice是发票的意思
    UPDATE可以用子语句进行查找,这样就可以更新Mywork的所有发票了
  2. 更新所有位于纽约和加州(CA)的顾客发票
    UPDATE invoices
    SET payment_date = due_date, payment_total = invoice_total * 0.5
    WHERE client_id IN (SELECT client_id FROM clients WHERE state IN ('NY', 'CA'))

    先执行SELECT子句,可以看到结果有两条顾客的信息,所以要将WHERE后面的=换成IN
    在执行UPDATE之前,最好先把子句也就是SELECT执行,就算是没有子句,最好也要把选择需要更新的数据的代码提前检查以下,看看是否输出正确

【练习题】
更新sql_store中orders表:将所有积分大于3000且下过单的顾客更新订单注释为金牌顾客
UPDATE orders
SET comments = 'Gold customer'
WHERE customer_id IN (SELECT customer_id FROM customers WHERE points > 3000)


原文地址:https://blog.csdn.net/unicorn_lemon/article/details/142719794

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!