数据库实验报告3

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

3Dsmax实验报告专业班级学号姓名实验名称Transact-SQL程序设计实验目的1.掌握分支与循环结构的使用2.掌握游标的使用3.掌握SQLServer全局变量和局部变量特点4.掌握流控制语句if…else基本语法实验内容及过程1.在查询分析器中,选择studentsdb数据库,在学生表中查找姓“张”的学生,并将该生姓名赋于变量@stu_name。(1)、首先查看姓张的学生有多少个代码如下:select姓名from学生表where姓名like'张%'结果如下:(2)、再选择要查看的学生,并将姓名赋给变量(本例选择第一个学生)代码如下:declare@stu_namevarchar(10)select@stu_name=姓名from学生表where姓名like'张卫民'select@stu_nameas姓名结果如下:3Dsmax实验报告2.定义int型局部变量@grademax、@grademin、@gradesum,在成绩表中查找课程编号是“C002”课程的最高分、最低分和总分,分别赋给@grademax、@grademin和@gradesum,并显示。代码如下:declare@grademaxint,@grademinint,@gradesumintselect@grademax=max(分数),@grademin=min(分数),@gradesum=sum(分数)from成绩表where课程编号='0002'select@grademaxas最高分,@grademinas最低分,@gradesumas总分结果如下:3.使用SET命令将查询结果集记录数目赋值给int型局部变量@row。给下面代码中的划线处填上适当的内容,以完成上述操作。DECLARE@rowsintSET@rows=(SELECTCOUNT(*)FROM成绩表)select@rows结果如下:4.以下代码在课程表中插入新记录:DECLARE@intCIdint,@intErrorCodeintINSERTINTO课程表(课程编号,课程名称,学分)VALUES('0006','VB程序设计',2)SELECT@intCId=@@identity,@intErrorCode=@@errorSELECT@intCId,@intErrorCode将该代码段连续执行两次,观察两次显示的信息及课程表中数据的变化,为什么前后两次执行时显示的信息会不同?答:前后二次执行显示的结果分别如下:3Dsmax实验报告前后二次课程表中数据的变化:前后二次出现不同的原因:@@identity表示上次使用insert操作中使用的identity的值,@@error表示前一条SQL语句报告的错误号,当第一次执行插入语句后,在课程表中就添加了新数据,当第二次执行相同的操作时,由于已经存在了相同的记录,系统将会报错,这样就会将错误号赋值给@@error,@@error又将错误号赋值给intErrorCode,所以导致前后二次出现的结果不同。5.在studentsdb数据库的学生表中,以“性别”为分组条件,分别统计男生和女生人数。代码如下:declare@mansumint,@womansumintset@mansum=(selectcount(性别)from学生表where性别='男'groupby性别)set@womansum=(selectcount(性别)from学生表where性别='女'groupby性别)select@mansumas男生人数,@womansumas女生人数结果如下:3Dsmax实验报告6.在成绩表中,使用适当函数找出“高等数学”课程的最高分、最低分和平均分,并分别赋予@grademax、@grademin、@gradesum。代码如下:declare@grademaxint,@grademinint,@gradesumintselect@grademax=max(分数),@grademin=min(分数),@gradesum=sum(分数)from成绩表where课程编号='0002'select@grademaxas最高分,@grademinas最低分,@gradesumas总分结果如下:7.定义一个datetime型局部变量@studate,以存储当前日期。计算学生表中的学生的年龄,并显示学生的姓名、年龄。在以下代码的划线部分填人适当内容,以实现上述功能。DECLARE@studatedatetimeSET@studate=getdateSELECT姓名,year(getdate)-year(出生日期)AS年龄FROM学生表结果如下:8.请用单行注释将下列命令行所实现的功能予以注释(填入括号内)。(--将所有姓陈的同学的姓名和家庭地址列出来)SELECT姓名,家庭地址3Dsmax实验报告FROM学生表WHERE姓名LIKE'陈%‘运行结果如下:9.请用多行注释将下列命令行所实现的功能予以注释(填入括号内)。(/*将所有出生年月在1980年以后(不包含1980年)的学生的姓名,性别,出生年月,家庭地址列出来*/)SELECT姓名,性别,出生年月,家庭地址FROM学生表WHEREYEAR(出生年月)1980运行结果如下:10.在局部变量@stu_id记中存储了学号值。编写代码查询学号为0001的学生的各科平均成绩,如果平均分=60则显示“你的成绩及格了,恭贺你!!”,否则显示“你的成绩不及格”。代码如下:declare@stu_idchar(4)if((selectavg(分数)from成绩表where@stu_id='0001')60)print'你的成绩不及格!'elseprint'你的成绩及格了,恭喜你!'结果如下:3Dsmax实验报告11.运行以下代码段,写出运行的结果。DECLARE@counterintSET@counter=1while@counter10beginselect'@counter的值现在为:'+CONVERT(CHAR(2),@counter)set@counter=@counter+1END运行结果:12.编写程序查询成绩表。如果分数大于等于90,显示优秀;如果分数大于等于80小于90显示良好;如果分数大于等于70小于80显示中等;如果分数大于等于60小于70显示及格,其他显示不及格。代码如下:select学号,分数,casewhen分数=90then'优秀'when分数=80and分数90then'良好'when分数=70and分数80then'中等'when分数=60and分数70then'及格'else'不及格'3Dsmax实验报告endas等级from成绩表结果如下:13.计算grade表的分数列的平均值。如果小于80,则分数增加其值的5%;如果分数的最高值超过95,则终止该操作。在以下代码划线处填入适当的内容以完成上述功能。WHILE(SELECTAVG(分数)FROM成绩表)80BEGINUPDATE成绩表SET分数=分数+分数*0.05IF(SELECTMAX(分数)FROM成绩表)95BREAKELSECONTINUEEND运行结果如下:(添加selectAVG(分数),MAX(分数)from成绩表语句验证结果的正确性)3Dsmax实验报告四、实验思考1.编写代码计算并显示@n=1+2+3+…+20。程序代码如下:declare@nint,@countintset@count=0set@n=0while(@count=20)beginset@count=@count+1set@n=@n+@countendselect@nas总和运行结果:2.区分局部变量与全局变量的不同,思考全局变量的用处。答:局部变量就是在当前批处理中有效的变量,批处理完成就删掉。全局变量就是在整个MSSQL中都可以访问到的变量。全局变量的作用:全局变量通常存储一些SQLServer的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。实验总结access--中小型数据库开发系统,内嵌vba编程语言,面向对象编程excel--数据表格处理系统,编程能力有限.access是数据库管理软件,内含的是数据库(基本对象),一个数据库包含多张表主要用于开发系统,日常办公用起来不方便,他主要是做软件的后台的。而excel只是一般的表格处理软件,主要用于一些日常的办公而已两都所用到的地方不一样。3Dsmax实验报告

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功