1.查询全体学生的学号和姓名。select学号,姓名from学生。
查询全体学生的姓名,学号,所在系。select学号,姓名,系from学生。
查询全体学生的详细记录。
select * from学生。
查询全体学生的姓名及其出生年份。
select姓名,2006-年龄。
from学生。
意思是2008减年龄]5.
查询选修了课程的学生学号。
select distinct学号。
from选课。
查询2系全体学生的名单。select姓名。
from学生。
where系=”2”
查询所有年龄在20岁以下的学生姓名及年龄。select姓名,年龄。
from学生。
where年龄<=208.
查询考试成绩有不及格的学生的学号。select distinct学号。
from选课。
where成绩<609.
查询年龄在20~~23岁(包括20和23岁)之间的的学生的姓名,系别,年龄。select姓名,系,年龄from学生。
where年龄。
between 20 and 2310.
查询1系,2系,3系的学生的姓名和性别。
select姓名,性别。
from学生。
where系别。
in(“1”,”2”,”3”)
in实际上是多个or运算符的缩写]。
我们也可以写成这样:
select姓名,性别。
from学生。
where系=’1’or系=’2’or系=’3’
查询既不是1系,2系也不是3系的学生的姓名和性别。select姓名,性别。
from学生。
where系。
not in (“1”,”2”,”3”)12.
查询学号为s3的学生的详细情况。select * from学生。
where学号。
like“s3”)或者(select * from学生。
where学号=”s3”
查询所有的姓刘的学生的姓名,学号和性别。
select姓名,学号,性别。
from学生。
where姓名。
like‘刘%’
查询姓”欧阳”且全名为三个字的学生的姓名。select姓名。
from学生。
where姓名。
like“欧阳_”
查询名字中第二个字为”阳”字的学生的姓名和学号。select姓名,学号。
from学生。
where姓名。
like“_阳%”
某些学生选修课程后没有参加考试,所以有选课记录,但是没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。
select学号,课程号。
from选课。
where成绩。
is null17.
查询所有有成绩的学生学号和课程号。select学号,课程号。
from选课。
where成绩。
is not null18.
多重条件查询)查询1系年龄在20岁以下的学生姓名。select姓名。
from学生。
where系=’1’and年龄<2019.
对查询结果进行排序)查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。select学号,成绩,from选课。
where课程号=’3’order by成绩。desc
查询全体学生情况,查询结果按所在系的系号升序排列,同一个系的学生按年龄降序排列。select * from学生。
order by系,年龄。
desc21.
使用集函数)查询学生总人数。select count(*)from学生。
count的功能是计数]22.
查询选修了课程的学生的总人数。select count (distinct学号) from选课。
计算1号课程的学生的平均成绩。select **g(成绩) from选课。
where课程号=’1’
查询选修1号课程的学生最高分数。select max(成绩) from选课。
where课程号=’1’
求各个课程号及相应的选课人数。select课程号,count(学号) from选课。
group by课程号。
26.查询选修了3门以上课程的学生的学号。select学号。
from选课。
group by学号。
h**ing count(*)3
这里先用groupby子句按学号分组,再用集函数count对每一组计数。h**ing短语指定选择组的条件,只有满足条件(即元组的个数》3,表示此学生选修的课程超过3门)的组才会被选出来。where子句与h**ing短语的区别在于作用的对象不同。
where子句作用于基本表或视图,从中选择满足条件的元组。h**ing短语作用于组,从中选择满足条件的组。]27.
查询每个学生及其选修课程的情况。
sele学生。*,选课。* from学生,选课。
where学生。学号=选课。学号。
学生情况放在学生表里,学生选课情况放在选课表中,所以本查询实际上涉及到学生和选课两个表,这两个表之间的联系是通过公共属性学号实现的。]28.查询每一门课的间接先修课。
sele f.学号,s.先修课号。
from课程。
f,课程。s
wheref.选修课号=s.学号。
(自身连接)在课程表关系中,只有每门课的直接先修课信息。而没有先修课的先修课。要得到这个信息,必须对一门课找到其先修课,而按此先修课的课程号,查找它的先修课。
这就要将课程表与其自身连接。].29.
查询选修2号课程且成绩在90分以上的所有学生。
sele学生。学号,姓名。
from学生,选课。
where学生。学号=选课。学号。
and选课。学号=’2’,and选课。成绩》90.30.查询每个学生的学号,姓名,选课的课程名及成绩。
sele学生。学号,姓名,课程名,成绩。
from学生,课程,选课。
where学生。学号=选课。学号。
and选课。课程号=课程。课程号。31.查询与”张洋”在同一个系学习的学生。sele学号,姓名,系。
from学生。
where系。
in(sele系。
from学生。
where姓名=”张洋”)
in在这里可以用=号代替,因为一个学生只能在一个系里学习].
嵌套查询)分步做,确定张洋所在的系名。查找所有在2系学习的学生。32.查询选修了课程名为”数据结构”的学生学号和姓名。sele学号,姓名。
from学生。
where学号。
in(sele学号。
from选课。
where课程号。
in(sele课程号。
from课程。
where课程名=”数据结构”))或者写成连接查询:sele学号,姓名。
from学生,选课,课程。
where学生。学号=选课。学号。
and选课。课程号=课程。课程号。
and课程。课程名=”数据结构”
33. (带有any和。
all的子查询)查询其他系中比’2’系某一个学生年龄小的学生姓名和年龄。sele姓名,年龄。
from学生。
where年龄< any (sele年龄。
from学生。
where系=’2’) and系!=’2’
注意这个and后的语句是父查询的限制条件)。
这个题也可以用集函数做。首先用子查询找出2系中年龄最大的,然后在父查询中查看所有非2系且年龄小于2系最大年龄的学生姓名和年龄。]sele姓名,年龄。
from学生。
where年龄<(selemax(年龄)from学生。
where系=’2’)and系!=’2’.34.查询其他系中比2系所有学生年龄都小的学生姓名及年龄。sele姓名,年龄。
from学生。
where年龄。
all (sele年龄。
from学生。
where系=’2’) and系!=’2’。
或者用集函数:
sele姓名,年龄。
from学生。
where年龄< (sele min(年龄) from学生。
where系=’2’) and系!=’2’
35. (带有exists的子查询)查询所有选修了c3课程的学生姓名。本题涉及学生和选课两个表,我们可以在学生表中依次取每个元组的学号值,用此值去检查选课关系,若选课中存在这样的这样的元组,其学号值等于此学生表的学号的值,并且其课程号是c3,则取学生表的学生姓名送入结果表。
sele姓名。
from学生。
where exists (sele * from选课。
where学号=学生。学号。
and课程号=’c3’).36.查询没有选修’c3’号课程的学生姓名。sele姓名。
from学生。
wherenotexists(sele*from选课。
where学号=学生。学号。
and课程号=’c3’)37.查询与”张洋”在同一个系学习的学生。sele学号,姓名,系。
from学生。
s1whereexists(sele*from学生。
s2wheres2.系=s1.系。
and s2.姓名=’张洋’).38.
查询选修了全部课程的学生姓名。(没有能表示全部的,那么我们可以将题目的意思转换成等价的存在的含义,比如,查询这样的学生,没有一门课程是他不选修的)
sele姓名。
from学生。
where not exists (sele * from课程。
where not exists (sele * from选课。
where学号=学生。学号。
and课程号=课程。课程号))39. (集合查询)查询1系的学生及年龄不大于19岁的学生。sele * from学生。
where系=’1’union sele * from学生。
where年龄<=1940.查询选修了课程c1或者课程c2的学生。
sele学号。
from选课。
where课程号=’c1’
unionsele学号。
from选课。
where课程号=’c2’
SQL查询练习
下面以学生 课程数据库 xs kc 为例介绍。该数据库中有学生情况表 xsqk 课程表 xskc 学生成绩表 xscj xsqk 学号 姓名 出生年月 系别 专业 班级。xskc 课程号课程名学分。xscj 学号课程号成绩。1 查询学生情况表中全体学生的信息。select from xsqk 2 查...
sql查询练习
以下查询均基于该数据库。成绩管理数据库,包含四张表 学生表 学号,姓名,性别,出生日期,籍贯,入学成绩,专业 课程表 课程号,课程名称,学分,教师号 成绩表 学号,课程号,成绩 教师表 教师号,姓名,性别,所在部门,职称,出生日期,专职,基本工资 1.查询学分在2至4之间的课程号 课程名和学分。2....
SQL查询练习
一 有三个关系,试用关系代数表达式表示下列查询语句 s sno,sname,age,sex,sdept c cno,cname,cdept,tname tname表示授课老师名。sc sno,cno,grade 1 检索年龄小于22岁的男学生的学号与姓名。2 检索学号为s3学生所学课程的课程名与任课...