表>外连接列出所有学生的修课情况,如果没有选课也列出其基本信息(左外连接)SELECT S#,SN,SS,SA,SD,C#,GR FROM S, SCWHERE S.S# *=SC.S# (SYBASE MSSQL)SELECT S#,SN,SS,SA,SD,C#,GR FROM S, SCWHERE S.S#=SC.S#(+)(ORACLE|SQL92标准)SELECT S#,SN,SS,SA,SD,C#,GRFROM S LEFT OUTER JION SC ON S.S#=SC.S#(MYSQLMSSQL|SQL99标准)
➢ 外连接 列出所有学生的修课情况,如果没有选课也列出其基 本信息(左外连接) SELECT S#,SN,SS,SA,SD,C#,GR FROM S, SC WHERE S.S# *=SC.S# (SYBASE MSSQL) SELECT S#,SN,SS,SA,SD,C#,GR FROM S, SC WHERE S.S# =SC.S#(+) (ORACLE | SQL92标准) SELECT S#,SN,SS,SA,SD,C#,GR FROM S LEFT OUTER JION SC ON S.S#=SC.S# (MYSQL MSSQL |SQL99标准) 表
表>复合条件连接检索选修课程号‘2'且成绩在90分以上的所有学生SELECT S.S# ,SN FROM S,SCWHERE S.S# = SC.S# AND SC.C#='2' AND SC.GR>=90检索每个学生选修的课程名及其成绩SELECT S.S#,SN,C.CN,SC.GR from S,SC,CWHERES.S#=SC.S# ANDSC.C#=C.C#
➢ 复合条件连接 检索选修课程号‘2’且成绩在90分以上的所有学生 SELECT S.S# ,SN FROM S,SC WHERE S.S# = SC.S# AND SC.C#=’2’ AND SC.GR>=90 检索每个学生选修的课程名及其成绩 SELECT S.S#,SN,C.CN,SC.GR from S,SC,C WHERE S.S# = SC.S# AND SC.C# = C.C# 表
表3.3.3嵌套查询>带IN谓词的子查询检索与“刘晨”同在一系的学生信息SELECT S#,SN.SD FROM S WHERE SD IN(SELECTSDFROM SWHERE SN=‘刘晨’)本例可以通过自连接来实现SELECT s1.S#, s1.SN, s1.SD FROM S s1, S s2WHERE s1.SD = s2.SD AND s2.SN='刘晨
3.3.3嵌套查询 ➢ 带IN谓词的子查询 检索与“刘晨”同在一系的学生信息 SELECT S#,SN,SD FROM S WHERE SD IN (SELECT SD FROM S WHERE SN=‘刘晨’) 本例可以通过自连接来实现 SELECT s1.S#, s1.SN, s1.SD FROM S s1, S s2 WHERE s1.SD = s2.SD AND s2.SN=’刘晨’ 表
表检索选修了课程名的为‘MA'的学生学号和姓名SELECT S#. SN FROM S WHERE S# IN(SELECT S#FROM SC WHERE C# IN(SELECT C# FROM C WHERE CN='MA'))本例同样可以用连接来实现SELECT S#,SN FROM S ,SC,CWHERE S.S#= SC.S# AND SC.C#=C.C#AND C.CN='MA
检索选修了课程名的为‘MA’的学生学号和姓名 SELECT S#, SN FROM S WHERE S# IN (SELECT S# FROM SC WHERE C# IN (SELECT C# FROM C WHERE CN=’MA’) ) 本例同样可以用连接来实现 SELECT S#,SN FROM S ,SC,C WHERE S.S# = SC.S# AND SC.C# = C.C# AND C.CN=’MA’ 表
>带比较运算的子香询当确定子查询的返回值是唯一时,可以使用比较运算符(注意子查询在比较符后)SELECT S#.SNFROM S WHERE SD-(SELECTSDFROMSWHERECN='刘晨')
➢ 带比较运算的子查询 当确定子查询的返回值是唯一时,可以使用比较运算 符(注意子查询在比较符后) SELECT S#,SN FROM S WHERE SD= (SELECT SD FROM S WHERE CN=’刘晨’)