思维导图:
3.5.1 插入数据
**数据更新操作笔记**
---
**概述:**
数据更新操作在SQL中主要包括三种:插入、修改和删除。以下主要集中于插入数据的操作。
---
**3.5.1 插入数据:**
**1. 插入单一元组:**
- 格式:
INSERT INTO <表名> [(<属性列1>, <属性列2>, ...)] VALUES (<常量1>, <常量2>, ...);
- 特点:
- 如果没有指定属性列,则必须为表中的所有列提供值,并且与创建表时的列顺序相同。
- 字符串值必须用英文单引号括起来。
- 在表定义时标记为NOT NULL的属性列不能赋予NULL值。
- 例子:
INSERT INTO Student (Sno, Sname, Ssex, Sdept, Sage) VALUES ('201215128', '陈冬', '男', 'IS', 18);
INSERT INTO Student VALUES ('201215126', '张成民', '男', 18, 'CS');
INSERT INTO SC(Sno, Cno) VALUES ('201215128', '1');
**2. 插入子查询结果:**
- 格式:
INSERT INTO <表名> [(<属性列1>, <属性列2>, ...)] <子查询>;
- 特点:
- 子查询可以生成多个元组的结果,然后将这些结果一次性插入目标表中。
- 子查询常常用于数据转移或数据转换。
- 例子:
CREATE TABLE Dept_age (Sdept CHAR(15), Avg_age SMALLINT);
INSERT INTO Dept_age (Sdept, Avg_age) SELECT Sdept, AVG(Sage) FROM Student GROUP BY Sdept;
---
**小结:**
插入操作是SQL的基础功能之一,通常用于将新数据添加到数据库中。为确保数据的一致性和完整性,需要确保在插入数据时遵循表的结构和约束。插入子查询的结果为高级功能,它可以方便地将一个查询的输出转移到另一个表中。
**3.5.2 修改数据笔记**
---
**概述:**
修改数据,也称为更新数据,是SQL中的一个基础操作。它用于修改表中满足特定条件的数据。
---
**基本格式:**
UPDATE <表名>
SET <列名>=<表达式>[, <列名>=<表达式>...]
[WHERE <条件>];
- 特点:
- `SET` 子句用于指定要修改的列及其新的值。
- `WHERE` 子句用于指定要更新的行。如果省略,所有行都会被更新。
---
**1. 修改单个元组的值:**
- 用于更新满足特定条件的单个记录。
**例子:**
UPDATE Student SET Sage=22 WHERE Sno='201215121';
**2. 修改多个元组的值:**
- 可以同时更新多个记录。
**例子:**
UPDATE Student SET Sage=Sage+1;
**3. 使用子查询的修改语句:**
- 子查询可以用于构造更复杂的更新条件。
**例子:**
UPDATE SC
SET Grade=0
WHERE Sno IN
(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中的核心功能,但也是高风险的操作。正确理解并谨慎使用相关命令是非常关键的。