my sql实验视图_数据库SQL 视图的创建及使用实验报告(共5篇)

《数据库基础》实验报告

班级__计算机111__学号__xxxxxxxx__姓名__xxx___完成日期____6.20___

实验室 __理工楼310_ 指导老师xxx成绩____100______

实验

四、视图的创建及使用

(一)实验目的

(1)加深对视图的理解。

(2)掌握使用管理工具创建和使用视图的方法。

(3)掌握使用SQL创建和使用视图的方法。

(二)实验内容

(1)使用“图书借阅”数据库,在管理工具中创建视图“借阅_计算机图书”,包含借阅类别为“计算机”的图书的信息:(读者编号,姓名,书号,书名,借阅日期)。

(2)直接使用SQL定义(1)中要求的视图并对其进行查询。

(3)在管理工具中建立各类视图(如单表视图、多表视图、分组视图、基于视图的视图等)。

(4)尝试使用insert、update、delete更新视图。

(三)实验具体步骤

(1)使用“图书借阅”数据库,在管理工具中创建视图“借阅_计算机图书”,包含借阅类别为“计算机”的图书的信息(读者编号,姓名,书号,书名,借阅日期)。 create view 借阅_计算机图书(Duno,Duname,Shuno,Shuname,JYtime)

as

select Duzhe.Duno,Duname,Tushu.Shuno,Shuname, JYtime from Tushu,Duzhe,Jieyue where Duzhe.Duno=Jieyue.Duno and Tushu.Shuno,=Jieyue.Shuno and Liebie='计算机'

(2)直接使用SQL定义(1)中要求的视图并对其进行查询。

select * from 借阅_计算机图书

(3)在管理工具中建立各类视图

用管理工具建立:在管理工具中,打开图书借阅数据库,右击视图,新建视图,然后依照要求建立各种视图。

《数据库基础》实验报告

SQL语句:

create view 单表视图

as

select Shuname,Shuno,Zuozhe from Tushu

create view 多表视图

as

select Shuname,Shuno,Zuozhefrom Tushu,Jieyue

where Tushu.Shuno,=Jieyue.Shuno

create view 分组视图(Shuno,Duno)

as

select Shuno,Duno from Jieyue group by Shuno

create view 基于视图的视图

as

select Duno,Duname,Danwei from 单表视图 where Sex = '男'

(4)尝试使用insert、update、delete更新视图。

insert into 单表视图 values(002,'三星','绍兴文理','男',13456564751)

update 单表视图 set sex='男' where Duname='华为'

delete from 单表视图 where Shuno=1002

(四)实验心得

通过这次实验,对视图有了更深的认识,从视图的创建,插入,修改,查询以及删除都有了详细的认识。视图能够简化用户的操作,好好的学习课程,为以后的课程打下好基础!在实验的过程中也遇到一些问题,但是经过自己的理解以及请教同学把实验完成。

实验十报告 创建视图

实验目的

1.掌握创建视图的SQL语句的用法。

2.掌握使用企业管管理器创建视图的方法。 3.掌握使用创建视图向导创建视图的方法。 4.掌握查看视图的系统存储过程的用法。 5.掌握修改视图的方法。 一. 实验准备

1.了解创建视图方法。

2.了解修改视图的SQL语句的语法格式。 3.了解视图更名的系统存储过程的用法。 4.了解删除视图的SQL语句的用法。 二. 实验要求

1. 用不同的方法创建视图。

2. 提交实验报告,并验收实验结果。 三. 实验内容 1. 创建视图

(1) 使用企业管理器创建视图

① 在EDUC库中以“student”表为基础,建立一个名为“V_计算机系学生”的视图。在使用该视图时,将显示“student”表中的所有字段.

兰州大学数据库实验报告

视图如下:

(2) 使用SQL语句创建视图 ① 在查询分析器中建立一个每个学生的学号、姓名、选修的课名及成绩的视图S_C_GRADE; Create VIEW S_C_GRADE AS

SELECT student.sno,sname,cname,score FROM student,course,student_course WHERE student.sno=student_course.sno AND course.cno=student_course.cno;

视图如下:

②建立一个所有计算机系学生的学号、选修课程号以及平均成绩的视图COMPUTE_AVG_GRADE; Create VIEW COMPUTE_AVG_GRADE AS

SELECT student.sno,course.cno,AVG(score) '平均成绩' FROM student,course,student_course WHERE student.sno=student_course.sno

AND course.cno=student_course.cno AND student.dno='CS' GROUP BY student.sno,course.cno;

视图如下:

2. 修改视图

(1) 使用企业管理器修改视图

在企业管理器中将视图COMPUTE_AVG_GRADE中改成建立在数学系的学生学号、选修课程号以及平均成绩的视图。(IS设为数学系)

(2) 使用SQL语句修改视图

① 在查询分析器中使用更改视图的命令将上面建立的视图“V_计算机系学生”更名为“V_计算机系男生”。

SP_RENAME 'V_计算机系学生','V_计算机系男生';

3. 删除视图

(1) 使用企业管理器删除视图

用企业管理器删除视图“V_计算机系学生”

(2) 使用SQL语句删除视图

用SQL语句删除视图COMPUTE_AVG_GRADE; DROP VIEW COMPUTE_AVG_GRADE;

实验十一 使用视图

一. 实验目的

1. 熟悉和掌握对数据表中视图的查询操作和SQL命令的使用;

2. 熟悉和掌握对数据表中视图的更新操作和SQL命令的使用,并注意视图更新与基本表更新的区别与联系

3. 学习灵活熟练的进行视图的操作,认识视图的作用 二. 实验准备

1.熟悉SQL SERVER 工作环境。 2.能连接到EDUC数据库。

3.复习有关视图操作的SQL语言命令。 三. 实验要求

1. 在实验开始之前做好准备工作。

2. 实验之后提交实验报告,思考视图和基本表的区别 四. 实验内容 一. 定义视图

在EDUC数据库中,已Student Course 和Student_course 表为基础完成一下视图定义 1. 定义计算机系学生基本情况视图V_Computer;

CREATE VIEW V_Computer AS SELECT student.* FROM student WHERE student.dno='CS';

视图如下:

2. 将Student Course 和Student_course表中学生的学号,姓名,课程号,课程名,成

绩定义为视图V_S_C_G CREATE VIEW V_S_C_G AS SELECT student.sno,sname,course.cno,course.cname,score FROM student,course,student_course WHERE student.sno=student_course.sno course.cno=student_course.cno;

AND

视图如下:

3. 将各系学生人数,平均年龄定义为视图V_NUM_AVG CREATE VIEW V_NUM_AVG AS SELECT COUNT(dno) '各系人数',AVG(sage) '平均年龄' FROM student GROUP BY dno;

视图如下:

4. 定义一个反映学生出生年份的视图V_YEAR CREATE VIEW V_YEAR AS SELECT sname,2014-sage '出生年份' FROM student;

视图如下:

5. 将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G

CREATE VIEW V_AVG_S_G AS SELECT student.sno '学号',sname '姓名',COUNT(*) '选修门数',AVG(score) '平均成绩' FROM student,student_course WHERE student.sno=student_course.sno GROUP BY student.sno,sname;

视图如下:

6. 将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G CREATE VIEW V_AVG_C_G AS SELECT cno '课程号',COUNT(cno) '选修人数',AVG(score) '平均成绩' FROM student_course GROUP BY cno;

视图如下:

二. 使用视图

1. 查询以上所建的视图结果。

所建视图结果如上题截图所示

2. 查询平均成绩为90分以上的学生学号、姓名和成绩;

SELECT 学号,姓名,平均成绩 FROM V_AVG_S_G WHERE 平均成绩>90;

3. 查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩;

SELECT V_S_C_G.sno,V_S_C_G.sname,V_S_C_G.cname,V_S_C_G.score FROM V_S_C_G,V_AVG_S_G WHERE V_S_C_G.sno=V_AVG_S_G.学号 AND V_S_C_G.score>V_AVG_S_G.平均成绩;

4. 按系统计各系平均成绩在80分以上的人数,结果按降序排列;

1.先创建学生学号-系别视图V_STUDENT CREATE VIEW V_STUDENT AS SELECT sno,dno FROM student; 2.进行查询

SELECT V_STUDENT.dno '系别',COUNT(V_STUDENT.sno) '人数' FROM V_STUDENT,V_AVG_S_G WHERE V_STUDENT.sno=V_AVG_S_G.学号 AND V_AVG_S_G.平均成绩>80 GROUP BY V_STUDENT.dno;

三. 修改视图 并查询结果; UPDATE V_IS SET sname='S1_MMM' WHERE SNO='32011'; UPDATE V_IS SET sname='S4_MMM' WHERE SNO='32014'; SELECT * FROM V_IS WHERE sno='32011' OR sno='32014'; 1. 通过视图V_IS,分别将学号为“S1”和“S4”的学生姓名更改为“S1_MMM”,”S4_MMM”

2. 通过视图V_IS,新增加一个学生记录 ('S12','YAN XI',19,'IS'),并查询结果

INSERT INTO V_IS(sno,sname,sex,dno,sage) VALUES('S12','YAN XI','女','IS','19') SELECT *

FROM V_IS

WHERE sno='S12';

3. 要通过视图V_AVG_S_G,将学号为“S1”的平均成绩改为90分,是否可以实现?并说明原因

答:不能实现,因为视图或函数'V_AVG_S_G' 包含聚合、DISTINCT 或GROUP BY 子句或者PIVOT 或UNPIVOT 运算符,所以无法进行更新。

UPDATE V_AVG_S_G SET 学号='32011' WHERE 平均成绩='90';

实验十二 更新语句

一. 实验目的

1. 熟悉使用UPDATE/INSERT/DELETE语句进行表操作; 2. 能将这些更新操作应用于实际操作中去; 二. 三. 实验准备 实验要求 1.了解这些更新语句的基本语法和用法; 1. 完成下面的实验内容,并提交实验报告; 2. 在实验报告中附上相应的代码; 四. 实验内容

1. 对于student表,将所有专业号为‘001’的,并且入学年份为2006的学生,或是专业号为‘003’,并且年龄小于20岁的学生的班级号改为‘001’。

UPDATE student SET classno='001'

WHERE (mno='001'AND YEAR(sctime)='2006')OR(mno='003'AND (year(getdate())-year(sdate))<20);

2. 对于student表,删掉所有年龄小于20岁,并且专业号为‘003’的学生的记录。

DELETE FROM student WHERE mno='003'AND (year(getdate())-year(sdate))<20

3. 对于student表,插入一条新记录,它的具体信息为,学号:20071100

11、姓名:张

三、性别:男、出生日期:1988080

8、院系编号:‘001’、专业编号: ‘001’、班级号:‘001’、入学时间:20070901。 INSERT INTO student(sno,sname,sex,sdate,dno,mno,classno,sctime) VALUES('2007110011','张三','男','1988-8-8','001','001','001','2007-9-1');

4. 对于student表,将入学时间最晚的学生和年龄最小的学生的联系方式去掉。

UPDATE student SET tel=null

WHERE sctime>=ALL(select sctime FROM student) OR year(sdate)>=ALL(select year(sdate) from student)

5. 对于student表,将平均年龄最小的一个院系的院系编号改为‘008’。

UPDATE student SET dno='008' where dno in( SELECT top 1 dno FROM student

GROUP BY dno

ORDER BY AVG(year(getdate())-year(sdate)) )

T-SQL编程

一、【实验目的】

1、掌握T_SQL编程的基本语法

2、常用函数的使用方法

二、【实验要求】

1、使用查询分析器练习T-SQL编程方法

2、练习函数的使用

三、【实验准备】

1、复习与本次实验内容相关知识

2、预习相关函数(请预查阅CONVERT、DATENAME、GFTDATE函数的用法)

四、【实验内容】

1、条件结构

自己编写一段程序判断一个年份(比如1900年)是否是闰年,是则显示1900年为闰年,否则显示1900年不是闰年.

DECLARE @year INT SELECT @year=2014 if @year%4=0 and @year%100<>0 print CONVERT(CHAR(4),@year)+'是闰年' else print CONVERT(CHAR(4),@year)+'不是闰年'

2、循环结构 (1)下面是计算1~100和的循环结构,执行之,体会循环结构程序,注意语句块标志BEGIN ... END

DECLARE @SUM INT,@I INT SELECT @I=1,@SUM=0 WHILE @I<=100 BEGIN SELECT @SUM=@SUM+@I SELECT @I=@I+1 END PRINT '1...100的和为:'+CONVERT(CHAR(4),@SUM)

(3) 编写一个程序用于计算10的阶乘

DECLARE @SUM INT,@I INT SELECT @I=1,@SUM=1 WHILE @I<=10 BEGIN SELECT @SUM=@SUM*@I SELECT @I=@I+1 END PRINT '阶乘!的结果为:'+CONVERT(CHAR(10),@SUM)

(4) 自己编制一个程序,要求其能打印出100内的素数(只能被其自身和1整除的数).--循环结构+条件结构

SELECT main.number FROM master..spt_values AS main WHERE type='P'

AND number BETWEEN 3 AND 100 AND NOT EXISTS ( SELECT 1 FROM master..spt_values AS sub WHERE

type='P'

AND sub.number BETWEEN 2 AND main.number - 1 AND main.number % sub.number = 0)

3、CASE结构

(1)下面SQL查询图书的信息,并根据图书定价判断是否适合作为教材

select 书名, 出版社, 作者, case

when 定价>50 then '定价太高,不适合作教材'

else '定价' + CAST(定价 as varchar(5)) + ',可以作教材'

end 可否作为教材 from 图书

(2) 请自己编程实现各位同学的成绩以等级分显示即:90分及以上为优,80分及以上到90以下为良,70分及以上到80分以下为中,60分及以上到70分以下为及格,其余为不及格. SELECT student.sno ,sname ,cname, CASE WHEN student_course.score >=90 THEN '优' when student_course.score>=80 and student_course.score <=90 THEN '良'

when student_course.score>=70 and student_course.score <=80 THEN '中'

when student_course.score>=60 and student_course.score<=70 THEN '及格'

else '不及格' END GRADE FROM student_course,course,student WHERE student_course.cno=course.cno AND student_course.sno=student.sno

4、函数使用

下面查询,显示当前日期,显示格式为:"今天是XXXX年XX月XX日,星期X",执行之,体会系统函数的用法.

SELECT '今天是'+DATENAME(YEAR,GETDATE())+'年' +DATENAME(MONTH,GETDATE())+'月' +DATENAME(DAY,GETDATE())+'日,' +DATENAME(WEEKDAY,GETDATE())

实验四使用SQL语句修改SQL Server数据库

1、实验目的:

(1) 了解SQL Server数据库的逻辑结构和物理结构;

(2) 掌握使用SQL语句修改数据库的方法;

2、实验准备:

(1)要明确能够修改数据库的用户必须是系统管理员,或者是被授权使用CREATE DATABASE语句的用户;

(2)修改数据库必须要明确:除存储位置,即物理文件名不能修改外,其它项均可以修改,包括数据库名、数据库大小和增长量等数据;

(3)了解使用SQL语句修改数据库的方法。

3、实验内容:

(1)删除实验三中创建的数据库;

(2)用自己名字创建一个数据库,包含一个主数据文件data1和一个日志文件log1,最大值都是5M;增长量分别为10%和1M;存储在自己的文件夹下;

(3)添加一个数据文件data2,最大值为3M;

(4)添加一个日志文件log2,最大值为4M;

(5)添加一个文件组group1;

(6)添加一个次数据文件data3放在文件组group1中;

(7)修改数据文件data2,将最大值改为5M;

(8)删除日志文件log1;

(9)删除次数据文件data

3、data2;

(10)修改文件组,将group1改名为group2;

(11)删除文件组group2;

(12)将log2的增长量改为1M。

(13)缩小该数据库的大小,保留自由空间1M,保留释放的文件空间。

(14)将数据库的日志文件log2缩小到3M。

(15)将数据库更名为stud+自己的名字。

实验2SQL Server数据库的管理

1.实验目的

(1)了解SQL Server 数据库的逻辑结构和物理结构的特点。

(2)掌握使用SQL Server管理平台对数据库进行管理的方法。

(3)掌握使用Transact-SQL语句对数据库进行管理的方法。

2.实验内容及步骤

(1)在SQL Server管理平台中创建数据库。

① 运行SQL Server管理平台,在管理平台的对象资源管理器中展开服务器。

② 右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。在新建数据库对话框的数据库名称文本框中输入学生管理数据库名studentsdb,单击“确定”按钮。

(2)选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“文件”、“文件组”、“选项”、“权限”和“扩展属性”等页面。

(3)打开studentsdb数据库的“属性”对话框,在“文件”选项卡中的数据库文件列表中修改studentsdb数据文件的“分配的空间”大小为2MB。指定“最大文件大小”为5MB。修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。

(4)单击“新建查询”打开查询设计器窗口,在查询设计器窗口中使用Transact-SQL语句CREATE DATABASE创建studb数据库。然后通过系统存储过程sp_helpdb查看系统中的数据库信息。

(5)在查询设计器中使用Transact-SQL语句ALTER DATABASE修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。

(6)在查询设计器中为studb数据库增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。

(7)使用SQL Server管理平台将studb数据库的名称更改为student_db。

(8)使用Transact-SQL语句DROP DATABASE删除student_db数据库。

3.实验思考

(1)数据库中的日志文件是否属于某个文件组?

(2)数据库中的主数据文件一定属于主文件组吗?

(3)数据文件和日志文件可以在同一个文件组吗?为什么?

(4)删除了数据库,其数据文件和日志文件是否已经删除?是否任何人都可以删除数据库?

(5)能够删除系统数据库吗?

数据库原理及实验报告

实验6 视图

实验目的:1)掌握交互式创建、删除视图的方法

2)掌握使用SQL创建、删除视图的方法

3)掌握交互式更新视图的方法

4)掌握使用SQL更新视图的方法 实验内容

6.1实验题目:创建视图

实验过程:1)交互式创建视图VIEW_S

2)交互式创建成绩视图VIEW_SCORETABLE

3)使用SQL创建课程表视图VIEW_CTABLE

实验结果:

6.2实验题目:修改视图

实验过程:1)使用交互式方法把视图VIEW_S中的字段SNO删掉

2)使用SQL为视图VIEW_CTABLE增加一个课时字段CT tiny int

实验结果:

6.3实验题目:通过视图修改数据库数据

实验过程:1)交互式通过修改视图VIEW_S中的数据来实现对其基本表S中数据的修改

2)对视图VIEW_S执行INSERT语句,查看此视图的基本表S中数据的变化

3)修改视图VIEW_S的定义,使其包含表S中的主键,再执行插入操作

4)用SQL语句对视图VIEW_S执行DELETE操作,查看此视图的基本表S中数据的变化 实验结果:

6.4实验题目:删除视图

实验过程:1)交互式删除视图VIEW_S

2)使用SQL删除视图VIEW_CTABLE

实验结果:

实验7 数据查询

实验目的:1,掌握从简单到复杂的各种数据查询。包括,单表查询、多表连接查询、嵌套查询、集合查询。

2,掌握用条件表达式表示检索结果。

3,掌握用聚合函数计算统计检索结果。 实验7.1 单表查询

实验目的:1,掌握指定列或全部列查询。

2,掌握按条件查询。

3,掌握对查询结果排序。

4,掌握使用聚集函数的查询。

5,掌握分组统计查询。 实验内容:1,指定或全部列查询。

2,按条件查询及模糊查询。

3,对查询结果排序。

4,使用聚集函数的查询。

5,分组统计查询。

实验7.2 连接查询 实验目的:掌握设计一个以上数据表的查询方法。多表之间的连接包括等值连接、自然连接、非等值连接、自身连接、自身连接、外连接和复合连接。

实验内容:1,连接查询,查询所有选课学生的学号、姓名、选课名称及成绩。

查询每门课程的课程号、任课教师姓名及其选课人数。

2,自身连接,查询所有比刘伟工资高的的教师的姓名、工资及刘伟的工资。

查询同时选修了程序设计和微机原理的学生的姓名、课程号。

3,外连接,查询所有学生的学号、姓名、选课名称及成绩(没有选课的学生的

选课信息显示为空)

实验结果

实验7.3 嵌套查询

实验目的:掌握嵌套查询使我们可以用多个简单查询构成复杂的查询。从而增强了SQL的查询能力。

实验内容:1,返回一个值的子查询,查询与刘伟教师职称相同的教师号、姓名和职称。

2,返回一组值的子查询,使用ANY谓词查询讲授课程号为C5的教师姓名。 使用IN谓词查询讲授课程号为C5的教师姓名。使用ALL谓词查询其他系中比计算机系所有教师工资都高的教师的姓名、工资、使用EXISTS谓词查询没有讲授课程号为C5的课程的教师姓名、所在系.使用NOT EXISTS谓词查询至少选修了学生S2选修的全部课程的学生的学号。 实验结果

实验7.4 集合查询

实验目的:掌握使用UNION操作符将来自不同查询但结构相同的数据集合组合起来,形成一个具有综合信息的查询结果。

实验内容:查询年龄不大于19岁或者属于计算机系的学生,步骤如下:打开新建查询窗口,创建SQL语句。执行语句。

实验结果

实验十.T-SQL程序设计与游标设计

实验目的

掌握Transact-SQL语言及其程序设计的方法 掌握T-SQL游标的使用方法

实验10.1 T-SQL程序设计逻辑 实验目的

掌握T-SQL程序设计的控制结构及程序设计逻辑 实验内容

(1) 计算1~100之间所有能被3整除的数的个数和总和。

(2) 从学生表S中选取SNO,SN,SEX,如果为“男”则输出M,如果为“女”则输出F。 实验 10.2 面向复杂T-SQL程序设计 实验目的

掌握面向复杂应用的T-SQL程序设计方法。 实验内容

(1) 从教学数据库jxsk中查询所有同学选课成绩情况:姓名,课程名,成绩。要求:凡成绩为空者输出“未考”;小于60分的输出“不及格”;60~70分的输出“及格”;70~80分的输出“中”;80~90分输出“良好”;90~100分输出优秀。并且输出记录按照下面要求排序:先按SNO升序,再按CNO升序,最后按成绩降序。

(2) 现给教师增加工资。要求:必须任两门以上课程且涨幅按总收入分成三个级别:4000元以上涨300;3000元以上涨200;3000元以上涨100。只任一门课程的涨50.其他情况不涨。

实验 10.2 使用游标 实验目的

学习和理解关系数据中游标的概念和设计思想。 掌握使用T-SQL游标处理结果集的方法。 实验内容

针对数据库jiaoxuedb,进行下面的实验:

(1).定义一个游标Cursor_Famale。要求该游标返回所有女同学的基本信息,在游标中查找并显示牛莉的记录。 (2).创建一个一个储存过程Pro_C,返回一个包含所有选修数据库课程的学生基本信息的游标。利用该存储过程,通过学生姓名查找学生王一山是否选修了数据库课程以及成绩。

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页

打赏作者

Magic Tour

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值