实验六--视图的定义及使用实验---实验报告Word版
实验6 视图的应用
实验6 视图的应用实验目的学会使用MS SQL SERVER 2000企业管理器和SQL语句创建、修改和删除视图,掌握通过视图向基本表插入、删除、更新数据的方法和步骤。
知识点拨:1.视图是一张虚表2.视图的作用3.视图的种类4.创建视图的SQL语句5.更新视图的SQL语句6.删除视图的SQL语句7.通过视图修改数据库中数据的限制实验内容1.行列子视图的创建2.基于多个基本表的视图的创建3.基于基本表和视图的视图的创建4.带表达式的视图的创建5.分组视图的创建6.删除视图7.修改视图8.通过视图修改数据库数据实验步骤1.选择数据库JX;注意:以下操作均在查询分析器定义,在企业管理器中查看和修改,并请验证结果!2.创建行列子视图1)创建视图WY_Student,用于查询外语系学生的基本信息;CREATE VIEW WY_StudentASSELECT *FROM StudentWHERE Sdept='外国语'2)创建视图SS_Student,用于查询学生的姓名、学号和总学分信息,要求属性列中文显示;CREATE VIEW SS_StudentASSELECT Sname 姓名,SC.Sno 学号,Total 总学分FROM Student3.创建基于多个基本表的视图1)创建视图XSXK,用于查询每个同学的选课信息,包括学号、姓名、课程号、课程名和成绩;CREATE VIEW XSXKASSELECT SC.Sno,Sname,o,Cname,GradeFROM Student,SC,CourseWHERE Student.Sno=SC.Sno AND o=oGROUP BY SC.Sno,Sname,o,Cname,Grade2)创建视图JSSK,用于查询每个教师的任课情况,包括教师号、教师名、职称、所讲授课程的课程号信息,并用中文列出各属性名;CREATE VIEW JSSKASSELECT Teacher.Tno 教师号,Tname 教师名,Tprof 职称,o 课程号,Cname 课程名FROM Teacher,SC,CourseWHERE Teacher.Tno=SC.Tno AND o=oGROUP BY Teacher.Tno ,Tname ,Tprof ,o ,Cname3)基于视图WY_Student和SC,创建视图SSS,用于查询外语系学生的选课情况;CREATE VIEW SSSASSELECT WY_Student.Sno,Sname,CnoFROM WY_Student,SCWHERE SC.Sno=WY_Student.Sno4.带表达式的视图的创建1)创建视图XSNL,用于查询学生的学号、姓名和年龄;CREATE VIEW XSNL(Sno,Sname,Sage)ASSELECT Sno,Sname,year(getdate())-year(Sbirth)FROM Student2)创建视图XSZCJ,用于查询选修了课程的学生的总评成绩,包括学号、姓名、课程号,每门课程的总评成绩计算公式为:成绩*70%+(成绩-10)*20%+10;CREATE VIEW XSZCJ(Sno,Sname,Cno,总评成绩)ASSELECT Student.Sno,Sname,Cno,Grade*0.7+(Grade-10)*0.2+10FROM Student,SCWHERE Student.Sno=SC.Sno3)创建视图JSGZ,用于显示教师的预发工资,包括教工号、姓名、职称和按95%预发的工资额;(含有%的列名字可以用【】)CREATE VIEW JSGZ(Tno,Tname,Tprof,[预发95%工资])ASSELECT Tno,Tname,Tprof,Tpay*0.95FROM Teacher5.分组视图的创建1)创建视图XSPJCJ,用于查询选修了课程的学生的成绩,包括学号、姓名和所选课程的平均成绩;CREATE VIEW XSPJCJ(Sno,Sname,平均成绩)ASSELECT SC.Sno,Sname,A VG(Grade)FROM SC,StudentWHERE SC.Sno=Student.SnoGROUP BY SC.Sno,Sname2)创建视图JSRKMS,用于查询教师的任课门数,包括教工号、教师名和任课门数;CREATE VIEW JSRKMS(Tno,Tname,任课门数)ASSELECT Teacher.Tno,Tname,COUNT(DISTINCT(Cno))FROM Teacher,SCWHERE Teacher.Tno=SC.TnoGROUP BY Teacher.Tno,Tname3)创建视图KCPJCJ,用于查询各门课程的平均成绩,包括课程号、课程名、选课人数、平均成绩;CREATE VIEW KCPJCJ(Cno,Cname,选课人数,平均成绩)ASSELECT o,Cname,COUNT(*),A VG(Grade)FROM Course,SCWHERE o=oGROUP BY o,Cname4)创建视图YXXS,用于查询各门成绩和平均成绩都在85分以上的学生的学号、姓名及平均成绩;CREATE VIEW YXXSASSELECT DISTINCT SC.Sno,Sname,A VG(Grade) 平均成绩FROM Student,SCWHERE Student.Sno=SC.Sno AND SC.Sno NOT IN(SELECT SnoFROM SCWHERE Grade<85)GROUP BY SC.Sno,Sname6.删除视图1)删除视图XSNL;DROP VIEW XSNL7.通过视图修改数据库数据1)查询视图WY_Student,然后使用INSERT…INTO…语句更新WY_Student视图,再次查询该视图以及相关基表,检查执行结果;SELECT *FROM WY_StudentINSERTINTO WY_Student(Sno,Sname)V ALUES ('06122','王五')SELECT *FROM WY_StudentSELECT *FROM Student再次查询的结果为,在基本表Student中插入了该记录,但是在视图WY_Student中并没有插入该记录,因为插入的记录不满足视图WY_Student子查询的条件。
数据库实验五:视图的应用
数据库实验五:视图的应用一、实验目的与要求:1.实验目的(1)理解视图的概念;(2)掌握视图的使用方法。
(3)理解视图和基本表的异同之处。
2.实验要求(1)参照实验五中完成的查询,按如下要求设计和建立视图:1)基于单个表按投影操作定义视图。
2)基于单个表按选择操作定义视图。
3)基于单个表按选择和投影操作定义视图。
4)基于多个表根据连接操作定义视图。
5)基于多个表根据嵌套操作定义视图。
6)定义含有虚字段的视图。
(2)分别在定义的视图设计一些查询(包括基于视图和基本表的连接或嵌套查询)。
(3)在定义的视图上进行插入、更新和删除操作,分情况讨论哪些操作可以成功完成,哪些操作不能完成,并分析原因。
(4)在实验报告中要给出具体的视图定义要求和操作要求,并针对各种情况做出具体的分析和讨论。
二、实验内容1、实验原理(1)视图是用SQL SELECT查询定义的,创建视图命令格式如下:CREATE VIEW <视图名> AS <SELECT-查询块>(2)删除视图的命令格式如下:DROP VIEW <视图名>2、实验步骤与结果(1)调出SQL Server2005软件的用户界面,进入SQL SERVER MANAGEMENT STUDIO。
(2)输入自己编好的程序。
(3)检查已输入的程序正确与否。
(4)运行程序,并分析运行结果是否合理和正确。
在运行时要注意当输入不同的数据时所得到的结果是否正确。
(5)输出程序清单和运行结果。
(1)参照实验五中完成的查询,按如下要求设计和建立视图:1)基于单个表按投影操作定义视图。
create view v asselect教师编号,姓名from教师create view v_order asselect*from教师where职称='教授'3)基于单个表按选择和投影操作定义视图。
create view v_cuss asselect教师编号,姓名,职称from教师where职称='教授'4)基于多个表根据连接操作定义视图。
视图和索引的创建和使用实验报告
信息工程学院实验报告课程名称:《数据库原理》Array实验项目名称:视图和索引的创建和使用一、实验目的:(1)掌握创建视图的SQL语句的用法。
(2)掌握修改视图的方法。
(3)熟悉视图更新与基本表更新的区别与联系;认识视图的作用。
(4)熟悉索引的作用,以及不同类型索引的区别。
(5)学会用T-SQL语句对表创建和删除索引二、实验设备与器件Win7 +Sql server 2008三、实验内容与步骤利用备份文件school,还原数据库,然后完成以下实验内容:(1)用T-SQL语句,定义信息系学生基本情况视图V_IS。
(2)用T-SQL语句,将Student,Course 和SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G。
(3)用T-SQL语句,将各系学生人数,平均年龄定义为视图V_NUM_AVG。
(4)用T-SQL语句,定义一个反映学生出生年份的视图V_YEAR。
(5)用T-SQL语句,将各位学生学号、选修课程的门数及平均成绩定义为视图V_AVG_S_G。
(6)用T-SQL语句,将各门课程的课程号、选修人数及平均成绩定义为视图V_AVG_C_G。
(7)用T-SQL语句完成以下视图操作,查看结果,并分析原因。
①通过视图V_IS,将学号为“200215125”的学生姓名更改为“张小立”,并查看结果;②通过视图V_IS,新增加一个学生记录 ('200215126','黄笑',19, '男','IS'),并查看结果。
③通过视图V_IS,新增加一个学生记录 ('200215127','李霞',19, '女','MA'),并查看结果。
④通过视图V_IS,删除学号为“200215126”的学生信息,并查看结果。
⑤通过视图V_S_C_G,将学号“200215122”的姓名改为“刘晓晨”,能否实现?若无法实现说明原因。
实验六 视图的定义和使用实验(报告)
实验六视图的定义和使用实验一、实验目的使学生掌握使用SQL语句创建视图方法和企业管理器中使用视图向导创建视图的方法,加深对视图作用的理解。
二、实验内容创建、查看、修改和删除视图。
三、实验步骤1. 利用SQL语句建立、删除视图(1)建立所有学生选课视图,要求包括学生学号、姓名、课程号、课程名、成绩;CREATE VIEW 所有学生选课视图ASSELECT student.sno,sname,o,cname,gradeFROM student,course,scWHERE student.sno=sc.sno AND o=o(2)查询每个同学所有课程的总分、平均分,输出姓名、总分、平均分;SELECT SNAME,SUM(GRADE),AVG( GRADE)FROM 所有学生选课视图GROUP BY SNO(3)查询有多少同学选修了“数学”课程;SELECT COUNT(Sno)FROM 所有学生选课视图WHERE cname='数学'(4)查询选修了五门或以上课程的同学名单;SELECT sno,snameFROM 所有学生选课视图GROUP BY snoHAVING COUNT(cname)>=5(5) 删除上面建立的视图。
drop VIEW 所有学生选课视图2.利用视图向导创建视图下面利用SQL Server 2000中提供的视图创建向导,来创建student_VIEW视图。
1) 打开企业管理器窗口,确认服务器,打开数据库文件夹,选中新视图所在的数据库。
2)选择菜单“工具”一“向导”。
3)在向导选择对话框中,单击数据库左边的“+”号,使之展开。
选择“创建视图向导”项,单击“确定”按钮。
4) 进入创建视图向导后,首先出现的是欢迎进入创建视图向导对话框,其中简单介绍了该向导的功能。
单击“下一步”按钮后,就会出现选择“数据库名称”对话框。
5) 在“选择数据库名称”对话框中,选择视图所属的数据库。
实验六 视图的创建和使用
实验六视图的创建和使用开课实验室:指导老师:学院:专业(班级):姓名:学号:一、实验目的与要求1)理解视图的概念2)掌握利用企业管理器和CREATE VIEW命令创建视图方法。
3)熟悉修改视图、查看视图和删除视图的方法。
4)掌握通过视图修改数据表的方法二、实验过程设计及实验步骤创建视图是数据库应用中的常见需求,可以使用企业管理器创建、管理视图,也可以用T-SQL语句创建、管理视图。
1)在企业管理器中创建如下视图:在XSGL数据库中使用表STUDENT和SCORE 创建视图VIEW_STUDENTSCROE,来查询每个学生的姓名和选课情况。
2)在查询分析器中创建视图:将上题用CREATE VIEW 来创建,视图名为VIEW2 程序代码:3)查看视图信息:使用系统存储过程SP_HELP、SP_HELPTEXT、SP_DEPENDS4)删除视图:将视图VIEW2删除.三、SQL调试及结果创建视图是数据库应用中的常见需求,可以使用企业管理器创建、管理视图,也可以用T-SQL语句创建、管理视图。
1)在企业管理器中创建如下视图:在XSGL数据库中使用表STUDENT和SCORE 创建视图VIEW_STUDENTSCROE,来查询每个学生的姓名和选课情况。
2)在查询分析器中创建视图:将上题用CREATE VIEW 来创建,视图名为VIEW2 程序代码:CREATE VIEW VIEW2ASSELECT STUDENT.SNAME,OFROM STUDENT,SCORE3)查看视图信息:使用系统存储过程SP_HELP、SP_HELPTEXT、SP_DEPENDS 执行代码;SP_HELPTEXT VIEW2执行代码:SP_HELP VIEW2执行代码:SP_DEPENDS VIEW24)删除视图:将视图VIEW2删除. 执行语句:USE XSGLDROP VIEW VIEW2四、实验体会通过此次学习我理解视图的概念,掌握利用企业管理器和CREATE VIEW命令创建视图方法。
《数据库》实验6 视图
ALTER VIEW [ < database_name > .] [ < owner > .] view_name [ ( column [ ,...n ] ) ] AS
【实验步骤】
1.使用企业管理器把视图VIEW_S中的字段AGE删掉;
视图VIEW_S的定义
删除DEPT后的视图VIEW_S中的数据
实验6.3 修改视图
2.使用SQL给视图VIEW_CTABLE增加一个课时字段:CT TINYINT
创建视图VIEW_CABLE的SQL语句
修改后的视图数据
实验6.4 删除视图
附件:数据库jiaoxuedb
1.创建数据库jiaoxuedb。 2.在数据库jiaoxuedb中创建表Student、Teacher、Course、SC、TC,它们
的表数据如下图所示。
学生表student
教师表Teacher
附件:实验2数据库jiaoxuedb
课程表Course
选课表SC
教师任课表TC
CREATE VIEW [ < database_name > .] [ < owner > .] view_name [ ( column [ ,...n ] ) ]
AS
select_statement
[ WITH CHECK OPTION ]
实验6 视图
6.修改视图的SQL语句 ALTER VIEW [ < database_name > .] [ < owner > .] view_name [ ( column [ ,...n ] ) ] AS select_statement [ WITH CHECK OPTION ]
数据库视图实验
实验六视图一、实验内容1.建立计算机科学与技术系的学生的视图View_Stu,并要求进行修改和插入操作时仍需保证该视图只有计算机科学与技术系的学生。
(做完之后在视图中添加一行,Sdept中随便写其他系,然后运行观看结果)2.建立计算机科学与技术系选修了数学分析且成绩在60分以上的学生的视图View_grade3.定义一个反映学生年份的视图4.将所有女生的学号以及他的平均成绩定义为一个视图5.删除第4题中的视图,并思考cascade的作用6.在第3题的视图中找出年龄小于25岁的学生7.在第4题中的视图查询平均成绩在70分以上的学生学号和平均成绩8.将第1题的视图View_Stu中学号为20040744009的姓名改为“刘晨”9.向View_Stu中插入一条新的学生记录,其中学号为20040744020,姓名为赵新,出生年月为1990-8-2310.删除View_Stu中学号为20040744020的记录(验证视图View_grade是否能更新。
思考视图在什么情况下不能更新)11.对每个同学找出他获得最高成绩的课程号、课程名以及相应的课程分数,并将查询结果作为VMgrade视图保存。
二、实验过程1.打开查询分析器,输入代码create view View_Stuasselect Sno,Sname,Sbirthfrom tStudentwhere Sdept='计算机科学与技术'with check option结果,创建成功在视图中添加一行,令Sname=‘丁欣雨‘,Sdept=‘通信工程’insertinto View_Stuvalues ('20040744020','丁欣雨','1990-8-7');结果提示错误:试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了WITH CHECK OPTION,而该操作的一个或多个结果行又不符合 CHECK OPTION 约束的条件。
实验六 视图的定义及使用实验 实验报告
实验六视图的定义及使用实验实验报告实验任务(一)建立视图(运行并观察结果)1.建立信息系学生的视图IS_student。
CREATE VIEW IS_StudentASSELECT Sno,Sname,SageFROM StudentWHERE Sdept='IS'2.建立信息系选修了1号课程的学生的视图IS_S1。
CREATE VIEW IS_S1(Sno,Sname,Grade)ASSELECT Student.Sno,Sname,GradeFROM Student,SCWHERE Sdept='IS'ANDStudent.Sno=SC.Sno ANDo='1';3.建立信息系选修了1号课程且成绩在90分以上的学生的视图IS_S2。
CREATE VIEW IS_S2ASSELECT Sno,Sname,GradeFROM IS_S1WHERE Grade>=904.建立一个反映学生出生年份的视图BT_S。
CREATE VIEW BT_S(Sno,Sname,Sbirth)ASSELECT Sno,Sname,2004-SageFROM Student5.将学生的学号及他的平均成绩定义为一个视图S_G。
CREATE VIEW S_G(Sno,Gavg)ASSELECT Sno,AVG(Grade)FROM SCGROUP BY Sno6.将课程的课号及选修人数定义为一个视图C_XIU。
CREATE VIEW C_XIU(Cno,Scount)ASSELECT Cno,COUNT(*)FROM SCGROUP BY Cno(二)查询视图(运行并观察结果)1.在信息系学生的视图中找出年龄小于20岁的学生。
SELECT Sno,SageFROM IS_StudentWHERE Sage<202.查询信息系选修了1号课程的学生。
SELECT IS_Student.Sno,SnameFROM IS_Student,SCWHERE IS_Student.Sno=SC.Sno ANDo='1'3.在S_G中查询平均成绩在90分以上的学生的学号和平均成绩。
数据库实验报告_数据库的视图和图表的定义及使用
贵州大学实验报告学院:计信学院专业:网络工程班级:101 姓名学号实验组实验时间05.30 指导教师罗昊成绩实验项目名称数据库的视图和图表的定义及使用实验目的使学生掌握SQL Server中的视图创建向导和图表创建向导的使用方法,加深对视图和SQL Server图表作用的理解。
实验要求本实验属于验证型实验,通过实验,加强对课堂讲授知识的理解。
开始实验前,必须进行预习,写出实现所有查询要求的SQL语句。
实验过程中,先集中由老师进行具体要求和注意事项的讲解,然后各自独立在机器上完成实验。
实验过程中出现问题,在实验指导老师帮助下解决。
实验原理 1、创建视图假设在图书_读者数据库中已经建立了图书、读者和借阅3个表,它们的结构为:图书(书号,类别,出版社,作者,书名,定价);借阅(书号,读者借书证号,借阅日期);读者(借书证号,姓名,单位,性别,电话)如果要在上述3个表的基础上建立一个视图,取名为读者_VIEW,其操作用SQL语句表示为:CREATE VIEW 读者_VIEW AS SELECT 图书.*,借阅.* FROM 图书,借阅,读者WHERE 图书.书号=借阅.书号 AND 借阅.读者借书证号=读者.借书证号;利用SQL Srever 2000中提供的视图创建向导,来创建读者_VIEW视图。
2、查看和修改视图视图创建好后,就可以利用它进行查询信息了。
如果发现视图的结构不能很好地满足要求,还可以在企业管理器中对它进行修改3、删除视图删除视图的方法是:首先要在企业管理器中,将鼠标指针指向数据库中的视图文件夹,单击右键。
在随后出现的弹出菜单中,选择“删除”项,会出现删除视图对话框。
选中欲删除的视图,单击“全部移出”按钮,被选中的视图就会从视图中被移出。
4、创建关联表假如要在图书_读者数据库中建立一个读者_借阅_图书关系,要求该图表包括图书、借阅和读者三个表,并包括它们之间的“图书.书号=借阅.书号 AND 借阅.读者借书证号=读者.借书证号”的外码与被参照表之间的关联,即用关联表实现上述视图的功能。
视图及其应用
第5章视图及其应用教学目标通过本章学习,使学生掌握视图的基本概念和作用,掌握视图的建立、修改和操作方法,会根据实际问题的需要,能够熟练地建立相关视图,会利用视图查询数据和修改数据。
重点难点视图的概念和作用 视图的建立和操作方法 利用视图查询数据的方法5.1任务描述本章完成项目的第5个任务:在大学生选课管理数据库Student中,完成如下操作:1.建立教师的有关任课信息视图。
2.建立学生的有关选课信息视图。
3.建立每门课程被选修的状况视图。
5.2视图综述5.2.1 视图的基本概念视图可以被看成是虚拟表或存储查询。
除非是索引视图,否则视图的数据不会作为非重复对象存储在数据库中。
数据库中存储的是Select语句。
Select语句的结果集构成视图所返回的虚拟表。
用户可以采用引用表所使用的方法,在SQL语句中引用视图名称来使用此虚拟表。
视图是从一个或者多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。
和真实的表一样,视图也包括几个被定义的数据列和多个数据行,但从本质上讲,这些数据列和数据行来源于其所引用的表。
因此,视图不是真实存在的基础表而是一个虚拟表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。
5.2.2 视图的优点和作用1.可以使用视图集中数据、简化和定制不同用户对数据库的不同数据要求。
用户使用数据库中的数据时,最关心对自己有用的信息。
对于庞大的数据,用户可只将自己所需的数据集中到一个视图内,而那些不需要的或者无用的数据则不在视图中显示,从而集中精力处理有用的数据。
2.使用视图可以屏蔽数据的复杂性,方便用户对数据的操作,用户不必了解数据库的结构,就可以方便地使用和管理数据,简化数据权限管理和重新组织数据以便输出到其他应用程序中。
3.视图便于组织数据导出,当需要将多个表中的相关数据导出时,可以将数据集中到一个视图内,通过视图导出相关数据,从而简化了数据的交换操作,也大大地简化了用户对数据的操作。
实验—视图、游标实验
实验视图、游标一、实验目的1.掌握创建视图、游标方法。
2.掌握查询视图和游标的使用方法。
二、实验理论基础及教材对应关系1、实验理论基础:(1)视图;三、实验内容与步骤(一)准备工作:首先将数据库附加到服务器上,步骤如下:1、将老师传给你们的“sqlstud”和”goods”文件夹,拷贝到D盘中2、在如下的数据库图上弹鼠标右键,如下图3、在下图中,点击“添加”按钮4、在如下图的进行选择,选择“商品管理_Data.MDF”:并单击“确定”按钮5、在下图中点击“确定”按钮,将商品管理数据库附加到系统中。
5、用与上面类似的方法将“sqlstud”文件夹中的“学籍管理”数据库附加到系统中。
(二)创建视图1、在如下的图中,单击“新建查询”2、在如下的图中,相应处输入代码,并选择对应的数据库,否则出错。
3、创建一个视图,该视图是性别为“男”的学生姓名和年龄。
create view 男生视图asselect 姓名,年龄,性别from 学生where 性别='男'将上述语句运行后,查看“有无“男生视图”,如下图类似,但不同下图4.在“男生视图”上弹鼠标右键,选择“打开视图”。
结果如下所示:将实验结果截图,写入实验报告中5.用类似的方法创建一个“女生视图”,该视图是性别为“女”的学生姓名、年龄、性别。
将实验结果截图,写入实验报告中6.从货物表(编号, 名称, 产地,价格,数量),查询货物名称为“麻辣鱼”的产地和价格。
查询语句如下:use 商品管理Select 名称,产地,价格from 货物表where 名称= '麻辣鱼'参考上题的方式,创建为名称是“麻辣鱼视图”的一个视图,视图中包括名称,产地,价格将实验结果截图,写入实验报告中7.查询货物表中货物名称中以“麻辣”开头的商品名称,产地,价格。
查询语句如下:use 商品管理Select 名称,产地,价格from 货物表where 名称like '麻辣%'go参考上题的方式,创建为名称是“麻辣商品视图”的一个视图,视图中包括名称,产地,价格将实验结果截图,写入实验报告中8、从学生(学号、姓名、年龄、性别),选修(学号、课程号、成绩)中找出成绩>80的学生姓名、课程号和分数Use 学籍管理select 姓名,课程号,成绩from 学生, 选修where 学生.学号=选修.学号and 成绩>80参考上题的方式,创建为名称是“优秀学生视图”的一个视图,将实验结果截图,写入实验报告中9.视图的查看。
实验4视图的定义和使用
实验4视图的定义和使用一实验题目:视图的定义和使用二实验目的:加深对视图的理解,熟练视图的定义、查看、修改等操作三实验内容及要求:(从下面10个题目中选一个)题目一:学生(学号,年龄,性别,系名)课程(课号,课名,学分,学时)选课(学号,课号,成绩)1 根据上面基本表的信息定义视图显示每门课的课名、选课人数、平均成绩2 观察基本表数据变化时,视图中数据的变化。
3 利用视图,查询平均成绩最高的学生。
题目二:图书(书号,书名,价格,出版社)读者(卡号,姓名,年龄,所属单位)借阅(书号,卡号,借阅日期)1 根据上面基本表的信息定义视图显示每本书的书名、借阅次数2 观察基本表数据变化时,视图中数据的变化。
3利用视图,查询借阅次数最多的书。
题目三:商品(编号,品名,进价,库存,售价,厂商编号)顾客(卡号,姓名,电话,积分)厂商(编号,厂址,名称、电话)销售(顾客卡号,商品编号,数量,日期)1 根据上面基本表的信息定义视图显示每种商品的品名、销售数量2 观察基本表数据变化时,视图中数据的变化。
3利用视图,查询销售数量最高的商品。
题目四:图书(书号,书名,作者编号,价格,出版社编号)作者(编号,姓名,电话)出版社(编号,出版社名称,地址)1 根据上面基本表的信息定义视图显示每个出版社的名称、出版书的数量2 观察基本表数据变化时,视图中数据的变化。
3利用视图,查询出版书最多的出版社题目五:零件(编号,名称,颜色,生产车间号)车间(编号,名称,人数,主任)产品(编号,名称,车间编号)使用(产品编号,使用零件编号,个数)1 根据上面基本表的信息定义视图显示每门课的课名、选课人数、平均成绩2 观察基本表数据变化时,视图中数据的变化。
3利用视图,查询选课人数最多的课。
题目六:药品(编号,名称,价格,厂商)处方(药品编号,数量,医生编号)医生(编号,姓名,科室,职称)1 根据上面基本表的信息定义视图显示每种药品的品名、销售金额2 观察基本表数据变化时,视图中数据的变化。
实验6 数据库视图
实验6 数据库视图一、实验目的:通过该实验掌握创建视图、使用视图的方法。
二、实验原理视图是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的。
视图并不在数据库中实际存在,行和列数据来自定义视图的查询总使用的表,并且是在使用视图时动态生成的。
创建视图CREATE VIEW视图名(列1,列2...)ASSELECT (列1,列2...)FROM ...[WITH CHECK OPTION]注意1.可以通过视图插入数据,但是只能基于一个基础表进行插入,不能跨表更新数据。
2.视图不是表,不保存数据,只是一张虚拟的表,源表的数据发生变化后,视图的结果也同步发生变化。
3.一般情况下,在创建有条件限制的视图时,加上“WITH CHECK OPTION”命令。
不鼓励直接对视图进行修改(插入数据,更改数据及删除数据)三、实验内容及方法实验平台操作系统:win7,数据库管理平台:mysql5.6或者mysql8,实验用数据库:老师提供的数据库脚本TradeDBSQL.txt1.创建统计每笔订单的订购量的视图CREATE VIEW Order1_tASSELECTOrderID,Sum(ROUND(`OrderDetails`.UnitPrice*Quantity*(1-Discount))) AS SubtotalFROM OrderDetailsGROUP BY OrderID;检查视图结果mysql> select * from Order1_t;mysql> show tables;mysql>desc Order1_t;2. 创建一个视图SalesTotals调用1题的视图CREATE VIEW `SalesTotals`ASSELECTOrder1_t.Subtotal AS SaleAmount,Orders.OrderID,panyName,Orders.ShippedDateFROM CustomersJOIN Orders ON Customers.CustomerID = Orders.CustomerID JOIN Order1_t ON Orders.OrderID = Order1_t.OrderID;1)统计1997年单笔订单超过超过2500的客户公司名,订单编号及订购量提示:select * from `SalesTotals` where SaleAmount>3500 and ShippedDate BETWEEN '1997-01-01' And '1997-12-31';或者select * from `SalesTotals` where SaleAmount>3500 and year(ShippedDate)=1997;2)查询1995年单笔订单超过超过5000的客户公司名,订单编号及订购量3)统计1997年每个客户的订购量提示:group by CompanyName;3.创建视图SalesTotals1997CREATE VIEW `SalesTotals1997`ASSELECTpanyName As 公司名,sum(Order1_t.Subtotal) AS 订购量FROM Customers,orders,order1_twhere Customers.CustomerID=Orders.CustomerID and Orders.OrderID = Order1_t.OrderID AND year(Orders.ShippedDate) =1997group by panyName;4.统计1997年产品销售情况CREATE VIEW `1997年产品销售情况`ASSELECTCategories.CategoryName as 产品类别,Products.ProductName as 产品名称,Sum(ROUND(`OrderDetails`.UnitPrice*Quantity*(1-Discount))) AS 销售量FROM CategoriesJOIN Products On Categories.CategoryID = Products.CategoryIDJOIN `OrderDetails` on Products.ProductID = `OrderDetails`.ProductIDJOIN `Orders` on Orders.OrderID = `OrderDetails`.OrderIDWHERE Orders.ShippedDate BETWEEN '1997-01-01' And '1997-12-31' GROUP BY Categories.CategoryName, Products.ProductName;检查视图:select * from `1997年产品销售情况`(1) 写一个视图名为'1997年各产品类别销售情况', 要求统计1997年各产品类别销售情况提示:对于`1997年产品销售情况` 视图进行按产品类别进一步统计,group by ‘产品类别’select 产品类别, sum(销售量) as '类别销售量'from `1997年产品销售情况`group by 产品类别;(2) 将其改造为统计1995年下半年产品销售情况(3)将`1997年产品销售情况`的视图定义中的join 连接都改为等值连接,改造后的视图命名为`1997年产品销售情况2`例如:from Categories JOIN Products On Categories.CategoryID = Products.CategoryID 改为from Categories, Productswhere Categories.CategoryID = Products.CategoryID检查是否改造成功。
视图的使用实验报告参考模板
实验报告课程名称数据库原理实验项目名称实验5:试图的使用班级与班级代码12计算机实验室名称(或课室)专业计算机科学与技术任课教师学号:姓名:实验日期:2014 年05 月13日广东财经大学教务处制姓名实验报告成绩指导教师(签名)2014年月日说明:指导教师评分后,实验报告交院(系)办公室保存。
1.实验目的与要求:1.1实验目的:通过视图的创建过程,理解视图的概念和意义,掌握视图的基本使用方法;1.2 通过视图的设计和定义,掌握建立视图的基本方法,包括通过单张表建立视图和通过多张表建立视图;通过在定义的视图上进行查询、插入、更新和删除操作,理解视图的概念,掌握简单视图查询方法。
2.实验环境与实验器材:计算机,网络环境,投影设备。
实验相关软件:Window xp、SQL Server 2000。
3. 实验内容与步骤本实验通过使用Transact-SQL语句和“企业管理器”两种方法进行视图操作。
3.1 基于单张表投影的视图编写Transact-SQL语句;建立一个基于“课程信息表”,按照投影操作定义的视图---“课程信息简表”,使之仅包括课程名称和课程ID,具体操作步骤如下:首先,进入“SQL查询分析器”界面,然后在“教学管理”数据库下编写如下Transact-SQL语句:create view 课程信息简表asselect 课程ID,课程名称from 课程信息表然后单击系统中“运行”按钮,得到如下的系统窗口,如下图所示:3.2 基于单张表选择的视图编写Transact-SQL语句;建立一个基于“课程信息表”,按照选择操作定义的视图---“管理学课程信息简表”,使之仅显示“管理学”这门课程在课程信息表里的所有信息,具体操作步骤如下: 首先,进入“SQL查询分析器”界面,然后在“教学管理”数据库下编写如下Transact-SQL语句:create view 管理学课程信息简表asselect *from 课程信息表where 课程名称='管理学'然后单击系统中“运行”按钮(绿色的小三角形),得到如下的系统窗口,如下图所示:3.3 基于单张表选择和投影混合的视图编写Transact-SQL语句;建立一个基于“课程信息表”,按照选择和投影操作定义的视图---“管理学课程信息简表”,使之包括课程名称、课程ID、课程类别和学分字段。
数据库实验---视图的定义和操作
实验视图的定义和操作一、实验目的本次实验了解SQL Server 2005 的启动,熟悉如何使用SSMS 和SQL 建立数据库和表,并加深对于完整性的理解。
...二、背景知识在使用数据库的过程中,接触最多的就是数据库中的表。
表是数据存储的地方,是数据库中最重要的部分,管理好表也就管理好了数据库。
表是由行和列组成的。
创建表的过程主要就是定义表的列的过程。
表的列名在同一个表中具有唯一性,同一列的数据属于同一种数据类型。
除了用列名和数据类型来指定列的属性外,还可以定义其它属性:是否为空、默认值、标识符列、全局唯一标识符列等。
约束是SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件。
在SQL Server 中有5 种约束:主关键字约束(Primary Key Constraint)、外关键字约束(Foreign Key Constraint)、惟一性约束(Unique Constraint)、检查约束(Check Constraint)和默认约束(Default Constraint)。
...三、实验内容1.对应HRM 数据库,参照前面实验中完成的查询,按如下要求自行设计视图:1)基于单个表按投影操作定义视图。
举例:定义一个视图用以查看所有员工的编号、姓名和出生日期。
2)基于单个表按选择操作定义视图。
举例:定义一个满足sex=’true’的员工的所有信息的视图。
3)基于单个表按选择和投影操作定义视图。
举例:定义一个视图用以查看部门号码为‘2’的所有员工的姓名、电话和邮件地址。
4)基于多个表根据连接操作定义视图。
举例:定义一个视图用以查看所有员工的姓名、部门名及工资。
5)基于多个表根据嵌套查询定义视图。
举例:定义一个比所有财务部的雇员工资都高的雇员的信息的视图6)定义含有虚字段(即基本表中原本不存在的字段)的视图。
举例:定义一个视图用以查看所有雇员的编号、姓名、年龄。
实验5 视图 实验报告模板
(数据库原理与应用)实验报告实验名称视图的应用实验地点60#504实验时间1.实验目的:掌握视图的知识,体会视图与基本表的区别。
2.实验内容:按教材P176实验5的要求。
3.实验要求:按教材P176实验5的要求。
4.实验准备:认真阅读实验要求,分析各种情况作出具体分析明确要求,复习实验二、三,了解各表之间关系设计记录时要符合实际情况,注意实验二各种约束5.实验过程(含代码、实验过程、遇到的问题和解决方法等):1、建立视图单表、投影、建立视图前后对比单表、选择、建立视图前后对比单表、投影和选择、建立视图前后对比多表、连接、建立视图前后对比多表、嵌套、建立视图前后对比含虚字段的视图2、设计一些查询一般:连接:嵌套:3、1.投影:投影操作中:插入、更新、删除都正常2.选择:宁十一宁十一宁十一宁十一宁十一宁十一选择操作中:插入、更新、删除都正常投影和选择:投影和选择操作中:更新、删除可正常执行插入操作时,插入的数据没有进入视图中,而是仅仅进入视图对应的表中Select*from投影和选择/表名,可知连接:连接操作中:更新可正常执行,而使用插入、删除操作时,出现提示:不可更新,因为修改会影响多个基表嵌套:嵌套操作中:插入的数据仅仅进入视图对应的表中,没有在视图中体现;更新、删除可正常操作虚字段:虚字段操作中:插入仅仅进入表中,不进入视图中;删除时显示:不可更新,因为修改会影响多个基表更新正常6.实验总结:在SQL中,视图是基于SQL语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。
视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
我们可以向视图添加SQL函数、WHERE以及JOIN语句,我们也可以提交数据,就像这些来自于某个单一的表。
视图可以快速访问两表或多表连接所组成的数据。
有时要访问表间连接所组成的数据集,可以把查询出来的数据集定义成视图,可以帮助快速访问所需的数据。
但是当用户试图修改视图的某些行时,SQL Server必须把它转化为对基本表的某些行的修改。
实验三 视图的定义和操作
视图的定义和操作实验报告一、实验项目名称视图的定义和操作二、实验目的理解视图的概念,掌握视图的使用方法三、实验环境1.硬件:网络实验室2.软件:Windows98/2000等操作系统,安装SQL Server 2000个人版或企业版四、实验内容1.参照SQL查询实验中完成的内容,按如下要求设计视图:1)基于单个表按投影操作定义视图2)基于单个表按选择操作定义视图3)基于单个表按选择和投影操作定义视图4)基于多个表根据连接操作定义视图5)基于多个表根据嵌套查询定义视图6)定义含有虚字段的视图2.分别在定义的视图上进行查询、插入、更新和删除操作,分情况讨论哪些操作可以成功完成,哪些操作不能完成,并分析原因。
五、实验步骤1.在企业管理器中创建视图:1)在企业管理器,打开“视图设计器”。
2)单击工具栏上的“添加表”按钮,将表添加到视图设计器中。
3)根据新建视图的需要,从表中选择视图引用的列。
4)在网格窗格中的“准则”栏中设置过滤记录的条件。
5)设置视图的其他属性。
6)在视图设计器窗口中,检查SQL语法。
7)最后,单击“保存”按钮,为视图指定名称。
关闭“视图设计器”。
2.在查询分析器中用SQL语句创建视图CREATE VIEW view_name [ ( column [ ,...n ] ) ]ASselect_statement[ WITH CHECK OPTION ]六、源程序清单、测试数据、结果1.1 基于单个表按投影操作定义视图Book关系在书名、作者两个属性上的投影:1.2 基于单个表按选择操作定义视图查询单价>20的图书单价:1.3 基于单个表按选择和投影操作定义视图查询单价>20的书名:1.4 基于多个表根据连接操作定义视图borrow.借书证号=reader.借书证号的等值连接:1.5 基于多个表根据嵌套查询定义视图2.分别在定义的视图上进行分情况讨论哪些操作可以成功完成,哪些操作不能完成,并分析原因。
实验五__视图的创建与使用
视图的创建与使用一、实验目的(1)理解视图的概念。
(2)掌握创建视图、测试、加密视图的方法。
(3)掌握更改视图的方法。
(4)掌握用视图管理数据的方法。
二、实验内容1.创建视图(1)创建一个名为stuview2的水平视图,从数据库Student_info的Student表中查询出性别为“男”的所有学生的资料。
并在创建视图时使用with check option。
(注:该子句用于强制视图上执行的所有修改语句必须符合由Select语句where中的条件。
)create view stuview2asselect*from Studentwhere Sex='男'with check option查看视图:select*from stuview2(2)创建一个名为stuview3的投影视图,从数据库Student_info的Course表中查询学分大于3的所有课程的课程号、课程名、总学时。
并在创建时对该视图加密。
(提示:用with ENCRYPTION关键子句)create view stuview3with ENCRYPTIONasselect Cno,Cname,Total_perior from Coursewhere Credit>3查看视图:select*from stuview3(3)创建一个名为stuview4的视图,能检索出“051”班所有女生的学号、课程号及相应的成绩。
create view stuview4asselect*from SCwhere Sno=(select Sno from Studentwhere Classno='051'and Sex='女')查看视图:select*from stuview4(4)创建一个名为stuview5的视图,能检索出每位选课学生的学号、姓名、总成绩。
create view stuview5asselect Student.Sno学号,Sname姓名,Grade成绩from Student,SCwhere Student.Sno=SC.Sno查看视图:select*from stuview5若出现如上图所示情况,单击“查询”→IntelliSense→刷新本地缓存然后就解决了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六视图的定义及使用实验实验报告实验任务
(一)建立视图(运行并观察结果)
1.建立信息系学生的视图IS_student。
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept='IS'
2.建立信息系选修了1号课程的学生的视图IS_S1。
CREATE VIEW IS_S1(Sno,Sname,Grade)
AS
SELECT Student.Sno,Sname,Grade
FROM Student,SC
WHERE Sdept='IS'AND
Student.Sno=SC.Sno AND
o='1';
3.建立信息系选修了1号课程且成绩在90分以上的学生的视图IS_S2。
CREATE VIEW IS_S2
AS
SELECT Sno,Sname,Grade
FROM IS_S1
WHERE Grade>=90
4.建立一个反映学生出生年份的视图BT_S。
CREATE VIEW BT_S(Sno,Sname,Sbirth)
AS
SELECT Sno,Sname,2004-Sage
FROM Student
5.将学生的学号及他的平均成绩定义为一个视图S_G。
CREATE VIEW S_G(Sno,Gavg)
AS
SELECT Sno,AVG(Grade)
FROM SC
GROUP BY Sno
6.将课程的课号及选修人数定义为一个视图C_XIU。
CREATE VIEW C_XIU(Cno,Scount)
AS
SELECT Cno,COUNT(*)
FROM SC
GROUP BY Cno
(二)查询视图(运行并观察结果)
1.在信息系学生的视图中找出年龄小于20岁的学生。
SELECT Sno,Sage
FROM IS_Student
WHERE Sage<20
2.查询信息系选修了1号课程的学生。
SELECT IS_Student.Sno,Sname
FROM IS_Student,SC
WHERE IS_Student.Sno=SC.Sno AND
o='1'
3.在S_G中查询平均成绩在90分以上的学生的学号和平均成绩。
SELECT*
FROM S_G
WHERE Gavg>=90
4.在C_XIU中查询选修人数在2人以上的课程号。
SELECT Cno
FROM C_XIU
WHERE Scount>=2
(三)更新视图(运行并观察结果)
【注意】数据未更新前,视图IS_Student内的数据:
1.将信息系学生视图IS_Student中学号为95002的学生姓名改为’刘辰’。
UPDATE IS_Student
SET Sname='刘辰'
WHERE Sno='95002'
数据更新后,视图IS_Studnt内数据:
2.向信息系学生视图IS_S中插入一个新的学生记录,其中学号为95029,姓名为赵新,年龄为20。
INSERT
INTO Student(Sno,Sname,Sage,Sdept)
VALUES('95029','赵新',20,'IS')
3.删除信息系学生视图IS_S中学号为95029的记录。
DELETE
FROM IS_Student
WHERE Sno='95029'
(四)删除视图(运行并观察结果)
【注意】没有删除任何视图前,数据SC内所有已建立的视图:
1.删除IS_S1视图。
DROP VIEW IS_S1
2.删除BT_S视图。
DROP VIEW BT_S
将以上SQL语句存盘备查。
【实验报告结束!】
(注:可编辑下载,若有不当之处,请指正,谢谢!)。