实验八 视图(V2.0)

实验  视图数据库

1、实验目的:安全

1.了解视图的概念和与基本表的区别。函数

2.掌握SQL建立视图的方法。测试

3.掌握视图更新与基本表更新的相关性spa

 

4.3d

2、实验内容blog

1.基本知识排序

建立视图的命令it

1) create view <视图名>io

2) as

3) select <目标列>

4) from <表名列表>

5) [where 查询条件]

6) [group by 分组数据 having 分组筛选条件]

7) [with check option]

 

说明:

1) 视图名的起名规则,遵循标识符的命名规则。

2) 子查询的查询结果为视图。视图是查询的定义,数据存储在基本表,因此视图是虚表。

3) 子查询不能进行排序因此没有Order by子句。

4) 当使用with check option子句时,将会在更新视图时,强制附加where条件的内容。

 

2.建立视图

实验1:建立CS系学生信息视图CS_VIEW

 

 

 

命令:

create view CS_VIEW
as
select *
from student
where sdept = 'CS'
with check option;

 

完成实验

:建立视图后,更新基本表(更新200215121学生的年龄为21岁),从新查看视图内数据,有没有更新?将用到的命令、测试过程和说明的问题记录清楚。

 

会更新。说明视图只是定义,不保存数据,数据来源于基本表,视图的数据来源于基本表。视图是个虚表,不占用存储空间。

 

 

实验2:建立数据库课程学生成绩单。

DS_GRADE(学号,姓名,成绩)

 

 

说明:视图能够来源于多个表。

注意:视图也能够在视图的基础上进行建立。

 

实验3:建立一个各系学生人数统计视图。SDEPT_VIEW(系名,人数)

Create view sdept_view

As 

Select sdept 系名,count(*) 人数

From student

Group by sdept

 

 

 

视图的建立可使用分组和汇集函数,使用户只能看到统计结果,不能看到明细,体现了数据的安全性。

 

3.修改数据更新视图

 

实验4:经过CS_View更新CS系学生的年龄增长1岁。

 命令:

update CS_VIEW
set sage = sage + 1;

命令可以执行,查看基本表和视图数据是否已更新。基本表数据更新了吗?视图数据更新了吗?

 

实验5:更新DS_GRADE视图内200215121学生的成绩为85.

命令:update DS_GRADE

             set grade = 85

             where sno = '200215121'

 

结果:命令成功?仍是不成功?为何?

 

 

4.插入数据更新视图

实验6:插入一学生(200215126,张三,男,20)到CS_VIEW视图。

 命令:

insert into cs_view
values('200215126','张三','男',20)

 

 

查看基本表student和CS_VIEW视图,有什么状况?

基本表内可以查询到,而CS_View视图内,没有

 

说明:

1.在建立视图CS_VIEW时,没有加可选子句with check  option,经过视图插入的数据不通过视图where子句检验,插入的数据不知足sdept为CS也没有问题,因此这个没有sdept的值(为NULL)数据可以插入(到基本表),而视图内看不到不是CS系的学生数据。

2.若是在建立CS_VIEW时,使用了with check  option子句,则经过视图插入数据时,须要检验数据是否为CS系的数据(知足提升安全性的要求),若是知足则可以插入,不然不容许插入。

注意:

在定义视图时With check option的做用。

 

 

命令7:插入('200215127','李四',87)到视图DS_GRADE。

命令?

执行状况?

 

实验8:插入(’ABC’,1)到SDEPT_VIEW视图。

 

 

命令是?

 

可以插入吗?

 

 

4、总结:

0.建立视图的几种形式。

 

1.视图能够从基本表导出,也能够从视图导出。

 

2.视图不保存数据,数据保存在基本表中。

 

3.更新基本表,视图数据会发生变化;成功更新视图,

基本表也会发生变化。

 

4.更新视图不成功的状况很常见。不能知足建立视图where条件的更新不可以更新;有多个表或视图导出的视图不可以更新;有group by或汇集函数的视图不可以更新。

 
相关文章
相关标签/搜索