实验名称 SQL语言进行简单查询 | |||
注意:原版word在下载资源里面(免费下载) | |||
实验目的及要求:
| |||
实验内容及步骤: 注:所有程序第一行均在XSGL数据库中进行,即每次运行程序第一行均为use XSGL
select count(distinct sno) 学生人数--distinct表示去掉重复行 from sc
select sum(credit) from course,sc where sno = '200515001' and sc.cno = course.cno and grade>=60; --成绩超过60才有学分,并连接两个表
select sno,cno from sc where grade is not null; --排除空值
select sname,sdept,sage from student where sage>=20and sage<=23; --范围条件语句 也可以用between…and…
select sno,grade from sc where cno=3 order by grade desc;--降序排列;
select *--查询所有表的所有信息 from student where sdept=' 'or sdept is null;--sdept 为空或者为空格
select sname,sage from student where ssex='男'and sdept='CS';
select cname from course--like语句表示求相似的, where cname like '数据%';--数据%表示以数据开头,后面0到无穷多个字符
select sname from student where sname like '_向%';--_表示一个字符
select sno,cno from sc where grade>90;--以90分以上为优秀
select sname from student where (sdept<>'cs'and sdept<>'ma')and sage>=20;--注意优先级,最好加括号
select ssex,count(ssex) 人数--也可以用*代替ssex from student where sdept='cs' group by ssex--分别输出男女需要分组
select count(sno) 人数,sdept,sage from student group by sdept,sage—group by 语句后面的词数与 select后单个词数一致 order by sdept desc,sage ;--降序为desc 升序为asc可省略
select count(sno) 人数,sdept from student group by sdept order by count(sno) desc;--降序为desc 升序为asc可省略
select sdept,ssex,count(sno) 人数 from student group by sdept,ssex order by sdept,ssex desc;--女生在前,按照第二字母顺序降序为desc
select student.sno,sname--必须加上student.或者sc.因为两个表都有sno from sc,student where student.sno=sc.sno--连接两个表 group by student.sno,sname having count(*)>3--分组后显示选了三门以上的,而不是直接显示整个表三门以上的
select sno,avg(grade) 平均分,max(grade) 最高分, min(grade) 最低分,count(cno) 选课门数 from sc group by sno
select sno,avg(grade) 平均分 from sc group by sno--查询的是选修至少两门的每个学生,然后计算每个学生的课程的信息,则对学生分组,每一个学生为一组 having count(cno)>=2; --having后面可以使用聚合函数。聚合函数就是对一组值进行计算并且返回单一值的函数:sum---求和,count---计数,max---最大值,avg---平均值等。所以不用where。
select sno,avg(grade) 平均分 from sc group by sno having avg(grade)>=80; 比较: 求各学生的60分以上课程的平均分. select sno,avg(grade) 平均分 from sc where grade>60 group by sno--having既然是对查出来的结果进行过滤,那么就不能对没有查出来的值使用having。
select student.sno from sc,student where sdept='is'and student.sno=sc.sno--一定要记得连接两个表 group by student.sno having count(cno)>2;
select cname,grade from sc,student,course--需要连接三个表 where course.cno=sc.cno and student.sno=sc.sno and sname='李勇 ';
select sdept,student.sno,sname,cname from student,course,sc --sno是student表的主码,cno是course表的主码,需要用主码与sc表中的外码连接 where student.sno=sc.sno and course.cno=sc.cno and (grade<60 or grade is null) --不用and因为成绩小于六十与成绩为空不能同时发生 --有or出现注意通过题目判断是否加括号 order by sdept ,student.sno--先按系排序,则系别在前面
select student.sno,sname,cname from student,course,sc where student.sno=sc.sno and course.cno=sc.cno and (grade<60 or grade is null) and sdept='cs' order by student.sno
select student.sno,sname,cname from student, course, sc where student.sno=sc.sno and course.cno=sc.cno and grade is null and sdept not in('cs','ma')--与sdept<>'cs'and sdept<>'ma'一致
select avg(grade) from course,sc where course.cno=sc.cno and cname='DB'
select cname, avg(grade) --成绩在sc表,课程名在course表 from course, sc where course.cno=sc.cno group by cname--求每一门课程,所以分组 order by avg(grade) desc--从大到小即为倒序
select sum(credit) 总学分 from student,course,sc--成绩在sc表,学分在course表,李勇在student表 where student.sno=sc.sno and course.cno=sc.cno文章来源:https://www.toymoban.com/news/detail-432649.html and sname='李勇' and grade>=60文章来源地址https://www.toymoban.com/news/detail-432649.html |
到了这里,关于数据库SQL Server实验报告 之 SQL语言进行简单查询(3/8)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!