A. 用sql语句实现:学生表、课程表、选课表三张表中的问题:
第一个
select s.sno, s.sname
from student s, sc t
where s.sno = t.sno
and t.cno = (
select c.cno
from couse c
where c.cname = '计算机原理'
);
第二个:
select c.cname
from student s, couse c, sc t
where c.cno = t.cno and t.sno = s.sno and s.sname = '周星驰';
第三个:
select s.sno, s.sname
from student s
where s.sno in (
select t.sno
from sc t
group by t.sno
having count(t.cno) = 5
);
我已经在本地数据库建表测试过了,如果有什么问题,可以再联系我。
B. SQL选课表如何判断选课时间重复
这个你描述的不是很清楚
如果是表里的数据 可以分组查数量
例如
select name ,count(*) from table_name where shijian=** group by name having count(*)>1
但是如果表中没有,是新增数据 ,则
let v_count = select count(*)from table_name where shijian=**
if v_count=0 then
insert ****
else
时间重复
C. SQL问题有选课表,课程表,学生表,查询即选择数据库有选择了操作系统的学生
用子查询
select 姓名
from 学生,选课,课程
where 学生.学号=选课.学号 and 选课.课程号=课程.课程号 and 课程.课程名='数据库'
and 学生.学号 in
(select 学生.学号
from 学生,选课,课程
where 学生.学号=选课.学号 and 选课.课程号=课程.课程号 and 课程.课程名='操作系统';
}
D. sql中创建课程表,学生表,选课表,执行错误,求高手改正下~
您好,从您的SQL语法中猜测,你是使用T-SQL在SQL SERVER中建立数据库。
您的前两个SQL中把primarykey 写成primary key中间加个空格。
第三个语句,把identify换成大写,即可。我已经在 sqlserver2000中测试通过了语句。呵呵。
希望能给你提供点信息。祝你好运。
E. SQL:选课表(学号,课程号,成绩),现要查询成绩最高的三个学生的学号、课程号和成绩,包括并列情况
select * from 选课 where 成绩>=(select 成绩 from (select 成绩,row_number()over(order by 成绩 desc nulls last ) r from 选课) where r=3) order by 成绩 desc。
考虑了并列关系,原理是先求出第三名同学的成绩,然后与第三名同学的成绩相等的同学认为等同于第三名,最后输出的是前三名同学,和第三名并列的也一并输出。如果看不懂里面某个代码可以告诉我,我用的是ORACLE。
F. 用SQL语句实现:学生表、课程表、选课表三张表中的问题:
1)select 课程表.课程名,count(学号)From 课程表 inner join 选课表On 课程表.课程号=选课表.课程号Group by 学号 2)Create View AllChoosenAs select DISTINCT(课程表.课程名)
From 课程表 inner join 选课表 On 课程表.课程号=选课表.课程号 3)Select 学生表.姓名 From 学生表 Where 学号 Not In (Select 学号 From 选课表) 4)select 学生表.学号,学生表.姓名,课程表.课程名,课程学分 From 学生表 Left Join 选课表 On 学生表.学号=选课表.学号 Inner Join 课程表 On 课程表.课程号=选课表.课程号 5)select 学生表.姓名 From 学生表 where 学号 In (Select 学号 From 选课表 Group by 学号 Having(count(课程号)>2) 6)select 学生表.姓名 From 学生表 where 学号 In (Select 学号 From 选课表 Group by 学号 Having(count(课程号)=select count(*) From 课程表) 7)delete from 选课表 where 学号=(select top 1 学号 From 学生表 where 姓名='张三')