77范文网 - 专业文章范例文档资料分享平台

SQL语句练习

来源:网络收集 时间:2020-03-27 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

现在有一教学管理系统,具体的关系模式如下: Student (no, name, sex, birthday, class)

Teacher (no, name, sex, birthday, prof, depart) Course (cno, cname, tno) Score (no, cno, degree)

单表查询

1, 以class降序输出student的所有记录(student表全部属性) 2, 命令:select * from Student order by class desc 3, 列出教师所在的单位depart(不重复)。 4, 命令:select distinct depart from teacher

5, 列出student表中所有记录的name、sex和class列 6, 命令:select name,sex,class from student 7, 输出student中不姓王的同学的姓名。

8, 命令:select name from Student where name not like '王%'

9, 输出成绩为85或86或88或在60-80之间的记录(no,cno,degree) 10, 命令:select * from Score where degree=85 or degree=86 or degree=88 or degree

between 60 and 80 11, 输出成绩为85或86或88或在60-80之间的记录(no,cno,degree) 12, 命令:select * from Score where degree=85 or degree=86 or degree=88 or degree

between 60 and 80 13, 以cno升序、degree降序输出score的所有记录。(score表全部属性) 14, 命令:select * from Score order by cno,degree desc 15, 输出男生人数及这些男生分布在多少个班级中 16, 命令:select COUNT(*),COUNT(distinct class) from Student where sex='男' 17, 列出存在有85分以上成绩的课程编号。 18, 命令:select distinct cno from Score where degree>85 19, 列出存在有85分以上成绩的课程编号。 20, 命令:select distinct cno from Score where degree>85 21, 输出‘3-105’号课程的平均分 22, 命令:select AVG(DEGREE) from Score where cno='3-105' 23, 输出student中最大和最小的birthday日期0值 24, 命令:select MAX(birthday),MIN(birthday) from student 25, 显示95001和95004班全体学生的全部个人信息(不包括选课)。(student表全部

属性) 26, 命令:select * from Student where class='95001' or class='95004' 27, 输出至少有5个同学选修的并以3开头的课程的课程号,课程平均分,课程最高分,

课程最低分。 28, 命令: 29, select cno,AVG(degree),MAX(degree),MIN(degree) from Score 30, where cno like '3%' group by cno having COUNT(no)>=5 31, 输出所选修课程中最低分大于70分且最高分小于90分的学生学号及学生姓名 32, 命令:select student.no,student.name from Score inner join Student on

student.no=score.no group by student.no,name having (MIN(degree)>70 and

MAX(degree)<90)

33, 显示所教课程选修人数多于5人的教师姓名 34, 命令:select name from Score inner join course on score.cno=course.cno inner join

Teacher on Teacher.no=course.tno group by teacher.no,name having COUNT(*)>5 35, 输出’95001’班级所选课程的课程号和平均分 36, 命令:select cno,AVG(degree) from Student inner join Score on student.no=score.no

where student.class='95001' group by cno 37, 输出至少有两名男同学的班级编号。 38, 命令:select class from Student inner join Score on student.no=score.no where sex='男

' group by class having COUNT(distinct student.no)>1 39, 列出与108号同学同年出生的所有学生的学号、姓名和生日 40, 命令:select no,name,birthday from Student where year(birthday)=(select

YEAR(birthday) from Student where no =108) 41, 列出存在有85分以上成绩的课程名称 42, 命令:select cname from course inner join Score on course.cno=score.cno group by

cname having MAX(degree)>85 43, 列出“计算机系”教师所教课程的成绩表(课程编号,课程名,学生名,成绩)。 44, 命令:select score.cno,cname,student.name,DEGREE from Student inner join Score on 45, student.no=score.no inner join course on score.cno=course.cno inner join Teacher on

course.tno=Teacher.no where teacher.depart='计算机系' 46, 列出所有可能的“计算机系”与“电子工程系”不同职称的教师配对信息,要求输

出每个老师的姓名(name)和(职称) 47, 命令:select ex1.name,ex1.prof,ex2.name,ex2.prof from Teacher ex1,Teacher ex2 where

ex1.depart='计算机系' and ex2.depart='电子工程系' and ex1.prof!=ex2.prof 48, 列出所有处于不同班级中,但具有相同生日的学生,要求输出每个学生的学号和姓

名。(提示:使用datediff函数,具体用法可以参考:http://hcmfys.javaeye.com/blog/588844)命令: 49, select ex1.no,ex1.name,ex2.no,ex2.name from Student ex1 inner join Student ex2 on

ex1.birthday=ex2.birthday where ex1.class!=ex2.class 50, select ex1.no,ex1.name,ex2.no,ex2.name from Student ex1 ,Student ex2 where

ex1.class!=ex2.class and datediff(day,ex1.birthday,ex2.birthday )=0 51, 显示‘张三’教师任课的学生姓名,课程名,成绩 52, 命令:select student.name,cname,DEGREE from Student inner join Score on

student.no=score.no inner join course on score.cno=course.cno inner join Teacher on course.tno=teacher.no where teacher.name='张三' 53, 列出所讲课已被选修的教师的姓名和系别 54, 命令:select distinct teacher.name,depart from Score inner join course on

score.cno=course.cno inner join Teacher on course.tno=Teacher.no 55, 输出所有学生的name、no和degree。(degree为空的不输出和为空的输出两种情

况)。 56, 命令:select student.name,student.no,DEGREE from Student inner join Score on

student.no=score.no select student.name,student.no,DEGREE from Student left join Score on student.no=score.no 57, 列出所有任课教师的name和depart。(从课程选修和任课两个角度考虑)

58, 命令: 59, (课程选修) 60, select distinct teacher.name,depart from score 61, left join course on score.cno=course.cno left join teacher on course.tno=teacher.no 62, (任课) 63, select distinct teacher.name,depart from teacher inner join course on

Teacher.no=course.tno 64, 输出男教师所上课程名称。 65, 命令: 66, select cname from Teacher inner join course on Teacher.no=course.tno where

teacher.sex='男' 67, 出与“李军”同性别的所有同学的name。 68, 命令:select name from Student where sex=(select sex from Student where name='李

军') 69, 输出选修“数据结构”课程的男同学的成绩。 70, 命令:select DEGREE from Student inner join Score on student.no=score.no where sex='

男' 71, 列出选修编号为‘3-105’课程并且该门课程成绩比课程‘3-111’的最高分 72, 要高的cno,no和degree。 73, 命令:select cno,student.no,DEGREE from Student inner join Score on

student.no=score.no where cno='3-105' and degree>(select MAX(degree) from Score where cno='3-111') 74, 输出score中成绩最高的学号和课程号 75, 命令:select no,cno from Score where degree=(select MAX(degree) from Score) 76, 输出选修3-105课程,其成绩高于109号同学在此课程所得成绩的所有同学的学号,

姓名 77, 命令:select student.no,name from Student inner join Score on student.no=score.no

where cno='3-105' and degree>(select degree from Student inner join Score on student.no=score.no where student.no=109 and cno='3-105') 78, 列出成绩比该课程平均成绩低的同学的学号,成绩和该门课的平均成绩 79, 命令: 80, select no,DEGREE,temp.avgdegree from Score inner join (select cno,AVG(degree)

avgdegree from Score group by cno) as temp on score.cno=temp.cno where degree

left join Score on course.cno=score.cno where score.no is null 84, 列出选修了编号为‘3-105’课程且其成绩高于‘4-109’课程最高成绩的同学的课

程编号,学号和成绩 85, 命令:select cno,student.no,DEGREE from Student inner join Score on

student.no=score.no where cno='3-105' and degree>(select MAX(degree) from Score where cno='4-109') 86, 列出符合下述条件的所有可能的同学配对(sno1,sname1,sno2,sname2,difference)。

其中要求学号为sno1的sname1同学的所学课程的平均分大于学号为sno2的sname2同学的所学课程平均分,两个同学的课程平均分的差值difference为(sno1同学平均分-sno2同学平均分) 87, 命令: 88, select ex1.no,ex1.name,ex2.no,ex2.name, 89, AVG(ex3.degree)-AVG(ex4.degree) as diffenence from (Student ex1 inner join Score ex3

on ex1.no=ex3.no), (Student ex2 inner join Score ex4 on ex2.no=ex4.no) group by ex1.no,ex1.name,ex2.no,ex2.name having AVG(ex3.degree)>AVG(ex4.degree)

Selectstuavg1.no,stuavg1.name,stuavg2.no,stuavg2.name, stuavg1.avgscore-stuavg2.avgscore as diffenence from ( 90, 91, 92, 93, 94, 95,

select student.no,name,avg(degree) as avgscore from score

left join student on score.no=student.no group by student.no,name )as stuavg1 inner join (

select student.no,name,avg(degree) as avgscore from score

left join student on score.no=student.no group by student.no,name )as stuavg2 on stuavg1.avgscore>stuavg2.avgscore

SQL语句强化练习题及答案 一、简单查询

1、列出全部学生的信息。 SELECT * FROM 学生

2、列出软件专业全部学生的学号及姓名。

SELECT 学号,姓名 FROM 学生 WHERE 专业=\软件\ 3、列出所有必修课的课号。

SELECT DISTINCT 课号 FROM 必修课

4、求1号课成绩大于80分的学生的学号及成绩,并按成绩由高到低列出。 SELECT 学号,成绩 FROM 选课 WHERE 课号=\成绩>80 ORDER BY 成绩 DESC

5、列出非软件专业学生的名单。

方法一:SELECT 姓名 FROM 学生 WHERE 专业<>\软件\

方法二:SELECT 姓名 FROM 学生 WHERE NOT 专业=\软件\

方法三:SELECT 姓名 FROM 学生 WHERE 专业!=\软件\

6、查询成绩在70~80分之间的学生选课得分情况

方法一:SELECT * FROM 选课 WHERE 成绩>=70 AND 成绩<=80

方法二:SELECT * FROM 选课 WHERE 成绩 BETWEEN 70 AND 80

不在此范围内的查询:(注意写出和以下语句等价的语句)

SELECT * FROM 选课 WHERE 成绩 NOT BETWEEN 70 AND 80 7、列出选修1号课或3号课的全体学生的学号和成绩。

方法一:SELECT 学号,成绩 FROM 选课 WHERE 课号=\课号=\

方法二:SELECT 学号,成绩 FROM 选课 WHERE 课号 IN (\

相反条件查询:SELECT 学号,成绩 FROM 选课 WHERE 课号 NOT IN (\

8、列出所有98级学生的学生成绩情况。

SELECT * FROM 选课 WHERE 学号 LIKE \ SELECT * FROM 选课 WHERE 学号 LIKE \

相反条件查询:SELECT * FROM 选课 WHERE 学号 NOT LIKE \

9、列出成绩为空值(或不为空值)的学生的学号和课号。

答案一:SELECT 学号,课号 FROM 选课 WHERE 成绩 IS NULL

答案二:SELECT 学号,课号 FROM 选课 WHERE 成绩 IS NOT NULL

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库SQL语句练习在线全文阅读。

SQL语句练习.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/907898.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: