合肥工业大学—SQL Server数据库实验九:视图的定义与使用
視圖的定義與使用
- 1. 定義視圖
- 2. 使用視圖
1. 定義視圖
在EDUC數(shù)據(jù)庫(kù)中,已Student、Course 和SC表為基礎(chǔ)完成一下視圖定義:
1) 定義視圖V_SC_G:該視圖包含Student、 Course 和SC表中學(xué)生的學(xué)號(hào)、姓名、課程號(hào)、課程名和成績(jī)
-- 定義視圖V_SC_G:該視圖包含Student、 Course 和SC表中學(xué)生的學(xué)號(hào)、姓名、課程號(hào)、課程名和成績(jī)
create view V_SC_G as select st_id,st_name,cs_id,cs_name,sc_gradefrom student,course,select_coursewhere st_id = sc_id and cs_id = sc_num
go
2) 定義一個(gè)反映學(xué)生出生年份的視圖V_YEAR,該視圖要求使用系統(tǒng)函數(shù)來(lái)獲取當(dāng)前日期及轉(zhuǎn)換
-- 定義一個(gè)反映學(xué)生出生年份的視圖V_YEAR,該視圖要求使用系統(tǒng)函數(shù)來(lái)獲取當(dāng)前日期及轉(zhuǎn)換
create view V_YEAR(st_id,birth) asselect st_id,YEAR(GETDATE())-datediff(year,st_born,getdate()) from student
go
3) 定義視圖V_AVG_S_G:該視圖將反映學(xué)生選修課程的門數(shù)及平均成績(jī)
-- 定義視圖V_AVG_S_G:該視圖將反映學(xué)生選修課程的門數(shù)及平均成績(jī);
create view V_AVG_S_G(sno,count,avg_grade) asselect sc_id,count(*),avg(sc_grade) from select_coursegroup by sc_id
go
4) 定義視圖V_AVG_C_G:該視圖將統(tǒng)計(jì)各門課程的選修人數(shù)及平均成績(jī)
-- 定義視圖V_AVG_C_G:該視圖將統(tǒng)計(jì)各門課程的選修人數(shù)及平均成績(jī)
create view V_AVG_C_G(cno,count,avg_grade) asselect sc_num,count(*),avg(sc_grade) from select_course group by sc_num
go
5)定義一個(gè)學(xué)生表的行列子集視圖V_S:該視圖包含學(xué)生的學(xué)號(hào)、姓名、專業(yè)號(hào)
-- 定義一個(gè)學(xué)生表的行列子集視圖V_S:該視圖包含學(xué)生的學(xué)號(hào)、姓名、專業(yè)號(hào)
create view V_S asselect st_id,st_name,tc_mj from student
go
6)定義一個(gè)視圖V_SC:該視圖包含學(xué)號(hào)、姓名、課程號(hào)、成績(jī)
-- 定義一個(gè)視圖V_SC:該視圖包含學(xué)號(hào)、姓名、課程號(hào)、成績(jī)
create view V_SC asselect st_id,st_name,cs_id,sc_gradefrom student,course,select_coursewhere st_id = sc_id and cs_id = sc_num
go
2. 使用視圖
1)查詢以上所建的視圖結(jié)果
-- 查詢以上所建的視圖結(jié)果
select * from V_SC_G
select * from V_YEAR
select * from V_AVG_S_G
select * from V_AVG_C_G
select * from V_S
select * from V_SC
2) 查詢平均成績(jī)?yōu)?0分及以上的學(xué)生學(xué)號(hào)、姓名和成績(jī)
-- 查詢平均成績(jī)?yōu)?0分及以上的學(xué)生學(xué)號(hào)、姓名和成績(jī)
select distinct st_id,st_name,avg_grade
from V_SC_G,V_AVG_S_G
where sno = st_id
and avg_grade>90
3) 查詢科目成績(jī)大于平均成績(jī)的學(xué)生學(xué)號(hào)、課程號(hào)、成績(jī)和平均成績(jī)
-- 查詢科目成績(jī)大于平均成績(jī)的學(xué)生學(xué)號(hào)、課程號(hào)、成績(jī)和平均成績(jī)
select st_id,cno,sc_grade,avg_grade
from V_AVG_C_G,V_SC
where cs_id = cno
and sc_grade > avg_grade
4) 查詢2000年出生的學(xué)生學(xué)號(hào)和姓名
-- 查詢2000年出生的學(xué)生學(xué)號(hào)和姓名
select V_S.st_id,st_name
from V_S,V_YEAR
where V_S.st_id = V_YEAR.st_id
and birth = 2000
5) 將學(xué)生“鐘嗣儒”的專業(yè)號(hào)改為“22” (數(shù)據(jù)視實(shí)際數(shù)據(jù)而定)
-- 將學(xué)生“鐘嗣儒”的專業(yè)號(hào)改為“22”
update V_S
set tc_mj = 22
where st_name='鐘嗣儒'
6) 利用視圖V_SC將學(xué)號(hào)為“2018217876”、課程號(hào)為“100”的成績(jī)改為85分
-- 利用視圖V_SC將學(xué)號(hào)為“2018217876”、課程號(hào)為“100”的成績(jī)改為85分
update V_SC
set sc_grade = 85
where st_id = 2018217876
總結(jié)
以上是生活随笔為你收集整理的合肥工业大学—SQL Server数据库实验九:视图的定义与使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 合肥工业大学—SQL Server数据库
- 下一篇: 合肥工业大学—SQL Server数据库