• 3.5 数据更新


     思维导图:

    3.5.1 插入数据

    **数据更新操作笔记**

    ---

    **概述:**
    数据更新操作在SQL中主要包括三种:插入、修改和删除。以下主要集中于插入数据的操作。

    ---

    **3.5.1 插入数据:**

    **1. 插入单一元组:**
    - 格式:

      INSERT INTO <表名> [(<属性列1>, <属性列2>, ...)] VALUES (<常量1>, <常量2>, ...);

    - 特点:
      - 如果没有指定属性列,则必须为表中的所有列提供值,并且与创建表时的列顺序相同。
      - 字符串值必须用英文单引号括起来。
      - 在表定义时标记为NOT NULL的属性列不能赋予NULL值。

    - 例子:

    1.   INSERT INTO Student (Sno, Sname, Ssex, Sdept, Sage) VALUES ('201215128', '陈冬', '男', 'IS', 18);
    2.   INSERT INTO Student VALUES ('201215126', '张成民', '男', 18, 'CS');
    3.   INSERT INTO SC(Sno, Cno) VALUES ('201215128', '1');

    **2. 插入子查询结果:**
    - 格式:
     

      INSERT INTO <表名> [(<属性列1>, <属性列2>, ...)] <子查询>;

    - 特点:
      - 子查询可以生成多个元组的结果,然后将这些结果一次性插入目标表中。
      - 子查询常常用于数据转移或数据转换。

    - 例子:

    1.   CREATE TABLE Dept_age (Sdept CHAR(15), Avg_age SMALLINT);
    2.   INSERT INTO Dept_age (Sdept, Avg_age) SELECT Sdept, AVG(Sage) FROM Student GROUP BY Sdept;

    ---

    **小结:**
    插入操作是SQL的基础功能之一,通常用于将新数据添加到数据库中。为确保数据的一致性和完整性,需要确保在插入数据时遵循表的结构和约束。插入子查询的结果为高级功能,它可以方便地将一个查询的输出转移到另一个表中。

    3.5.2 修改数据笔记

    ---

    **概述:**
    修改数据,也称为更新数据,是SQL中的一个基础操作。它用于修改表中满足特定条件的数据。

    ---

    **基本格式:**

    1. UPDATE <表名>
    2. SET <列名>=<表达式>[, <列名>=<表达式>...]
    3. [WHERE <条件>];

    - 特点:
      - `SET` 子句用于指定要修改的列及其新的值。
      - `WHERE` 子句用于指定要更新的行。如果省略,所有行都会被更新。

    ---

    **1. 修改单个元组的值:**
    - 用于更新满足特定条件的单个记录。
      
      **例子:**

      UPDATE Student SET Sage=22 WHERE Sno='201215121';

    **2. 修改多个元组的值:**
    - 可以同时更新多个记录。
      
      **例子:**

      UPDATE Student SET Sage=Sage+1;

    **3. 使用子查询的修改语句:**
    - 子查询可以用于构造更复杂的更新条件。
      
      **例子:**
     

    1.   UPDATE SC 
    2.   SET Grade=0 
    3.   WHERE Sno IN 
    4.   (SELECT Sno FROM Student WHERE Sdept='CS');

     

    ---

    **注意点:**

    - 更新操作要小心进行,因为一旦数据被修改,原始数据将无法恢复(除非有备份)。
    - 使用 `WHERE` 子句是很重要的,否则可能会误更改不应该更改的数据。
    - 与插入数据时一样,更新数据时也需要确保数据的一致性和完整性。

    ---

    **小结:**
    修改数据是一个强大的操作,但它也可能是危险的,因为错误的更新可能导致数据损失或不一致。始终建议在执行更新操作之前进行备份,并确保更新语句的准确性。

     总结:

    **SQL数据更新总结**

    ---

    **重点**:

    1. **基本命令理解**:
       - `INSERT`: 添加数据到表中。
       - `UPDATE`: 修改表中已存在的数据。
       - `DELETE`: 从表中删除数据。

    2. **条件指定**:
       - 使用 `WHERE` 子句精确地定位要更新或删除的数据。

    3. **子查询使用**:
       - 在数据更新操作中,子查询可以用于获取或匹配要更新或删除的数据。

    ---

    **难点**:

    1. **完整性约束**:
       - 数据更新可能会违反表的约束条件,例如主键、外键、唯一约束等。

    2. **复杂的子查询**:
       - 有时候,你需要编写嵌套的、复杂的子查询来定位或获取要更新的数据。

    3. **性能考虑**:
       - 大量的数据更新或删除可能会影响数据库性能,需要合理的索引和查询优化。

    4. **事务管理**:
       - 确保数据的原子性、一致性、隔离性和持久性(ACID属性)。

    ---

    **易错点**:

    1. **不指定WHERE子句**:
       - 如果在`UPDATE`或`DELETE`命令中忘记指定`WHERE`子句,可能导致修改或删除整个表的数据。

    2. **数据类型不匹配**:
       - 在`INSERT`或`UPDATE`时,如果数据类型与列类型不匹配,会导致错误。

    3. **违反参照完整性**:
       - 例如,删除一个在另一表中仍被引用的记录。

    4. **忘记提交或回滚事务**:
       - 如果在使用事务时忘记提交(COMMIT)或在出错时回滚(ROLLBACK),可能导致数据不一致或锁定问题。

    5. **不正确的子查询返回**:
       - 子查询应返回适当数量的列和行以匹配主查询的需求。返回多余的数据或不返回数据都可能导致错误。

    ---

    **使用技巧**:

    1. **备份**:在进行大规模的数据更新前,总是备份数据库。
    2. **测试**:在生产环境中进行更新前,先在测试环境中验证SQL语句。
    3. **使用事务**:确保在出现错误时能回滚到更新前的状态。
    4. **限制更新行数**:在更新大量数据时,考虑分批进行以避免性能问题。

    总之,数据更新是SQL中的核心功能,但也是高风险的操作。正确理解并谨慎使用相关命令是非常关键的。

  • 相关阅读:
    在 FPGA 上快速构建 PID 算法
    7-MySQL基础综合练习
    迅为itop-3568开发板qt学习手册上新
    PDE 中的先验估计是什么意思?
    目标检测算法——3D公共数据集汇总 2(附下载链接)
    云安全—云计算基础
    mybatis-plus控制台打印sql(mybatis-Log)
    【纠错】遗传算法求解VRP计算车辆容量限制的代码有bug
    抖音短视频评论区怎么展现店铺?珠珠来告诉你!
    vlan,每个接口都配了对应的trunk或hybrid并且放行,但还是ping不通,三个都互相不通
  • 原文地址:https://blog.csdn.net/tang7mj/article/details/133789883