- 20
- 0
- 约9.42万字
- 约 26页
- 2016-12-07 发布于河南
- 举报
Oracle高级查询50句
Oracle高级查询50句
一个题目涉及到的50个Sql语句
--(下面表的结构以给出,自己在数据库中建立表.并且添加相应的数据,数据要全面些. 其中Student表中,SId为学生的ID)
------------------------------------表结构--------------------------------------
--学生表tblStudent(编号StuId、姓名StuName、年龄StuAge、性别StuSex)
--课程表tblCourse(课程编号CourseId、课程名称CourseName、教师编号TeaId)
--成绩表tblScore(学生编号StuId、课程编号CourseId、成绩Score)
--教师表tblTeacher(教师编号TeaId、姓名TeaName)
---------------------------------------------------------------------------------
--问题:
--1、查询“001”课程比“002”课程成绩高的所有学生的学号;
Select StuId From tblStudent s1
Where (Select Score From tblScore t1 Where t1.StuId=s1.stuId And t1.CourseId=001)
(Select Score From tblScore t2 Where t2.StuId=s1.stuId And t2.CourseId=002)
--2、查询平均成绩大于60分的同学的学号和平均成绩;
Select StuId,Avg(Score) as AvgScore From tblScore
Group By StuId
Having Avg(Score)60
--3、查询所有同学的学号、姓名、选课数、总成绩;
Select StuId,StuName,
SelCourses=(Select Count(CourseId) From tblScore t1 Where t1.StuId=s1.StuId),
SumScore=(Select Sum(Score) From tblScore t2 Where t2.StuId=s1.StuId)
From tblStudent s1
--4、查询姓“李”的老师的个数;
Select Count(*) From tblTeacher Where TeaName like 李%
--5、查询没学过“叶平”老师课的同学的学号、姓名;
Select StuId,StuName From tblStudent
Where StuId Not In
(
Select StuID From tblScore sc
Inner Join tblCourse cu ON sc.CourseId=cu.CourseId
Inner Join tblTeacher tc ON cu.TeaId=tc.TeaId
Where tc.TeaName=叶平
)
--6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;
Select StuId,StuName From tblStudent st
Where (Select Count(*) From tblScore s1 Where s1.StuId=st.StuId And s1.CourseId=001)0
And
(Select Count(*) From tblScore s2 Where s2.StuId=st.StuId And s2.CourseId=002)0
--7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;
Select StuId,StuName From tblStudent st Where not exists
(
Select CourseID From tblCourse cu Inner Join tblTeacher tc On cu.TeaID=tc.TeaID
Where tc.TeaName=叶平 And CourseID not in
(Select CourseID From tblScore Where StuID=st.StuID)
)
--8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;
Select StuId,StuName From tblStudent s1
原创力文档

文档评论(0)