实验3数据查询1.实验目的(1)掌握使用Transact-SQL的SELECT语句进行基本查询的方法。(2)掌握使用SELECT语句进行条件查询的方法。(3)掌握SELECT语句的GROUPBY、ORDERBY以及UNION子句的作用和使用方法。(4)掌握嵌套查询的方法。(5)掌握连接查询的操作方法。2.实验内容及步骤请先附加studentsdb数据库,然后完成以下实验。简单查询:(1)在studentsdb数据库中,使用下列SQL语句将输出什么?请用文字描述SELECTCOUNT(*)FROMgrade答:SELECTYEAR(GETDATE()),MONTH(GETDATE()),DAY(GETDATE())答:(无列名)(无列名)(无列名)2015114(2)①在student_info表中,查询每个学生的学号、姓名、出生日期信息。答:select学号,姓名,出生日期fromstudent_info②查询学号为‘0001’的学生的姓名和家庭住址。答:select姓名,家庭住址fromstudent_infowhere学号='0001'③找出所有男同学的学号和姓名。答:select学号,姓名fromstudent_infowhere性别='男'(3)①在grade表中查找分数在‘80~90’范围内的学生的学号和分数。答:select学号,分数fromgradewhere分数between80and90②在grade表中查询课程编号为k003的学生的平均分。答:select课程编号,avg(分数)平均分fromgradegroupby课程编号having课程编号='k003'③在grade表中查询学习各门课程的人数。答:select课程编号,count(学号)fromgradegroupby课程编号④将学生按出生日期由大到小排序。答:select姓名,出生日期fromstudent_infoorderby出生日期desc⑤查询所有姓“张”的学生的学号和姓名。答:select学号,姓名fromstudent_infowhere姓名like'张%'(4)对student_info表,按性别顺序列出学生的学号、姓名、性别、出生日期及家庭住址,性别相同的按学号由小到大排序。答:select学号,姓名,性别,出生日期,家庭住址fromstudent_infoorderby性别,学号(5)使用GROUPBY查询子句,列出各个学生的平均成绩。答:select学号,avg(分数)平均成绩fromgradegroupby学号(6)使用UNION运算符将student_info表中姓“张”的学生的学号、姓名与curriculum表的课程编号、课程名称返回在一个表中,且列名为u_编号、u_名称,答:select学号asu_编号,姓名asu_名称fromstudent_infowhere姓名like‘张%’unionselect课程编号asu_编号,课程名称asu_名称fromcourse_info图1-8联合查询结果集嵌套查询:(7)①在student_info表中查找与“刘卫平”性别相同的所有学生的姓名、出生日期。--select*fromstudent_info答:select姓名,出生日期fromstudent_infowhere性别='男'(select性别fromstudent_infowhere姓名='刘卫平')②使用IN子查询查找所修课程编号为k002、k005的学生学号、姓名、性别。答:select课程编号fromcourse_infowhere课程编号='k002'or课程编号='k005'③列出学号为’0001’的学生的分数比’0002’学号的学生的最低分数高的课程编号和分数。答:select课程编号,分数fromgradewhere学号='0001'and分数any(select分数fromgradewhere姓名='0002')④列出学号为’0001’的学生的分数比学号为’0002’的学生的最高成绩还要高的课程编号和分数。答:select课程编号,分数fromgradewhere学号='0001'and分数all(select分数fromgradewhere姓名='0002')连接查询。(8)①查询分数在80~90范围内的学生的学号、姓名、分数。[用WHERE连接查询]答:selectstudent_info.学号,姓名,分数fromstudent_info,gradewherestudent_info.学号=grade.学号and分数between80and90②查询学习“C语言程序设计”课程的学生的学号、姓名、分数。[用INNERJOIN连接查询]答:selectstudent_info.学号,姓名,分数fromstudent_infoinnerjoingradeonstudent_info.学号=grade.学号innerjoincourseon课程名称='C语言程序设计'③查询所有男同学的选课情况,要求列出学号、姓名、课程名称、分数。答:selecta.学号,a.姓名,c.课程名称,b.分数fromstudent_infoainnerjoingradebona.学号=b.学号innerjoincourseconb.课程编号=c.课程编号where(a.性别='男')④查询每个学生的所选课程的最高成绩,要求列出学号、姓名、课程编号、分数。答:selecta.学号,c.姓名,a.课程编号,a.分数fromgradeainnerjoinstudent_infocona.学号=c.学号where(a.分数=(selectmax(b.分数)fromgradebwherea.学号=b.学号))⑤查询所有学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学生的总成绩为空。答:selecta.学号,a.姓名,b.总成绩fromstudent_infoaleftouterjoin(select学号,sum(分数)as总成绩fromgradegroupby学号)bona.学号=b.学号⑤为grade表添加数据行:学号为'0004'、课程编号为K006、分数为‘76‘。查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,curriculum表中没有的课程列值为空。[使用右外连接。]答:insertintograde(学号,课程编号,分数)values('0004','K006',76)selecta.课程编号,a.课程编号,a.课程编号,b.选修人数fromcoursearightouterjoin(select课程编号,count(*)as选修人数fromcoursegroupby课程编号)bona.课程编号=b.课程编号实验名称数据查询实验日期实验目的掌握使用Transact-SQL的SELECT语句进行基本查询的方法。掌握使用SELECT语句进行条件查询的方法。掌握SELECT语句的GROUPBY、ORDERBY以及UNION子句的作用和使用方法。掌握嵌套查询的方法。掌握连接查询的操作方法。实验环境Windows7,SQLServer2008实验内容按实验步骤完成简单查询,嵌套查询,连接查询。实验中要求在查询设计器中用语句完成的实验,请在这里填写他们的语句,并标上题号。试验思考回答以下问题:(1)条件查询:orderby,INTO,UNION,GROUPBY,HAVING,这些关键词意思是什么?(4)在嵌套查询中,SOME、ANY、IN关键词用法说明。(5)在连接查询中,述说内连接,外连接,交叉连接特点。【手写“回答以下问题”,若空白处不够,请附页完成】