实验题目:SQL查询——简单查询【实验目的与要求】一、实验目的1.熟练掌握单表查询的SELECT语法结构;2.通过观察查询结果,体会SELECT语句的实际应用。二、实验要求1.实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作。2.能认真独立完成实验内容。3.实验后做好实验总结,根据实验情况完成实验报告。【实验环境】PC机、WindowsXP系统+SQLServer2005【实验内容】基于实验一建立的EDUC数据库,用Transact-SQL语句实现如下查询:1.选修了课程的学生学号;2.计算机系的学生;3.计算机系学生的学号和姓名;4.计算机系和信息系的男生信息;(提示:逻辑运算符的优先级顺序)5.选修上课编号为1且成绩在80-90之间的学生学号和成绩,并将成绩乘以系数0.75输出;(提示:新输出项要命名列标题)6.没有成绩的学生的学号和上课编号;7.选修上课编号为1或4的学生的学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列;(提示:查询输出哪几项)8.1995年1月1日(含)以后出生的学生信息,并按姓氏拼音字母顺序从前往后排列(注:默认排序规则通常是Chinese_PRC_CI_AS,汉字按照汉语拼音的字典顺序来排序:首先按拼音,拼音相同按声调,声调相同按笔画数。)9.姓李和刘的学生的信息;10.不姓张王李刘的学生的学号、姓名和性别;11.选修课程的学生人数;12.选修上课编号为1的学生的最高分;13.每位学生所修课程的平均分;14.选修两门以上课程的学生;15.总成绩大于200分的学生的学号和总成绩。(提示:groupby分组统计)【实验方法和步骤】1.新建查询,在查询编辑器中依次按照如上实验内容编写SELECT语句完成查询。2.每执行一条查询语句,在查询结果网格中查看执行结果是否正确。【实验结果】SELECTDISTINCTSnoFROMStudent_courseSELECT*FROMStudentWHEREDno='计算机'SELECTSno,SnameFROMStudentWHEREDno='计算机'SELECT*FROMStudentWHERESex='男'ANDDnoIN('计算机','信息')SELECTSno,0.75*ScoreAS成绩FROMStudent_courseWHERETcid=1ANDScoreBETWEEN80AND90SELECTSno,ScoreFROMStudentWHERE(Tcid=1ORTcid=4)ORDERBYScoreDESC,SnoSELECT*FROMStudentWHEREbirthday='1995-1-1'ORDERBYsnameASCSELECT*FROMStudentWHEREsnamelike'[李刘]%'SELECTsno,sname,sexFROMStudentWHEREsnamelike'[^张王李刘]%'SELECTCOUNT(DISTINCTsno)AS选课人数FROMStudent_courseSELECTMAX(Score)AS最高分FROMStudent_courseWHERETcid=1SELECTSno,AVG(Score)AS平均分FROMStudent_courseGROUPBYSnoSELECTSno,COUNT(DISTINCTTcid)AS选课门数FROMStudent_courseGROUPBYSnoHAVINGCOUNT(Tcid)2SELECTSno,SUM(score)AS总成绩FROMStudent_courseGROUPBYSnoHAVINGSUM(score)=200ORDERBY总成绩DESC【实验体会】利用SELECT语句可以实现对已有表中数据的查询的。通过实验让我对SELECT语句的应用有了更深的理解,当输出表中的几列数据时只需要将输出地列列出即可,如需要将表中的数据按列的显示顺序依次输出则可以简单地在目标列名序列中写“*”,DISTINCT关键字可以去掉查询结果中重复行。DISTINCT关键字放在SELECT词的后面、目标列名序列的前边。用WHERE语句查询满足条件的元组,ORDERBY语句进行排序,GROUPBY语句进行分组,用BETWEEN下限值AND上限值确定范围,用IN确定某一属性是否在某一集和范围,用LIKE进行字符串匹配,此外还可以用各种聚合函数进行数据的汇总,在实验中加强了我对这些语句用法的记忆和掌握。实验者: