实验报告一

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

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

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

资源描述

一、实验目的1、实验目的(1)、掌握利用各种数据类型声明局部变量的方法。(2)、掌握为局部变量赋值的俩中方法。(3)、掌握常用系统函数、运算符和表达式的功能和应用。(4)、掌握Transact-SQL控制流语言的基本功能和分类。(5)、掌握利用控制流语句实现基本的分支选择和循环处理功能。(6)、了解其他控制流语句的功能和应用。(7)、掌握SELECT各个字句的功能和检索数据的方法。(8)、掌握WHERE字句中LIKE、IN、BETEEN、IS等逻辑运算符的使用。(9)、掌握COMPUTE语句和聚合函数的使用。二、实验内容和步骤1、变量的应用declare@snochar(8),@namevarchar(10),@sexnchar(12),@birthdaydatetime,@usuallyint,@finalnumeric(4,1)set@sno='32145467';set@name='哈哈';set@sex='男';select@birthday='1989-03-09',@usually=90,@final=80print@sno+@name+@sexprint@birthdayprint@usuallyprint@final2、运算符的应用A、比较运算符useteachinggoselect*fromstudentwherebirthday'1989-01-01'select*fromteacherwheredepartment'计算机学院'B、逻辑运算符useteachinggoselect*fromscorewherestudentnolike'09%'andfinalbetween60and90------------------------select*fromteacherwhereprofin('教授','副教授')C、“+”号运算符:declare@achar(5),@bvarchar(5),@cint,@ddecimal(5,2)select@a='123',@b='456.5',@c=321,@d=564.4print@a+@bprint@a+@dprint@c+@dselect@a='数据库',@b='程序开发'print@a+@bprint@a+@dD、位运算符declare@aint,@bintselect@a=5,@b=12select@a&@b,@a|@b,@a^@b,~@aE、数学函数selectceiling(16.3),ceiling(-16.8),ceiling(0.0)//向上取整selectfloor(16.3),floor(-16.8),floor(0.0)//四舍五入selectround(123.456,2),round(123.456,-1),round(173.456,-2),round(123.456,-4)//第二个数字是四舍五入的位数,当负数时是“.”的左边selectround(175.86,0),round(175.86,0,1)F、时间日期函数declare@birthdaydatetimeset@birthday='1989-08-21'select@birthdayas'生日',datediff(year,@birthday,getdate())as'年龄'selectgetdate()as'当前日期',year(getdate())as'年份',datepart(month,getdate())as'月份',datename(day,getdate())as'日期'G、转换函数declare@countint,@datedatetimeselect@count=255,@date=getdate()print'变量count的值为:'+cast(@countasvarchar(5))printcast('2009-7-07'assmalldatetime)+100printconvert(varchar(10),@date,102)H、字符函数declare@strasnchar(25)set@str='SQLSERVER2005数据库应用与开发'selectlen(@str),charindex('库应用',@str),substring(@str,5,6),replace(@str,'开发','设计'),lower(@str),ascii(@str)3、编写程序,根据姓名查询teaching数据库中学生的基本信息和选课信息,学生姓名通过变量输入。对于不存在的学生姓名输入值,打印提示信息。useteachinggodeclare@snamenchar(8)set@sname='许海冰'ifexists(select*fromstudentwheresname=@sname)selectstudent.*,courseno,usually,finalfromstudent,scorewherestudent.studentno=score.studentnoandsname=@snameelseprint'提示:不存在姓名为'+rtrim(ltrim(@sname))+'的学生资料'4、编写程序,查询所以学生选修课的期末成绩和对应等级,如学生末选修任何课程则输出提示信息。useteachinggoselectstudent.studentno,sname,cname,final,casewhenfinal=90then'优'whenfinal=80then'良'whenfinal=70then'中'whenfinal=60then'及格'whenfinal60then'不及格'whenfinalisnullthen'未选修任何课程'endaslevelfromstudentleftjoinscoreon(student.studentno=score.studentno)leftjoincourseon(course.courseno=score.courseno)5、编写程序,判断字符变量@ch中存放的是字母字符、数字字符还是其他字符,并输出相关的信息。declare@chcharselect@ch='d'ifupper(@ch)='A'andupper(@ch)='Z'print@ch+'是字母字符'elseif@ch='0'and@ch='9'print@ch+'是数字字符'elseprint@ch+'是其他字符'当@ch='3'时,当@ch='#'时,6、编写程序,判断某个年份是否为闰年,年份由变量输入。declare@yearintset@year=year(getdate())if@year%4=0beginif@year%100=0beginif@year%400=0printcast(@yearaschar(4))+'年是闰年'elseprintcast(@yearaschar(4))+'不年是闰年'endelseprintcast(@yearaschar(4))+'年是闰年'endelseprintcast(@yearaschar(4))+'不年是闰年'7、编写程序,输出在1~3000之间能被17整除的最大数值。declare@sint,@iintselect@s=0,@i=3000while@i1beginif@i%17=0beginprint'1~3000之间能被整除的最大数值为:'+cast(@iaschar(4))breakendset@i=@i-1End8、查询所有课程的课程编号、课程号和学分useteachinggoselectcourseno,cname,creditfromcourse9、查询‘090501’班的所有学生的基本信息。useteachinggoselect*fromstudentwhereclassno='090501'10、查询student表中所有年龄大于20岁的男生的名字和年龄。useteachinggoselectsname,datediff(year,birthday,getdate())asagefromstudentwheredatediff(year,birthday,getdate())20andsex='男'11、查询计算机学院教师的专业名称。useteachinggoselectdistinctmajorfromteacherwheredepartment='计算机学院'12、查询选修课程且期末成绩不为空的学生人数。useteachinggoselectcount(distinctstudentno)as'选修课程学生的人数'fromscorewherefinalisnotnull13、查询Email使用126邮箱的所有学生的学号、姓名和电子邮箱地址。useteachinggoselectstudentno,sname,emailfromstudentwhereemaillike'%@163.com%'14、查询每名学生的学号、选修课程数目、总成绩,并将查询结果存放到生成的“学生选课统计表”.方法一:useteachinggocreatetable学生选课统计表(studentnonchar(10)notnull,amountsmallintnull,sumsmallintnull,)insertinto学生选课统计表selectstudent.studentno,count(courseno)as'选修课程数目',sum(final)as'总成绩'fromstudentleftjoinscoreon(student.studentno=score.studentno)groupbystudent.studentno方法二:useteachinggoselectstudentno,count(courseno)as'选修课程数目',sum(final)as'总成绩'into学生选课统计表fromscoregroupbystudentno-------------------------------------select*from学生选课统计表selectsname,courseno,finalfromstudent,scorewhere(courseno='c05109'orcourseno='c05103')andstudent.studentno=score.studentnoandfinalbetween90and10015、查询score表中选修‘c05109’或‘c05103’课程,并且课程期末成绩在90~100分之间的学生姓名和期末成绩。useteachinggoselectsname,finalfromscore,studentwherefinalbetween90and100andcoursenoin('c05109','c05103')andstudent.studentno=score.studentno16、查询student表中所有学生的基本信息,查询结果按班级号classno升序排序,同一班级中的学生按入学成绩point降序排列。select*fromstudentorderbyclassnoasc,pointdesc17、查询选修‘c05109’课程,并且期末成绩在5名的学生学号、课程号和期末成绩。selecttop2studentno,courseno,finalfromscorewherecourseno='c05109'orderbyfinaldesc18、查询各班学生的人数。selectclassno,count(*)fromstudentgroupbyclassno19、查询各班期末成绩的最高分和最低分。selectcourseno,max(final)as'最高分',min(final)as'最低分'fromscorewherefinalisnotnullgroupbycourseno20、查询教

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

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

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

×
保存成功