资源描述
实验3 数据查询1实验目的(1)掌握使用Transact-SQL的SELECT语句进行基本查询的方法。(2)掌握使用SELECT语句进行条件查询的方法。(3)掌握SELECT语句的GROUP BY、ORDER BY以及UNION子句的作用和使用方法。(4)掌握嵌套查询的方法。(5)掌握连接查询的操作方法。2实验内容及步骤请先附加studentsdb数据库,然后完成以下实验。简单查询:(1)在studentsdb数据库中,使用下列SQL语句将输出什么?请用文字描述SELECT COUNT(*) FROM grade答:SELECT YEAR(GETDATE(),MONTH(GETDATE(),DAY(GETDATE()答:(无列名)(无列名)(无列名)2015114(2)在student_info表中,查询每个学生的学号、姓名、出生日期信息。答:select 学号,姓名,出生日期 from student_info查询学号为0001的学生的姓名和家庭住址。答:select 姓名,家庭住址 from student_info where 学号=0001找出所有男同学的学号和姓名。答:select 学号,姓名 from student_info where 性别=男(3)在grade表中查找分数在8090范围内的学生的学号和分数。答:select 学号,分数 from grade where 分数 between 80 and 90在grade表中查询课程编号为k003的学生的平均分。答:select 课程编号,avg(分数) 平均分 from grade group by 课程编号 having 课程编号=k003在grade表中查询学习各门课程的人数。答:select 课程编号,count(学号) from grade group by 课程编号将学生按出生日期由大到小排序。答:select 姓名,出生日期 from student_info order by 出生日期 desc查询所有姓“张”的学生的学号和姓名。答:select 学号,姓名 from student_info where 姓名 like 张%(4)对student_info表,按性别顺序列出学生的学号、姓名、性别、出生日期及家庭住址,性别相同的按学号由小到大排序。答:select 学号,姓名,性别,出生日期,家庭住址 from student_info order by 性别,学号(5)使用GROUP BY查询子句,列出各个学生的平均成绩。答:select 学号,avg(分数)平均成绩 from grade group by 学号(6)使用UNION运算符将student_info表中姓“张”的学生的学号、姓名与curriculum表的课程编号、课程名称返回在一个表中,且列名为u_编号、u_名称,答:select 学号 as u_编号,姓名 as u_名称 from student_info where 姓名 like 张% union select 课程编号 as u_编号,课程名称 as u_名称 from course_info图1-8 联合查询结果集嵌套查询:(7)在student_info表中查找与“刘卫平”性别相同的所有学生的姓名、出生日期。-select * from student_info答:select 姓名,出生日期 from student_info where 性别=男(select 性别 from student_info where 姓名=刘卫平)使用IN子查询查找所修课程编号为k002、k005的学生学号、姓名、性别。答:select 课程编号 from course_info where 课程编号=k002 or 课程编号=k005列出学号为0001的学生的分数比0002学号的学生的最低分数高的课程编号和分数。答:select 课程编号,分数 from grade where 学号=0001 and 分数any (select 分数 from grade where 姓名=0002)列出学号为0001的学生的分数比学号为0002的学生的最高成绩还要高的课程编号和分数。答:select 课程编号,分数 from grade where 学号=0001 and 分数all (select 分数 from grade where 姓名=0002)连接查询。(8)查询分数在8090范围内的学生的学号、姓名、分数。用WHERE连接查询答:select student_info.学号,姓名,分数 from student_info,grade where student_info.学号=grade.学号 and 分数 between 80 and 90查询学习“C语言程序设计”课程的学生的学号、姓名、分数。 用INNER JOIN 连接查询答:select student_info.学号,姓名,分数 from student_infoinner joingrade on student_info.学号=grade.学号inner join course on 课程名称=C语言程序设计查询所有男同学的选课情况,要求列出学号、姓名、课程名称、分数。答:select a.学号,a.姓名,c.课程名称,b.分数 from student_info a inner join grade b on a.学号=b.学号inner join course c on b.课程编号=c.课程编号where(a.性别=男)查询每个学生的所选课程的最高成绩,要求列出学号、姓名、课程编号、分数。答:select a.学号,c.姓名,a.课程编号,a.分数 from grade a inner join student_info c on a.学号=c.学号where(a.分数=(select max(b.分数)from grade b where a.学号=b.学号)查询所有学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学生的总成绩为空。答:select a.学号,a.姓名,b.总成绩 from student_info a left outer join(select 学号,sum(分数) as 总成绩 from grade group by 学号)b on a.学号=b.学号为grade表添加数据行:学号为0004、课程编号为K006、分数为76。查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,curriculum表中没有的课程列值为空。使用右外连接。答:insert into grade(学号,课程编号,分数) values(0004,K006,76)select a.课程编号,a.课程编号,a.课程编号,b.选修人数 from course a right outer join(select 课程编号,count(*) as 选修人数 from course group by 课程编号)b on a.课程编号=b.课程编号 实验名称数据查询实验日期实验目的掌握使用Transact-SQL的SELECT语句进行基本查询的方法。掌握使用SELECT语句进行条件查询的方法。掌握SELECT语句的GROUP BY、ORDER BY以及UNION子句的作用和使用方法。掌握嵌套查询的方法。掌握连接查询的操作方法。实验环境Windows 7 ,SQL Server 2008实验内容按实验步骤完成简单查询,嵌套查询,连接查询。实验中要求在查询设计器中用语句完成的实验,请在这里填写他们的语句,并标上题号。试验思考回答以下问题:(1)条件查询:order by ,INTO,UNION,GROUP BY ,HAVING,这些关键词意思是什么?(4)在嵌套查询中,SOME、ANY、IN 关键词用法说明。(5)在连接查询中,述说内连接,外连接,交叉连接特点。【手写“回答以下问题”,若空白处不够,请附页完成】知识改变命运2 / 2
展开阅读全文