首页 / 数据库原理与应用 / SQL数据操作语言DML

第7章 SQL数据操作语言DML

7.1 INSERT - 插入数据

-- 插入单行 INSERT INTO student(sno, sname, ssex, sage, sdept) VALUES('2023001', '李四', '男', 20, '计算机系'); -- 插入多行 INSERT INTO student VALUES ('2023002', '王五', '女', 19, '商学院'), ('2023003', '赵六', '男', 21, '电子系'); -- 从其他表插入 INSERT INTO student_backup SELECT * FROM student;

7.2 UPDATE - 修改数据

-- 修改单条记录 UPDATE student SET sage = 21 WHERE sno = '2023001'; -- 批量修改 UPDATE student SET sdept = '商学院' WHERE sdept = '经管系'; -- 修改多个字段 UPDATE student SET sage = 22, sdept = '信息系' WHERE sno = '2023001';

7.3 DELETE - 删除数据

-- 删除指定记录(必须有WHERE!) DELETE FROM student WHERE sno = '2023001'; -- 删除满足条件的记录 DELETE FROM student WHERE sage < 18; -- 清空表(保留结构,效率更高且不可回滚) TRUNCATE TABLE student;

7.4 DELETE vs TRUNCATE

  • DELETE:DML语句,逐行删除,可以回滚,触发器生效,速度较慢
  • TRUNCATE:DDL语句,整表清空,不可回滚,不触发触发器,速度更快

7.5 重要提醒

UPDATE和DELETE必须带WHERE条件,否则会影响全表数据!操作前建议先备份。

-- 危险!会修改全表所有记录 UPDATE student SET sage = 20; -- 安全!只修改指定记录 UPDATE student SET sage = 20 WHERE sno = '2023001';

自学自检小问题

  1. DELETE和TRUNCATE有什么区别?
  2. UPDATE语句如果不写WHERE会发生什么?
  3. 如何安全地批量更新数据?
第7章 基础巩固练习
0/5
第1题 选择题
SQL中用于插入数据的命令是( )
ADD
INSERT
CREATE
UPDATE
答案解析
正确答案:B(INSERT)。INSERT用于向表中插入新数据。
第2题 选择题
DELETE语句不带WHERE条件时,会( )
报错
['删除表中所有记录,保留表结构']
删除表结构
不做任何操作
答案解析
正确答案:B。DELETE不带WHERE会删除全表数据,但表结构保留。TRUNCATE效果类似但更快。
第3题 选择题
DELETE和TRUNCATE的区别是( )
没有区别
['DELETE可回滚,TRUNCATE不可回滚']
TRUNCATE可回滚,DELETE不可
DELETE更慢但不可回滚
答案解析
正确答案:B。DELETE是DML可回滚,TRUNCATE是DDL不可回滚且速度更快。
第4题 选择题
UPDATE语句必须包含的关键字是( )
FROM
WHERE
SET
VALUES
答案解析
正确答案:C(SET)。UPDATE语法:UPDATE 表名 SET 字段=值 WHERE 条件。SET是必须的,WHERE建议但非必须。
第5题 选择题
批量插入多条记录的语法是( )
多次INSERT
['INSERT INTO ... VALUES (...), (...), (...)']
INSERT ALL
BATCH INSERT
答案解析
正确答案:B。MySQL支持在VALUES中用逗号分隔多条记录实现批量插入。
0/0