资源描述:
《数据库视图查看操作3》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、创建和管理视图目录视图概念创建视图视图的应用修改与删除视图2什么是视图思考:对于学生信息表和学生成绩表,教师和辅导员所需要的信息不同教师:姓名、学号、cSharp成绩、SQL成绩、平均分辅导员:姓名、学号、性别,年龄、家庭住址等解决方法:视图3什么是视图视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上视图中并不存放数据,而是存放在视图所引用的原始表(基表)中同一张原始表,根据不同用户的不同需求,可以创建不同的视图一个视图可以派生于一个或多个基表,也可以从其它视图中派生4什么是视图视图的用途筛选表中的行防止未经许可的用户访问敏感数据降低数据库的复杂
2、程度将多个物理数据库抽象为一个逻辑数据库5如何创建视图使用T-SQL语句创建视图的语法Column:视图中的列名Withencryption:视图将被加密Select_statement:查询语句Withcheckoption:让update和insert语句严格按照视图中定义的格式注:一个视图能参照的最大列数为1024CREATEVIEWview_name(column[,…..n])[withencryption]Asselect_statement[withcheckoption]6创建视图-(例1)基于stuInfo表创建一个视图CREATEVIEWview_assistantASSE
3、LECTstuInfo.stuNo,stuInfo.stuName,stuInfo.stuAge,stuInfo.stuSex,stuInfo.stuAddressFROMstuInfoGO7创建视图-(例2)创建视图,使用不同于基表的列名CREATEVIEWview_ass(学号,姓名,性别,年龄,住址)ASSELECTstuNo,stuName,stuAge,stuSex,stuAddressFROMstuInfoGO8创建视图-(例3)基于stuInfo和stuMarks两个表创建视图,查询学号,姓名,性别,c#成绩,SQL成绩,平均成绩)。CREATEVIEWview_twotable
4、(学号,姓名,性别,c#成绩,SQL成绩,平均成绩)ASSELECTstuInfo.stuNo,stuName,stuSex,cSharpExam,SQLExam,(cSharpExam+SQLExam)/2FROMstuInfo,stuMarksWHEREstuInfo.stuNo=stuMarks.stuNoGO9创建视图-(例4)练习:创建视图,查看学号,姓名,c#成绩,SQL成绩,平均成绩且平均成绩高于80分的同学。10创建视图-(例5)使用函数创建视图,查看stuInfo表中男生和女生分别的人数,并将视图加密CREATEVIEWview_numOfSexWITHENCRYPTIONA
5、SSELECTstuSex,COUNT(stuSex)AS人数FROMstuInfoGROUPBYstuSexGO给视图加密可以防止其他用户查看最初的视图产生代码。这是软件开发人员隐藏视图或其他数据对象的源代码的有效方法11视图的应用-查看视图的定义使用withencryption选项的视图不能查看SP_HELPTEXTview_twotableGOSP_HELPTEXTview_numOfSexGO12视图的应用-使用createview的几点注意要求对基表有select权限不能在视图上建立规则、默认和触发器,或构造索引一个视图只能参照1024列不能创建临时视图,也不能以临时表为基表建立视图
6、由于不能以临时表为基表建立视图,而selectinto语句需要建立临时表,所以在createview语句中不能使用selectinto13视图的应用-视图的使用通过视图检索数据可以通过任何查询方式检索视图建立视图时,系统不检查参照对象的存在,检索视图时不存在的对象将导致错误使用select*建立的视图在基表增加新列后,不能检索新列,及表删除某列后检索将不能进行通过视图修改数据实际是对基表的数据进行修改,所以必须遵守基表的数据完整性约束一个语句只能修改视图的一个基表不允许对groupby定义的视图或视图的计算列进行修改14视图的应用通过视图插入数据insertintoview_assvalues
7、('G21120','李鹏',23,'女','山东济南')[需要特别注意对于基表的数据完整性检查]对插入的数据进行修改UPDATEView_teacherSETc#成绩=60WHERE姓名='张明'15修改与删除视图修改视图的结构与创建一致语法:ALTERVIEWview_nameASselect_statement示例:修改View_teacherALTERVIEWview_teacher(学号