【班级】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
定义视图的查询语句中不能包括compute、compute by子句或into关键词
没有明确指明视图中的列名,视图中列使用基表中的名称。如果是生成列,必须指定列名。
修改视图:
alter view 视图名
as
查询命令
查看视图信息
查看视图信息:
sysobjects:存放视图的名称等基本信息
syscolumns:存放视图中定义的列
syscomments:存放定义视图的文本
存储过程:
查看视图定义sp_helptext视图名
通过视图修改基表
不能通过视图修改表——组合列,生成列
通过视图修改基表中的数据
对视图中的记录进行的插入、修改、删除是作用在基本表的
视图可执行更新操作,生成视图的查询语句的结果集中的列应没有对基表中的列的修改。定义视图的查询语句中没有集合函数,也没有top、distinct、group by和Union子句
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
Ctrl+Enter 发布
发布
取消