一、前言
本文主要是罗列了一些有关于数据更新操作的难题、易错题
二、所要使用表
StuInfo
SID | SName | Sex | Birthday | Dept | Major | Class | Grade |
05000002 | 孙雯 | 女 | 1983-08-05 00:00:00 | 计算机系 | 计算机科学 | 计科1班 | 05级 |
05000004 | 苏小明 | 男 | 1984-12-21 00:00:00 | 计算机系 | 计算机科学 | 计科1班 | 05级 |
05000005 | 周小杰 | 男 | 1985-06-01 00:00:00 | 计算机系 | 计算机科学 | 计科1班 | 05级 |
05000006 | 李建国 | 男 | 1985-05-01 00:00:00 | 管理系 | 计算机科学 | 计科1班 | 05级 |
05010002 | 徐贺菁 | 女 | 1985-03-15 00:00:00 | 管理科学与工程系 | 信息管理 | 信管2班 | 05级 |
6010001 | 陈平 | 男 | 1986-05-10 00:00:00 | 管理科学与工程系 | 信息管理 | 信管1班 | 06级 |
07011103 | 林敏 | 女 | 1985-05-04 00:00:00 | 管理科学与工程系 | 多媒体 | NULL | NULL |
04000002 | 李华 | 男 | 1985-03-05 00:00:00 | 管理科学与工程系 | 信息管理 | 信管1班 | 05级 |
05000001 | 李丽 | 女 | 1985-07-24 00:00:00 | 计算机系 | 计算机科学与技术 | 计科1班 | 05级 |
TchInfo
TID | TName | Sex | Birthday | Title | Dep |
00000001 | 黄贺贺 | 男 | 1977-01-15 00:00:00 | 讲师 | 基础部 |
01000001 | 王晓红 | 女 | 1958-01-01 00:00:00 | 副教授 | 计算机系 |
01000002 | 李小波 | 男 | 1959-08-11 00:00:00 | 教授 | 计算机系 |
01000003 | 谈华 | 男 | 1962-05-01 00:00:00 | 教授 | 计算机系 |
01000004 | 黄利敏 | 女 | 1976-03-21 00:00:00 | 讲师 | 计算机系 |
01000005 | 曹珊珊 | 女 | 1982-12-12 00:00:00 | 助讲 | 计算机系 |
01000909 | 王小小 | 女 | 1999-01-04 00:00:00 | 副教授 | 计算机系 |
01000991 | 王红 | 女 | 1956-01-01 00:00:00 | 教授 | 基础部 |
01000999 | 王多多 | 女 | 1979-01-04 00:00:00 | 副教授 | 基础部 |
02000002 | 李丽丽 | 女 | 1972-11-12 00:00:00 | 副教授 | 管理科学与工程系 |
三、表数据的插入
1.题目
通过SQL命令完成在in_test表中插入StuInfo表中全部女生的学号、姓名、系
2.思路
- 从
StuInfo
表中筛选 - 筛选条件:
Sex = '女'
- 所需属性:学号、姓名、系
- 插入命令:
INSERET INTO 表名(属性)
3.完整语句
INSERT INTO in_test(SID,SNAME,Dept) SELECT SID,SNAME,Dept FROM StuInfo WHERE Sex = '女'
4.测试语句
右键点击in_test表,选择“编辑前200行”,查看目前表内数据
四、数据的导出
选择数据库TeachingData,将表TchInfo、StuInfo导出到SQL脚本文件中;注意:表中数据一起导出
- 右键选择数据库TeachingData后选择任务中的生成脚本
- 在选择对象中选选择特定数据库对象后选择我们需要的表TchInfo、StuInfo
- 后续就是默认选择,如果需要可以更改一下保存的地址
五、数据的导入
编辑生成的脚本文件Script.sql并执行,使数据库School1利用脚本文件生成表TchInfo和StuInfo
- 点击左上角文件,选择打开中的文件,打开我们刚刚保存的sql文件
- 修改一下USE后数据库的名称,再执行
- 刷新一下数据库,查看是否创建成功
- 创建成功后,要将teachingData中数据复制到School1的数据库中,右键选择teachingData后选择任务,导出数据
- 数据源选择teachingData
- 目标数据库选择题目中的School1
- 选择复制所有数据
- 选择表TchInfo、StuInfo
- 选择立即运行
- 刷新一下数据库,对比两个数据库中表格数据是否相同
六、表数据的修改
1.题目
利用SQL语句在teachingData数据库的StuInfo表中,将ScoreInfo表中分数最高的学生其所在班级修改为“计科2班”
2.思路
- 更新数据:
UPDATE StuInfo SET Class = '计科2班' WHERE ···
- 筛选条件:StuInfo.SID = 分数最高的学生SID
- 学生SID要从StuInfo表中获取
- SID的条件:从ScoreInfo表中查找分数最高的学生的SID
3.完整语句
UPDATE StuInfo SET Class = '计科2班' WHERE StuInfo.SID = ANY (SELECT StuInfo.SID FROM StuInfo GROUP BY StuInfo.SID HAVING SID = ANY (SELECT SID FROM ScoreInfo GROUP BY SID,Score HAVING SCore = (SELECT MAX(Score) FROM ScoreInfo)))
4.测试代码
七、表数据的删除
1.题目
删除School数据库下Sinfo表中学号为21001001的学生
2.易错点
选中要删除的那行数据,delete键删除后出现报错,如下图所示
3.错误原因
学号为21001001的学生在别的表中也有数据,如ScoreInfo表中也含有学号为21001001的学生
4.解决方法
解决方法:先删除ScoreInfo表中学号为21001001的学生即可
5.测试
八、结语
如果有任何疑问或者文中问题可以留言评论