sql查询练习

发布 2021-05-08 19:50:28 阅读 8382

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学生所学课程的课程名与任课...