1.掌握Management Studio的使用。
2.掌握SQL中INSERT、UPDATE、DELETE命令的使用。
用SQL语句完成下列功能。使用数据库为SCHOOL数据库。
1、新开设一门课程,名叫网络安全与防火墙,学时40,编号为“0118”,主要介绍网络的安全与主要的防火墙软件。
- --新开设一门课程,名叫网络安全与防火墙,学时40,编号为“0118”,主要介绍网络的安全与主要的防火墙软件。
-
- INSERT
-
- INTO Course(Course_id,Course_name,Course_hour,Introduce)
-
- VALUES('0118','网络安全与防火墙',40,'介绍网络的安全与主要的防火墙软件')
2、更新所有职称为“助教”的教师职称为“助理教师”。
- --更新所有职称为“助教”的教师职称为“助理教师”。
-
- UPDATE Teacher
-
- SET TechPost='助理教师'
-
- WHERE TechPost='助教'
3、学号为“130101005”的学生的“数据结构”课程成绩改为80分。
- UPDATE StudentGrade
-
- SET Grade=80
-
- WHERE Stu_id=130101005
-
- AND Course_id IN
-
- (SELECT Course_id
-
- From Course
-
- WHERE Course_name='数据结构')
4、删除“利旭勉”的选课记录。
- --删除“利旭勉”的选课记录
-
- DELETE
-
- FROM StudentGrade
-
- WHERE Stu_id IN
-
- (SELECT Stu_id
-
- FROM Student
-
- WHERE Stu_name='利旭勉')
5、先建立monitor表,其结构与student表大致一样.包含student表的学号、姓名、性别和班级编号,然后把各班班长的个人信息插入到monitor表中。
- --先建立monitor表,其结构与student表大致一样.包含student表的学号、姓名、性别和班级编号,然后把各班班长的个人信息插入到monitor表中。
-
- --建立monitor表
-
- CREATE TABLE Monitor(
-
- Stu_id varchar(10) NOT NULL,
-
- Stu_name varchar(8) NOT NULL,
-
- Stu_sex varchar(2) DEFAULT '男' NOT NULL,
-
- Age AS (datepart(year,getdate())-datepart(year,Birthday)), --计算列
-
- Birthday smalldatetime NOT NULL,
-
- Phone varchar(8) NULL,
-
- Address varchar(100) NULL,
-
- Class_id varchar(4) NULL,
-
- CONSTRAINT PK_Monitor PRIMARY KEY CLUSTERED (Stu_id ASC) --主键,聚集索引(clustered)
-
- )
-
- --筛选班长
-
- INSERT
-
- INTO Monitor(Stu_id,Stu_name,Stu_sex,Birthday,Phone,Address,Class_id)
-
- SELECT Stu_id,Stu_name,Stu_sex,Birthday,Phone,Address,Student.Class_id
-
- FROM Student JOIN Class ON Student.Stu_id=Class.Monitor
-
- WHERE Class.Monitor IS NOT NULl
6、删除studentgrade表中学号以“2017”开头的学生选修课程的记录。
- --删除studentgrade表中学号以“2017”开头的学生选修课程的记录。
-
- --材料未提供学号以“2017”开头的学号,因此将其换为“14050”
-
- DELETE
-
- FROM StudentGrade
-
- WHERE Stu_id LIKE '14050%'
7、删除课程名为“C语言”的课程信息和所有这门课的选课信息。(不用级联删除,因级联需在创建表时定义。考虑各个表删除的先后顺序)
- --删除课程名为“C语言”的课程信息和所有这门课的选课信息。(不用级联删除,因级联需在创建表时定义。考虑各个表删除的先后顺序)
-
- --材料未提供“C语言”,因此将其换位“数据结构”
-
- -- 删除与 Course 表相关的成绩记录
-
- --未能删除Course表对应数据与 REFERENCE 约束"FK_CourseTeacher_Course"冲突
-
- --解决方法:先删除CourseTeacher表中对应数据,再删除Course表中对应的数据(tip:不能合并表,因为合并表后要考虑删除的先后顺序)
-
- DELETE
-
- FROM StudentGrade
-
- WHERE Course_id IN (
-
- SELECT Course_id
-
- FROM Course
-
- WHERE Course_name = '数据结构'
-
- )
-
-
-
- -- 删除 CourseTeacher 表中的对应记录
-
- DELETE
-
- FROM CourseTeacher
-
- WHERE Course_id IN (
-
- SELECT Course_id
-
- FROM Course
-
- WHERE Course_name = '数据结构'
-
- )
-
- ---- 删除 Course 表中的对应记录
-
- DELETE
-
- FROM Course
-
- WHERE Course_name = '数据结构'
8、把数据库中学生表学号为“130101005”的学生的学号改为“130101006”,请关注是否能修改成功。为什么?
- --把数据库中学生表学号为“130101005”的学生的学号改为“130101006”,请关注是否能修改成功。为什么?
-
- UPDATE Student
-
- SET Stu_id='130101006'
-
- WHERE Stu_id='130101005'
- 不能修改成功,不能在对象“dbo.Student”中插入重复键。重复键值,因为违反了 PRIMARY KEY 约束
