假设学生表为A,学号字段为id,姓名字段为name;\x0d\课程表为B,其中row_id为课程编号,stu_no为选修该门课的学生的学号\x0d\SQL:\x0d\SELECT Aid,Aname\x0d\FROM A\x0d\WHERE Aid NOT IN (SELECT DISTINCT Bstu_no FROM B)
所有离开了数据结构(表结构)的SQL语句都是白搭!
先假设数据结构为
学生表(学号 主键或设有唯一索引,姓名,性别)
课程表(课程号 主键或设有唯一索引,课程名)
选课表(课程号,学号)-- 字段“课程号”和“学号"设有双字段唯一索引
查询出选修了所有课程的学生的学号、姓名和选修门数:
select a学号,b姓名,acnt as 选修门数 from
(select 学号,count(1) as as cnt from 选课表 group by 学号
having count(1)=(select count(1) from 课程表)) a,
学生表 b where a学号=b学号;
1、首先在电脑上打开数据库软件。然后附加有学生表和成绩表的数据库。
2、然后选中数据库,右键选择新建查询。在右边的空白框,输入命令select 学生表学号,avg(成绩) as 平均分。
3、将学生表和成绩表关联起来。命令为from 学生表 join 成绩表 on 学生表学号=成绩表学号。
4、用group by 命令对学生表中的学号进行分组。命令为group by 学生表学号。
5、用having命令。输出平均分大于80分的条件。
6、然后在表中没有平均分一项。所以要用as命令进行附加。
1select from 表名 where 学号 like '%[4,5]'
2select from 表名 group by 学生号 having 成绩>avg(成绩)
1select from XSQK,KC,XS_KC where XSQK学号=XS_KC学号 and XSQK课程号=XS_KC课程号 and XSQK学号 like '%[4,5]'------------------的部分是查询所有列,你可以针对的填上你想要的列
2select from XSQK,KC,XS_KC -----------这是要从3个表中查询
where XSQK学号=XS_KC学号 and XSQK课程号=XS_KC课程号 -------这是3个表关联到一起
and XS_KC学号 in---------我限定的条件 学号在in里面
(select XS_KC学号 from XS_KC group by XS_KC学号 having min(成绩)>60)
------------嵌套的查询是 通过学号分组 每个人有多个成绩,最小的成绩大于60 说明他所有成绩都大于60 ,返回的是学号,
-----------------最终结果是 返回所有成绩都大于60的所有同学的全部信息
如果不明白 追问
以上就是关于怎样用sql语言在数据库查找没有选修任何课程学生的学号和姓名全部的内容,包括:怎样用sql语言在数据库查找没有选修任何课程学生的学号和姓名、SQL数据库中查询选修了所有课程的学生的学号和姓名及选修门数、SQL命令 “学生”数据库中有 “学生表”、“课程表”和 “成绩表”。 “学生表”中包含学号、姓名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)