第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';
自学自检小问题
- DELETE和TRUNCATE有什么区别?
- UPDATE语句如果不写WHERE会发生什么?
- 如何安全地批量更新数据?
拓展学习资源
第7章 基础巩固练习
0/5
第1题
选择题
SQL中用于插入数据的命令是( )
答案解析
正确答案:B(INSERT)。INSERT用于向表中插入新数据。
第2题
选择题
DELETE语句不带WHERE条件时,会( )
答案解析
正确答案:B。DELETE不带WHERE会删除全表数据,但表结构保留。TRUNCATE效果类似但更快。
第3题
选择题
DELETE和TRUNCATE的区别是( )
答案解析
正确答案:B。DELETE是DML可回滚,TRUNCATE是DDL不可回滚且速度更快。
第4题
选择题
UPDATE语句必须包含的关键字是( )
答案解析
正确答案:C(SET)。UPDATE语法:UPDATE 表名 SET 字段=值 WHERE 条件。SET是必须的,WHERE建议但非必须。
第5题
选择题
批量插入多条记录的语法是( )
答案解析
正确答案:B。MySQL支持在VALUES中用逗号分隔多条记录实现批量插入。
0/0