SQL Sever实验三 视图与数据更新

一. 实验目的

 

1.掌握创建视图的 SQL 语句,数据更新的 SQL 语句。

2.了解使用创建视图向导创建视图的方法。

3.掌握使用 SQL 创建视图的方法,使用 SQL 更新数据的方法。

 

二. 实验准备

1.了解创建视图与数据更新的方法。

2.掌握创建视图与数据更新的 SQL 语句的语法格式。

3.了解删除视图与数据更新的 SQL 语句的用法。

 

三. 实验要求

1. 用不同的方法创建视图,练习数据更新。

2. 提交实验报告,并验收实验结果。

 

四. 实验内容 

1)定义计算机系学生基本情况视图 V_Computer; 
USE stsc
GO
CREATE VIEW V_Computer
AS
SELECT * 
FROM Student

2)将 student, course 表和 score 表中学生的学号,姓名,课程号,课程名,成绩定义为视图 V_S_C_G;
USE stsc
GO
CREATE VIEW V_S_C_G
AS
SELECT Student.stno, Student.stname, Course.cname ,Score.grade
FROM Student,Score,Course

3)将各系学生人数,平均年龄定义为视图 V_NUM_AVG; 
USE stsc
GO
CREATE VIEW V_NUM_AVG("系名","平均人数", "平均年龄")
AS
SELECT speciality, COUNT(*), AVG(year(getdate())-year(stbrithday))
FROM Student
GROUP BY speciality

4)定义一个反映学生出生年份的视图 V_YEAR; 
USE stsc
GO
CREATE VIEW V_Year("出生日期")
AS
SELECT stbrithday
FROM Student

5)将各位学生选修课程的门数及平均成绩定义为视图 V_AVG_S_G; 
USE stsc
GO
CREATE VIEW V_AVG_S_G("学号", "选修门数", "平均成绩")
AS
SELECT Student.stno, COUNT(*), AVG(Score.grade)
FROM Student, Score
WHERE Score.stno = Student.stno
GROUP BY Student.stno


6)将各门课程的选修人数及平均成绩定义为视图 V_AVG_C_G。 
USE stsc
GO
CREATE VIEW V_AVG_C_G("课程号", "平均成绩")
AS
SELECT Course.cno, AVG(Score.grade)
FROM Course, Score
WHERE Score.cno = Course.cno
GROUP BY Course.cno

2.查询视图 
1)通过查询 V_AVG_S_G 视图得到平均成绩为 90 分以上的学生的学号和成绩;

USE stsc
SELECT *
FROM V_AVG_S_G
WHERE "平均成绩" >= 90

2)通过查询 V_NUM_AVG 视图得到人数超过 10 人,且平均年龄在 18 岁以上的院系;
USE stsc
SELECT *
FROM V_NUM_AVG
WHERE "平均年龄" >= 18 AND "平均人数" >= 10

3.删除视图 
使用 SQL 语句删除视图 V_YEAR。 
USE stsc
DROP VIEW V_Year


4.数据更新 

(1)将一个新学生记录(学号:XX(根据自己定义的学号修改);姓名:陈冬;性别: 男;所在系:XX(根据自己定义的系名修改);年龄:18)插入 student 表中; 
USE stsc
INSERT INTO Student values
('122009', '陈冬', '男', '1992-11-23', '计算机', 50)
(2)插入一条选课记录:学号为 200215126 的学生选修了 1 号课程;
USE stsc
INSERT INTO Score values
('200215126 ', '102', NULL)
 

(3)将学生 XX(根据自己定义的学号修改)所在系改为其他系别(例如:数学系, 具体地,根据自己定义的系名修改); 
USE stsc
UPDATE Student SET speciality = '通信'
WHERE stno = '121002'
(4)删除学号为 XX 的学生记录; 
USE stsc
DELETE FROM Student
WHERE stno = '121002'
(5)删除 XX 系(根据自己定义的系名修改)所有学生。
USE stsc
DELETE FROM Student
WHERE Student.speciality = '通信'

 

你可能感兴趣的:(SQLServer)