✏️ 课堂习题

第 4 章 · 数据表记录的更新操作 · 共 8 题 · 由易到难

答案默认折叠,点击题目或右侧开关控制显示
展开所有答案
1
INSERT 语句中,指定字段插入和全字段插入在写法上有什么区别?
▼
参考答案

指定字段插入要写 INSERT INTO 表 (字段列表) VALUES (值列表),字段和值一一对应;全字段插入可省略字段名,写成 INSERT INTO 表 VALUES (...),但值的顺序、数量必须和表结构完全一致。

2
执行 UPDATE student SET class='01';(没有 WHERE)会发生什么?
▼
参考答案

会把 student 表中所有学生的班级都改成 01,无论原来是什么。这是极易酿成事故的写法,必须先定位再修改。

3
想只把"姓名字段"清空(设为空),该用 UPDATE 还是 DELETE?
▼
参考答案

用 UPDATE。DELETE 只能删整行记录,不能只清某列;应写 UPDATE student SET Sname = NULL WHERE ...(前提是该字段允许 NULL)。

4
判断题:DELETE FROM sc; 执行后,sc 表本身也被删除了。(对 / 错)
▼
参考答案

❌ 错。不带 WHERE 的 DELETE 只删除表里的所有数据行,表结构还在。要连表一起删要用 DROP TABLE。

5
DELETE 和 TRUNCATE 都能清空表,至少说出两点不同。
▼
参考答案

① 条件:DELETE 可加 WHERE 删部分,TRUNCATE 只能全清空;② 自增:DELETE 不重置自增列,TRUNCATE 重置回初始值;③ 速度/回滚:TRUNCATE 更快、多数不可回滚。

6
sc 表里已有学号 001 的成绩,现在想直接 DELETE FROM student WHERE Sno='001';,会发生什么?为什么?
▼
参考答案

如果建表时 sc.Sno 设了外键引用 student.Sno,这条删除会报错失败——因为 001 在 sc 里还有成绩记录,直接删会破坏引用完整性。正确做法:先 DELETE FROM sc WHERE Sno='001',再删 student。

7
批量插入 3 行学生,语法应该怎么写?写出骨架即可。
▼
参考答案

INSERT INTO student (Sno, Sname) VALUES ('a','x'), ('b','y'), ('c','z');——多个值列表用逗号分隔放在一对括号外。

8
字符串和日期类型的值在 SQL 中为什么要加引号?用单引号还是双引号?
▼
参考答案

字符串、日期是字面量,必须加单引号包围,否则 MySQL 会当成列名或关键字而报错。双引号在部分配置下也可,但统一用单引号最稳妥。

🖥️ 上机练习

第 4 章 · 数据表记录的更新操作 · 共 5 个实训任务 · DML 实操 · 独立完成

🎯 本次上机目标:在"教学实例"库中对 student、sc 表完成插入、修改、删除全套操作,重点体会"WHERE 缺失"的危险与外键约束的影响。
任务 1
插入新生
向 student 表插入 2 名自己编学号的新生(如 031、032),只填 Sno/Sname/Ssex/class。
任务 2
批量插入成绩
向 sc 表用一条语句批量插入这两名新生 01、02、03 三门课的成绩。
任务 3
修改数据
把 031 同学的班级改为 02;再把 031 的 02 课成绩改为 100。注意 WHERE 条件怎么写。
任务 4
删除与约束
尝试直接删除 032 同学,观察是否因外键报错;然后先删 sc 中 032 的成绩,再删 student 中的 032,体会顺序。
任务 5
TRUNCATE 体验
新建一张测试表,插入几行后用 TRUNCATE 清空,验证自增列是否重置(再插一行看 id)。
←
返回 课堂例题
下一章 数据查询
→