实验一SQL语言单表查询
一、实验目的
熟悉SQLServer2008建立数据库和表的方法;掌握SQL语言单表查询方法二.实验内容
1、建立数据库Student
2、建立该数据库的三张表:stu_info,course_info,stu_grade,三张表分别存放学生的学生信息、课程信息和学生选课信息
3、请写出实现如下功能的SQL语句,并在SQLServer2008中进行测试
(1)查询所有同学的姓名和年龄信息,要求使用别名(姓名和年龄),结果如下:
(2)查询所有的院系信息,要求取消重复的行,结果如下:
(3)查询前5位同学的学号、姓名和成绩信息。查询结果如下:
(4)查询所有的男同学学号、姓名、生日和性别信息。查询结果如下:
(5)查询所有总分大于550的男同学信息。查询结果如下:
(6)查询所有信息学院和会计学院并且总分大于550分的同学信息。查询结果如下:
(7)查询所有籍贯为空的同学信息。查询结果如下:
(8)查询总分在530—560之间的同学信息。
查询结果如下:
(9)查询所有在信息学院或会计学院就读的同学信息。查询结果如下:
(10)查询所有姓“张”的同学信息。查询结果如下:
(11)查询所有姓“张”,而且姓名是两个字的同学信息。查询结果如下:
(12)查询所有不姓“张”也不姓“王”的同学信息。查询结果如下:
(13)查询所有同学课程编号701的课程成绩,并按由大到小的顺序输出,如果成绩相同,则按学号由小到大排序。查询结果如下:
(14)统计学生成绩表中每个同学的最高分、最低分、平均分和总分。查询结果如下:
(15)统计学生成绩表中每个同学的最高分、最低分、平均分和总分,80分以下的成绩不参与统计。
Select stu_id,MAX(grade),MIN(grade),AVG(grade),SUM(grade)
From stu_grade
Where grade>=80
Group by stu_id
查询结果如下:
(16)统计学生成绩表中每个同学的最高分、最低分、平均分和总分,并输出平均分大于87分的信息。查询结果如下:
(17)明细汇总:
使用group by子句对查询数据进行分组汇总,为每一组产生一个汇总结果,每个组只返回一行,无法看到详细信息。使用compute和compute by子句既能够看到统计经营部的结果又能够浏览详细数据。
使用compute子句对所有学生的人数进行明细汇总。查询结果如下:
(18)使用compute by子句按照院系对所有学生的人数进行明细汇总。select*
from stu_info
order by sdept
compute count(stu_id)
by sdept
查询结果如下:
附:样本数据库student表数据:
学生信息表(stu_info):
课程信息表(course_info):
学生成绩表(stu_grade):