• SQL实验 数据的插入、修改和删除操作


    一、实验目的

    1.掌握Management Studio的使用。

    2.掌握SQL中INSERT、UPDATE、DELETE命令的使用。

    二、实验内容及要求

    SQL语句完成下列功能。使用数据库为SCHOOL数据库。

    1、新开设一门课程,名叫网络安全与防火墙,学时40,编号为“0118”,主要介绍网络的安全与主要的防火墙软件。    

    1. --新开设一门课程,名叫网络安全与防火墙,学时40,编号为“0118”,主要介绍网络的安全与主要的防火墙软件。
    2. INSERT 
    3. INTO Course(Course_id,Course_name,Course_hour,Introduce)
    4. VALUES('0118','网络安全与防火墙',40,'介绍网络的安全与主要的防火墙软件')

    2、更新所有职称为“助教”的教师职称为“助理教师”。

    1. --更新所有职称为“助教”的教师职称为“助理教师”。
    2. UPDATE Teacher
    3. SET TechPost='助理教师'
    4. WHERE TechPost='助教'

    3、学号为“130101005”的学生的“数据结构”课程成绩改为80分。

    1. UPDATE StudentGrade
    2. SET Grade=80
    3. WHERE Stu_id=130101005
    4. AND Course_id IN 
    5. (SELECT Course_id
    6. From Course
    7. WHERE Course_name='数据结构')

    4、删除“利旭勉”的选课记录。

    1. --删除“利旭勉”的选课记录
    2. DELETE
    3. FROM StudentGrade
    4. WHERE Stu_id IN
    5. (SELECT Stu_id
    6. FROM Student
    7. WHERE Stu_name='利旭勉')

    5、先建立monitor表,其结构与student表大致一样.包含student表的学号、姓名、性别和班级编号,然后把各班班长的个人信息插入到monitor表中。

    1. --先建立monitor表,其结构与student表大致一样.包含student表的学号、姓名、性别和班级编号,然后把各班班长的个人信息插入到monitor表中。
    2. --建立monitor表
    3. CREATE TABLE Monitor(
    4. Stu_id varchar(10NOT NULL,
    5. Stu_name varchar(8NOT NULL,
    6. Stu_sex varchar(2DEFAULT '男'  NOT NULL,
    7. Age  AS (datepart(year,getdate())-datepart(year,Birthday)),  --计算列
    8. Birthday smalldatetime NOT NULL,
    9. Phone varchar(8NULL,
    10. Address varchar(100NULL,
    11. Class_id varchar(4NULL,
    12.  CONSTRAINT PK_Monitor PRIMARY KEY CLUSTERED (Stu_id ASC--主键,聚集索引(clustered)
    13.  ) 
    14.  --筛选班长
    15.  INSERT
    16.  INTO Monitor(Stu_id,Stu_name,Stu_sex,Birthday,Phone,Address,Class_id)
    17.  SELECT Stu_id,Stu_name,Stu_sex,Birthday,Phone,Address,Student.Class_id
    18.  FROM Student JOIN Class ON Student.Stu_id=Class.Monitor
    19.  WHERE Class.Monitor IS NOT NULl

    6、删除studentgrade表中学号以“2017”开头的学生选修课程的记录。

    1.  --删除studentgrade表中学号以“2017”开头的学生选修课程的记录。
    2.  --材料未提供学号以“2017”开头的学号,因此将其换为“14050”
    3.  DELETE
    4.  FROM StudentGrade
    5.  WHERE Stu_id LIKE '14050%'

    7、删除课程名为“C语言”的课程信息和所有这门课的选课信息。(不用级联删除,因级联需在创建表时定义。考虑各个表删除的先后顺序)

    1.  --删除课程名为“C语言”的课程信息和所有这门课的选课信息。(不用级联删除,因级联需在创建表时定义。考虑各个表删除的先后顺序)
    2.  --材料未提供“C语言”,因此将其换位“数据结构”
    3.  -- 删除与 Course 表相关的成绩记录
    4.  --未能删除Course表对应数据与 REFERENCE 约束"FK_CourseTeacher_Course"冲突
    5.  --解决方法:先删除CourseTeacher表中对应数据,再删除Course表中对应的数据(tip:不能合并表,因为合并表后要考虑删除的先后顺序)
    6. DELETE 
    7. FROM StudentGrade
    8. WHERE Course_id IN (
    9.     SELECT Course_id
    10.     FROM Course
    11.     WHERE Course_name = '数据结构'
    12. )
    13. -- 删除 CourseTeacher 表中的对应记录
    14. DELETE 
    15. FROM CourseTeacher
    16. WHERE Course_id IN (
    17. SELECT Course_id
    18. FROM Course
    19. WHERE Course_name = '数据结构'
    20. )
    21. ---- 删除 Course 表中的对应记录
    22. DELETE 
    23. FROM Course
    24. WHERE  Course_name = '数据结构'

    8、把数据库中学生表学号为“130101005”的学生的学号改为“130101006”,请关注是否能修改成功。为什么?

    1. --把数据库中学生表学号为“130101005”的学生的学号改为“130101006”,请关注是否能修改成功。为什么?
    2. UPDATE Student
    3. SET Stu_id='130101006'
    4. WHERE Stu_id='130101005'
    5. 不能修改成功,不能在对象“dbo.Student”中插入重复键。重复键值,因为违反了 PRIMARY KEY 约束

  • 相关阅读:
    Android应用内组件通讯之EventBus源码分析之post流程(三)
    高级架构师_Docker_第1章_ 第2节_Docker镜像
    记一次 MySQL 主从同步异常的排查记录,百转千回
    安全两方推理问题
    基于JAVA微博网站计算机毕业设计源码+系统+mysql数据库+lw文档+部署
    性能测试-度量指标及选择(6)
    第十四届模拟赛第二期试题【Java解析】
    java特殊文件 属性文件properties和XML文件
    Android12.0 app调用hal层接口功能实现系列三(frameworks层实现)
    《Effective C++》知识点(4)--设计与声明
  • 原文地址:https://blog.csdn.net/Jiangxia13/article/details/139391820