当前位置: 首页 > news >正文

SQL 入门 6:SQL 数据操作:更新与删除

以下为 SQL 中数据更新与删除的用法解析。

学习内容

  1. 更新数据(UPDATE)
  • UPDATE 修改指定表的列值,SET 定义更新内容,WHERE 指定条件。
  • 可设为具体值、DEFAULT、运算结果或 NULL(若列允许)。
  • 单行更新通常用主键(如 invoice_id),多行更新用其他条件。
  • 更新多行
    • WHERE 支持多条件,如 IN 指定多值。
    • 影响范围取决于条件匹配的行数。
  • 子查询在 UPDATE 中使用
    • WHERE 中嵌入子查询,子查询结果作为条件。
    • 单值结果用 =,多值结果用 IN。
  • 删除行(DELETE)
    • DELETE FROM 删除指定表行,WHERE 定义条件。
    • 可结合子查询定位目标行。

    示例代码与讲解

    1. 更新单行

    UPDATE invoices
    SET payment_total = 10, payment_date = '2019-03-07'
    WHERE invoice_id = 1;

    • 更新 invoices 中 invoice_id = 1 的行,设置付款金额为 10,付款日期为 2019-03-07。

    UPDATE invoices
    SET payment_total = DEFAULT, payment_date = NULL
    WHERE invoice_id = 1;

    • 将同一行恢复默认值和 NULL,需列支持。

    UPDATE invoices
    SET payment_total = invoice_total * 0.5, payment_date = due_date
    WHERE invoice_id = 1;

    • 设置付款金额为发票总额的 50%,付款日期为截止日期(due_date)。

    2. 更新多行

    UPDATE invoices
    SET payment_total = invoice_total * 0.5, payment_date = due_date
    WHERE client_id = 3;

    • 更新 client_id = 3 的所有行(非主键,可能多行)。

    UPDATE invoices
    SET payment_total = invoice_total * 0.5, payment_date = due_date
    WHERE client_id IN (3, 4);

    • 更新 client_id 为 3 或 4 的所有行。

    3. 子查询更新

    UPDATE invoices
    SET payment_total = invoice_total * 0.5, payment_date = due_date
    WHERE client_id IN (
    SELECT client_id
    FROM clients
    WHERE name = 'Myworks'
    );

    • 更新 clients 表中 name = 'Myworks' 对应客户的所有发票。
    • 子查询返回多值,用 IN。

    4. 删除行

    DELETE FROM invoices
    WHERE client_id = (
    SELECT client_id
    FROM clients
    WHERE name = 'Myworks'
    );

    • 删除 clients 表中 name = 'Myworks' 对应客户的所有发票。
    • 子查询返回单值,用 =。

    作业

    1. 更新积分

    USE sql_store;
    UPDATE customers
    SET points = points + 50
    WHERE birth_date >= '1990-01-01';

    • 为 1990 年后出生的客户增加 50 积分。

    2. 子查询更新

    UPDATE orders
    SET comments = 'Gold customer'
    WHERE customer_id IN (
    SELECT customer_id
    FROM customers
    WHERE points >= 3000
    );

    • 为积分 ≥ 3000 的客户订单添加“Gold customer”备注。

    总结

    本次解析了数据更新(单行、多行、子查询)和行删除。基于 sql_invoicing 和 sql_store 数据库。后续将探讨聚合函数与分组查询。

http://www.cnnetsun.cn/news/1387337.html

相关文章:

  • Qwen3.5-9B惊艳案例:同一模型完成商品图识别、文案生成与卖点推理全流程
  • 《自指宇宙学中“认知不动点”的存在性证明:从数学公理到AGI自主意识阈值》(沙地实验)
  • Qwen3-14B优化升级:显存不够?量化方案让12G显卡也能流畅运行
  • 手把手教你配置SAP PP供应区域(Supply Area):实现线边仓精准发料与物料流优化
  • DP协议核心组件解析:SST协议中的符号与填充机制
  • 毕设程序java高校社团活动管理系统 基于SpringBoot的高校学生社团数字化运营平台 Java Web驱动的大学校园社团事务协同管理系统
  • Wan2.1-umt5模型精调实战:使用自定义数据提升特定领域表现
  • Starry Night Art Gallery实战案例:教育机构生成古典艺术教学配图
  • SEO_快速了解搜索引擎SEO的工作原理与规则
  • 2个核心功能解决文献管理3大痛点:Zotero Style插件全方位使用指南
  • 保姆级教程:用Python脚本自动同步通达信财务数据到本地(附多线程下载优化)
  • 信创环境下的Vue3项目避坑指南:从polyfill配置到打包优化
  • Nanbeige 4.1-3B惊艳作品:生成《勇者斗恶龙》风格地图描述+角色设定
  • -算法口诀-
  • Trae上手初体验:字节跳动这款AI IDE,真的能让我少写一半代码吗?
  • ofa_image-caption算力适配:单卡GPU下batch_size=1稳定推理调优指南
  • 基于单片机的智慧窗户技术
  • Smartbi热力图的5个隐藏玩法:从房价分布到商圈客流,数据洞察还能这么玩
  • 【2026年最新600套毕设项目分享】基于SpringBoot的校园信息共享系统(14200)
  • 基于MATLAB Simulink R2015b平台的三相感应电机动态仿真模型与数学建模仿真研究
  • 图像篡改数据集下载:COVERAGE、CASIA
  • 【I3C路书-2】动态地址分配波形
  • 万恶的苹果税,降了
  • SCMA稀疏码多址技术:从原理到5G应用实践
  • Kali+Windows双系统实战:手把手教你用CobaltStrike生成免杀后门(附Python简易HTTP服务搭建)
  • 基于yz-bijini-cosplay的智能合约开发:Solidity编程指南
  • c语言知识总结(3.控制结构)
  • C++ 实战:STL List 容器自定义排序深度解析
  • 从ViLT看多模态大模型进化:为什么说Transformer正在吃掉视觉领域?
  • AS32-TTL-100 LoRa模块嵌入式透传集成指南