1. sql关系代数,求至少选修了两门以上课的学生的学号,用关系代数写出来。
代码入戏:
use hngy
go
/*查询至少选修两门课程的学生学号*/
select StuNO,count(CNO) 选修门数 from SC
group by StuNO
having count(CNO)>=2
go
(1)sql筛选选两门课扩展阅读
关系代数的运算有集合运算(集合<表>与集合<表>之间的运算)和关系运算(集合<表>内部的运算)集合运算:并运算: R U S 差运算: R - S 交运算: R ∩ B 笛卡儿积: R x S (组合运算)。
并,交,差(是对各集合元组的重新组合;要求:参加集合操作的各结果表的列数必须相同,对应项的数据类型也必须相同)
关系运算:
选择 , σF(R)={t|t∈R∧F(t)=True}σF(R)={t|t∈R∧F(t)=True} ------水平分割表
投影 , πA(R)={t[A]|t∈R}πA(R)={t[A]|t∈R} -------垂直分割表
连接 【/* 这里是比较运算符 */,为大于,小于的连接叫比较连接,为等于的连接叫等值连接,自然连接 ⋈ /*它是等值连接的特殊情况,结果集中公共的属性只保留一个------去除重复列。
两表关联,外键主建出现在同一集合里(外键和主键就是重复的列,要去除一列),2*/自然, = σ XθY(R×S),扩展的还有外连接 】
2. 三张表查询出选了两门课以上的学生,学生表课程表选课表sql怎么写
学生表:student(学号:sno、姓名:sname、性别:sgender、年龄:sage)
课程表:couse (课程编号:cno、课程名称:cname)
选课表:sc(学号:sno、课程编号:cno、成绩:marks)
SELECT s.sno ,
s.sname ,
c.cname
FROM student s
INNER JOIN sc t1 ON t1.sno = s.sno
INNER JOIN couse c ON sc.cno = c.cno
WHERE s.sno IN ( SELECT t.sno
FROM sc t
GROUP BY t.sno
HAVING COUNT(t.cno) = 2 )
3. SQL如何查询同时选了“A”和“B”两门课的学生
select
a.学号
from
选课表a
innerjoin选课表bona.学号=b.学号
where
a.课程名称='a'
andb.课程名称='b'
4. sql如何查询选课两门以上而且各门课程均及格的学生学号及其所选课程的门数
一楼的根本没看清楚,二楼的过分了
我觉得,你这个写的基本正确,但是既然是“各门课程均及格”,那么应该用having min(成绩)>=60,而你写的“WHERE 成绩>=60”,这个成绩不明确…………我的感觉。
5. SQL查询既选修了‘现代数据库技术’,又选修‘网络操作系统’这两门课程的学生的详细信息。
方法一:采用嵌套查询,两层大嵌套,总体思路是在学号是选修了现代数据库技术的学生中找选修了网络操作系统这门课的学生
select * from student
where no in (select sno from sc
where cno=(select cno from course
where cname='网络操作系统'))and
no in (select no from student
where no in (select sno from sc
where cno=(select cno from course
where cname='现代数据库技术')))
方法二,用连接查询应该简单点,我就不写了。嘿嘿
6. sql 提问 查询选课表中同一个学生选择多门课的学生信息,选课表有学号,姓名,课目,成绩等字段.没有主健.
--查询选课表中同一个学生选择多门课的学生信息
select * from student
in
(select student_id from select_course group by student_id having count(course_id)>1)
/* 注:我估计你有三张表,学生信息表(student),科目表(course),选修表(select_course),
查询时先查选修表,将选择科目大于一门的同学id取出,然后再在学生信息表中匹配这些信息,将这些选修科目大于一门的学生信息输入。*/
祝你成功 ^^)
7. SQL语句:查询担任两门课程以上授课任务的教师,显示教师的工号和授课数量
给出表的表结构
给你个大概吧,若表tableName有课程ID,教师ID,sql如下
select * from (
select count(课程ID) num --授课数
,教师ID from tableName group by 教师ID
) t
where t.num>=2
8. 如何用sql实现列出至少选修两门课程的学生学号
select sno,count(cno) from sc
group by sno
having count(cno) >=2
9. access中的SQL如何写找出一个表中同时选修了课程编号为1和2两门课的学生的姓名
Select 姓名 from Table where 课程编号=1 and 课程编号=2
10. SQL查询选修了两门以上(包括两门)课程的学生信息
1:select sno(学生的学号) from sc(学生选课表)
group by sno having count(*)>1
2:select s.sno,s.name from student s
where s.sno in(select sno from score sc
group by sc.cno having sum(sc.sno)>2 )
3:应为三张表;学生表A 课程表B 选修表C(cid aid bid)--没有选修任何课程的学生的学号