SQL
题目1:
问题描述:
S (SNO,SNAME) 学生关系。SNO 为学号,SNAME 为姓名
C (CNO,CNAME,CTEACHER) 课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师
SC(SNO,CNO,SCGRADE) 选课关系。SCGRADE 为成绩
1.(1)找出选修过“李明”老师讲授课程的所有学生姓名
--实现代码:法一
Select *
from SC,C,S
Where SC.CNO=C.CNO AND SC.SNO=S.SNO AND CTEACHER='李明'
---法二:-------------
Select *
from S
Where Sno IN( Select Sno
from C,SC
Where C.[Cno]=SC.[Cno] AND CTEACHER='李明')
(2)找出没有选修过“李明”老师讲授课程的所有学生姓名
--实现代码:法一
Select SName
from S
Where [Sno] NOT IN( Select SC.[Sno]
from SC,C
Where SC.CNO=C.CNO AND CTEACHER='李明')
(3)找出没有选修过课程号为"1"的所有学生姓名
--实现代码
Select SName
from S
Where [Sno] NOT IN( Select [Sno] from SC Where CNO='1')
------------------------------------------------------------------------------------------------------------------------------------------
2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
--实现代码:
Select S.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE)
from S,SC,( Select SNO
from SC
Where SCGRADE<60
GROUP BY SNO
&nb
相关文档:
1. 如果你希望使用selcet top语句,并且还要附带where条件,那么条件中的列就得是合适的索引,如聚集索引、复合索引里的主列
等,同时,where条件里也要尽量避开使用函数,or,判断NULL等会引起全部扫描的语句,不然执行的是全表扫描。
2. 通过设置STATISTICS我们可以查看执行SQL时的执行效率以及相关性能测试 ......
Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。
我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进 ......
1.一道SQL语句面试题,关于group by
表内容:
2005-05-09 胜
2005-05-09 胜
2005-05-09 负
2005-05-09 负
2005-05-10 胜
2005-05-10 负
2005-05-10 负
如果要生成下列结果, 该如何写sql语句?
胜 负
2005-05-09 2 2
2005-05-10 ......
declare @id varchar(10)
declare @nm varchar(10)
declare @table as table(emp varchar(10),empname varchar(10))
declare CurEmp cursor for select top 6 empid,empname from employee
open CurEmp
fetch next from CurEmp into @id,@nm
While @@fetch_status=0
begin
insert @table(emp,e ......