一. 實驗目的
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 = '通信'