一、实验目的:

1.掌握创建视图的SQL语句的用法。

2.掌握修改视图的方法。

3.熟悉和掌握对数据表中视图的查询操作和SQL命令的使用;

4.熟悉和掌握对数据表中视图的更新操作和SQL命令的使用,并注意视图更新与基本表更新的区别与联系

5.学习灵活熟练的进行视图的操作,认识视图的作用


二、实验环境:

SQL Server 2014



三、实验内容:


Part 1 定义视图

1.定义计算机系学生基本情况视图V_Computer;


CREATE


view

V_Computer


AS


SELECT

Sno

,

Sname

,

Sage,Sdept


FROM

Student


WHERE

Sdept

=


‘CS’

2. 将Student Course 和sc表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G


CREATE


view

V_S_C_G

(

Sno

,

Sname

,

Cno

,

Cname

,

Grade

)


AS


SELECT

Student

.

Sno

,

Sname

,

Course

.

Cno

,

Cname

,

Grade


FROM

Student

,

SC

,

Course


WHERE

SC

.

Sno

=

Student

.

Sno

AND

SC

.

Cno

=

Course

.

Cno

3. 将各系学生人数,平均年龄定义为视图V_NUM_AVG


create


view

V_NUM_AVG

(

sdept

,

sums

,

sage

)


As


select

Sdept

,


count


(

Sno

),


avg


(

sage

)


from

student


group


by

Sdept

4. 将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G


create


view

V_AVG_S_G

(

sno

,

sums

,

avgGrade

)


As


select

Sno

,


count


(

Cno

),


avg


(

Grade

)


from

SC


group


by

Sno

5. 各门课程的选修人数及平均成绩定义为视图V_AVG_C_G


create


view

V_AVG_C_G

(

Cno

,

sums

,

avgGrade

)


As


select

Cno

,


count


(

Sno

),


avg


(

Grade

)


from

SC


group


by

Cno


Part3 修改视图

1. 通过视图V_Computer,将学号为“201215121”的学生姓名进行修改,并查询结果;


update

V_Computer


set

Sname

=


‘John’


where

Sno

=


‘201215121’


;


select


*


from

V_Computer

;


Select


*


from

student

;

2. 通过视图V_Computer,新增加一个学生记录 (‘201215201′,’YAN XI’,19,’IS’),并查询结果


insert


into

V_Computer

(

Sno

,

Sname

,

Sage

,

Sdept

)


values


(


‘201215201’


,


‘YAN XI’


,

19

,


‘IS’


);


select


*


from

V_Computer

;


Select


*


from

student

;

3.通过视图V_Computer,新增加一个学生记录 (‘201215301′,’Yangyang’,20,’MA’),并查询结果


insert


into

V_Computer

(

Sno

,

Sname

,

Sage

,

Sdept

)


values


(


‘201215301’


,


‘Yangyang’


,

20

,


‘MA’


);


select


*


from

V_Computer

;


Select


*


from

student

;

4. 要通过视图V_S_C_G,将学号为“201215127”的姓名改为“Weiwen”,是否可以实现?并说明原因

可以实现,代码如下:


update

V_S_C_G


set

Sname

=


‘Weiwen’


where

Sno

=


‘201215127’


;


select


*


from

V_S_C_G

;


Select


*


from

student

;

5.要通过视图V_AVG_S_G,将学号为“201215121”的平均成绩改为90分,是否可以实现?并说明原因

不可以实现,对视图或函数 ‘V_AVG_S_G’ 的更新或插入失败,因其包含派生域或常量域。



版权声明:本文为qq_40956679原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_40956679/article/details/80966269