• 数据库实验三——数据更新操作中经典题、难题以及易错题合集(含数据导入导出操作详细教程)


    📘本专栏文章主要是争对博主在学习《数据库原理及应用》课程时老师布置的课后练习题做出的解答,如果遇到相同的题目建议看着本文自己动手实践一遍,这样才能加深印象。
    🎈如果想要了解数据库有关知识点的话,可以点击下方链接进行查看
    🔑 本专栏地址【数据库练习题
    🔑有关数据库的知识点请戳⏩【数据库知识点总结
    🔑 另一个正在更新的专栏【拼图小游戏(Java)

    一、前言

    本文主要是罗列了一些有关于数据更新操作的难题、易错题

    二、所要使用表

    StuInfo

    SIDSNameSexBirthdayDeptMajorClassGrade
    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级
    06010001陈平1986-05-10 00:00:00管理科学与工程系信息管理信管1班06级
    07011103林敏1985-05-04 00:00:00管理科学与工程系多媒体NULLNULL
    04000002李华1985-03-05 00:00:00管理科学与工程系信息管理信管1班05级
    05000001李丽1985-07-24 00:00:00计算机系计算机科学与技术计科1班05级

    TchInfo

    TIDTNameSexBirthdayTitleDep
    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 = '女'
    
    • 1

    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)))
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    4.测试代码

    在这里插入图片描述
    在这里插入图片描述

    七、表数据的删除

    1.题目

    删除School数据库下Sinfo表中学号为21001001的学生

    2.易错点

    选中要删除的那行数据,delete键删除后出现报错,如下图所示
    在这里插入图片描述

    3.错误原因

    学号为21001001的学生在别的表中也有数据,如ScoreInfo表中也含有学号为21001001的学生

    4.解决方法

    解决方法:先删除ScoreInfo表中学号为21001001的学生即可

    5.测试

    在这里插入图片描述
    在这里插入图片描述

    八、结语

    如果有任何疑问或者文中问题可以留言评论

  • 相关阅读:
    OpenHarmony网络协议通信—libevent [GN编译] - 事件通知库
    【CBAM 解读】混合注意力机制:Convolutional Block Attention Module
    【LeetCode-简单题】69. x 的平方根
    ECCV2022 论文 Contrastive Deep Supervision
    【源码】Spring IOC源码
    SQL语句学习+牛客基础39SQL
    源代码加密技术的区别
    如何应用运营商大数据精准营销?
    EPICS记录参考--sub-Array记录(subArray)
    Recluster Table | RFC 解读
  • 原文地址:https://blog.csdn.net/Alita233_/article/details/127604635