--1查询选修人数超过50人的课程的名字,以及每门课的选课总人数,并将结果按照人数的升序排序
select
Cname,count(*)
as
num
from
Course,
(
select
*
from
SC
where
Cno
in(
select
Cno
from
SC
group
by
Cno
having
Count(*)>50
)
)
tempTable
where
Course.Cno=tempTable.Cno
group
by
Course.Cno,Cname
order
by
num
asc
--2查询每门课的成绩都比这门课的其他同学高的学生的
学号
select
Table1.Sno
from
(
select
sc0.Sno,count(*)
as
Snum
from
sc
as
sc0
group
by
sc0.Sno
)
as
Table1,
(
select
STable.Sno,count(*)
as
maxNum
from
(
select
sc1
.Sno,sc1.Cno,sc1.Grade
from
sc
as
sc1,
(
select
sc2.Cno,max(sc2.Grade)
as
maxGrade
from
sc
as
sc2
group
by
sc2.Cno
)
as
maxTable
where
sc1.Cno=maxTable.Cno
and
sc1.Grade=maxTable.maxGrade
)
as
STable
group
by
STable.Sno
)
Table2
where
Table1.Sno=Table2.Sno
and
Table1.Snum=Table2.maxNum
--6查询没有选课的学生的学号和姓名
select
Student.Sno,Sname
from
Student
where
Student.Sno
not
in
(
select
distinct
Sc.Sno
from
SC
)
⑵ 数据库SQL语句中 查询选修了全部课程的学生的学号和姓名 理解
楼主别着急!
为好理解我们先从这条SQL语句所要实现的功能入手。
功能:查出选修了全部课程的学信息。那么SQL在查询数据的时候的遍历每一个学生信息。判断该学生是否满足条件。
1
如果存在这么一条Course记录A(暂命名为A),
则不选择该学生。否则该学生就被查询出来
2
那么记录A,是怎么查出来的呢?A查出的条件是:不存在SC记录B,只要不存在B,就可查出A
3
那么B记录是什么?B记录是选课信息表,根据学号和课程号可查出记录B
如果B为空(该学生有没有选的课程)也就是不存在,则A就有一条记录,根据规则2可知:因为有A,所以该学生信息将不被输出。
如果在SC中每一个课程编号和该学生编号为条件都能够查出一条记录B(也就是该学生选修了全部课程),所以A记录不存在,则输出该学生的信息。
也就是在选课表中,如果学生选了全部课程(也就是满足SELECT
*
FROM
SC
WHERE
Sno=
Student.Sno
AND
Cno=
Course.Cno)始终存在,当然,课程编号是任意的)。那么就输出该学生的信息。你不要为理解这条SQL而忘记了它本身是要做什么.
带着SQL的目的(要实现的功能)去理解就好了。
⑶ 急,如何在sql里面显示score表中的最高分的学生学号和课程号
1、首先在打开的sql软件中,在SC表中找到学了C2的学生学号。
⑷ 数据库SQL语言 学生查找
--1查询选修人数超过50人的课程的名字,以及每门课的选课总人数,并将结果按照人数的升序排序
select Cname,count(*) as num
from Course,
(
select *
from SC
where Cno
in(
select Cno
from SC
group by Cno
having Count(*)>50
)
) tempTable
where Course.Cno=tempTable.Cno
group by Course.Cno,Cname
order by num asc
--2查询每门课的成绩都比这门课的其他同学高的学生的学号
select Table1.Sno
from
(
select sc0.Sno,count(*) as Snum
from sc as sc0
group by sc0.Sno
) as Table1,
(
select STable.Sno,count(*) as maxNum
from
(
select sc1.Sno,sc1.Cno,sc1.Grade
from sc as sc1,
(
select sc2.Cno,max(sc2.Grade) as maxGrade
from sc as sc2
group by sc2.Cno
) as maxTable
where sc1.Cno=maxTable.Cno and sc1.Grade=maxTable.maxGrade
) as STable
group by STable.Sno
) Table2
where Table1.Sno=Table2.Sno and Table1.Snum=Table2.maxNum
--6查询没有选课的学生的学号和姓名
select Student.Sno,Sname
from Student
where Student.Sno not in
(
select distinct Sc.Sno
from SC
)
⑸ 求用sql语言在数据库中查找没有选修任何课程的学生的学号,姓名的命令
应为三张表:
学生表A 课程表B 选修表C(cid aid bid)
--没有选修任何课程的学生的学号
select*fromAwhereaidnotin(
selectdistinctaidfromC)--为已选修的人
如有问题可以追问,我当及时回答.
希望能帮到你!
⑹ 如何用sql语言在数据库中查找没有选修任何课程的学生的学号,姓名的命令
假设学生表为A,学号字段为id,姓名字段为name;x0dx0a课程表为B,其中row_id为课程编号,stu_no为选修该门课的学生的学号x0dx0aSQL:x0dx0aSELECT A.id,A.namex0dx0aFROM Ax0dx0aWHERE A.id NOT IN (SELECT DISTINCT B.stu_no FROM B)
⑺ SQL,用SELECT查询数据查询全部男学生的学号和姓名
select SNO,SNAME from S where SSESX='男'
下面的你没贴出详细的表结构,没人帮你了
欢迎采纳我
⑻ SQL数据库中查询选修了所有课程的学生的学号和姓名及选修门数
所有离开了数据结构(表结构)的SQL语句都是白搭!
先假设数据结构为
学生表(学号 主键或设有唯一索引,姓名,性别)
课程表(课程号 主键或设有唯一索引,课程名)
选课表(课程号,学号)-- 字段“课程号”和“学号"设有双字段唯一索引
查询出选修了所有课程的学生的学号、姓名和选修门数:
select a.学号,b.姓名,a.cnt as 选修门数 from
(select 学号,count(1) as as cnt from 选课表 group by 学号
having count(1)=(select count(1) from 课程表)) a,
学生表 b where a.学号=b.学号;
⑼ 简答运用T-SQL语句,在数据库student DB中查询student表中的学生的学号、姓名
工具/材料:Management Studio。
1、首先在桌面上,点击“Management Studio”图标。