【班级】N10TH                         【姓名】苟忠兴

【实验名称】对数据库jwgl,按要求建立以下视图

【实验目标】

n       了解系统数据库及作用

n       掌握创建数据库的方法

n       了解创建约束的作用,且能根据实际需要创建约束

n       掌握创建、修改、删除视图的方法

【实验步骤】

具体步骤:

       系统数据库:

 

master:记录用户帐户、配置环境变量,存放系统错误信息,整体控制SQL Server的用户数据库和操作。

 

model:为新的数据库提供模板。

 

msdb:用来管理警报和任务,它还存储SQL Server管理数据库的每一次备份和恢复的历史信息。

 

tempdb:用来存储临时信息。用户创建的临时信息会在该用户与SQL Server 断开连接时删除。另外,创建的临时表在SQL Server停止和启动时删除。

 

数据库的创建

 

数据库实际上就是硬盘上的一系列文件,有

 

       主要数据文件(扩展名.MDF

 

       次要数据文件(扩展名.NDF

 

       事物日志文件(扩展名.LDF

 

如果主要数据文件可以包含数据库的所有数据,那么数据库就不需要次要数据文件,但有些数据库可能非常大,所以需要多个辅助数据文件。配置数据文件时,可使用文件组来划分不同用途的数据文件。

采用多个数据文件有如下好处:

 

       数据库可以不断扩充而不受操作系统文件大小限制

 

       可以将数据文件存储在不同的硬盘中,这样可以同时对几个硬盘做数据存取,提高了数据存储的并发性,这对服务器型的计算机是十分有用的。

文件组:

 

文件组是SQL Server管理数据文件的特殊机制,逻辑的管理单位。当数据库被创建时,第一个数据文件会自动设置为“PRIMARY文件组”(此名称无法更改,系统数据表会自动放在这个组)。第二个数据文件可加入PRIMARY文件组或其他文件组。

 

文件组的特性:

 

       创建数据表或索引时,可以指定要存放在哪个文件组,但是无法指定要存入哪个数据文件。常用的性能优化技巧是将数据表与索引放在不同的“文件组”,其数据文件也置于不同的磁盘,这种规划可以提高数据搜索效率。

 

       如果文件组包含多个文件,SQL Server会采用等比例写入机制

 

       如果文件组包含多个数据文件,且设置为自动增长,SQL Server会以循环方式扩充文件容量。

什么是视图?

 

  视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上

 

  视图中并不存放数据,而是存放在视图所引用的原始表(基表)中

 

  同一张原始表,根据不同用户的不同需求,可以创建不同的视图

 

创建视图:

 

create view 视图名称

as

查询命令

创建时注意事项

 

定义的视图名称唯一,不能与表同名

 

定义视图的查询语句中如有order by 则需出现top

 

定义视图的查询语句中不能包括computecompute by子句或into关键词

 

没有明确指明视图中的列名,视图中列使用基表中的名称。如果是生成列,必须指定列名。

修改视图:

 

alter view 视图名

as

查询命令

 

查看视图信息

 

查看视图信息:

 

sysobjects:存放视图的名称等基本信息

 

syscolumns:存放视图中定义的列

 

syscomments:存放定义视图的文本

 

存储过程:

 

查看视图定义sp_helptext视图名

 

通过视图修改基表

 

不能通过视图修改表——组合列,生成列

 

通过视图修改基表中的数据

 

对视图中的记录进行的插入、修改、删除是作用在基本表的

 

视图可执行更新操作,生成视图的查询语句的结果集中的列应没有对基表中的列的修改。定义视图的查询语句中没有集合函数,也没有topdistinctgroup byUnion子句

 

with check option检查修改后的记录是否符合视图定义。

 

1、查询班级女学生的学生编号、学生姓名及学生所属班级名称,并把此查询生成视图。

create view stu_info

as

select student_id,student_name,sex,class_id from student where sex='0'

 

select * from stu_info

 

2、修改上题所建视图定义,除显示班级女学生编号、学生姓名及学生所属班级名称外,还要求显示学生年龄。

alter view stu_info

as

select student_id,student_name,sex,class_id,age from student

 

select * from stu_info

 

3、查询上题生成的视图。

select * from stu_info

 

4、在生成的视图中插入一名男学生的记录。

alter view stu_info

as

select student_id,student_name,sex,class_id

from student

where sex='0' or student_id='g940218'

 

select * from stu_info

 

5、在视图的定义上加上子句with check option,再通过视图插入一名男学生的记录,能否成功,想想为什么。

alter view stu_info

as

select student_id,student_name,sex,class_id

from student

where sex=0 or student_id='g940210'

select * from stu_info

 

在视图的定义上加上字句with check option之后,再插入一名男学生记录

select * from student

alter view stu_info

as

select student_id,student_name,sex,class_id,age

from student

where sex=0

with check option

insert into stu_info values('g940895','','1','g9910','20')

select * from stu_info

原因:----不能成功.视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上.

----with check option检查结果记录显示,不符合已建的视图定义.

【实验总结】

Ø       视图的作用

Ø       定义视图

Ø       修改视图

Ø       删除视图

Ø       为视图指定列名

Ø       通过视图修改基表

Ø       With check option