--连接不仅仅可以在两个不同表中进行,也可以是同一个表和其自身进行连接,成为表的自身连接--查询每一门课程的间接先修课程(先行课的先行课)--在Course表中只有每门课程的直接先行课程,而没有没门课程的间接先行课程,如果我们需要找每门--课程的先行课程,首先根据这个课程的课程号找到这门课程的直接先行课,然后用这个直接先行课的--课程号在同一个表中作为课程号继续查找它的先行课,这时候就需要将Course和其自身进行连接--内连接的第一种写法:selectFirst.Cno,Second.Cpno
from Course First,Course SecondwhereFirst.Cpno=Second.Cno;--错误写法:--在from子句中是不允许使用as进行起别名的,直接使用"空格+别名"即可selectFirst.Cno,Second.Cpno
from Course First, Course SecondwhereFirst.Cpno=Second.Cno;--错误写法:--当一个属性的名字在进行了连接之后的表中有不是唯一的情况下,这时候在指定该属性列的时候--应该明确的指定该属性列所属的表的名字.(在为唯一的情况下可以不明确的指定,但也可以明确进行指定)select Cno,Cpno
from Course asFirst,Course SecondwhereFirst.Cpno=Second.Cno;--内连接的第二种写法selectFirst.Cno,Second.Cpno
from Course Firstinnerjoin Course secondonFirst.Cpno=Second.Cno;--查询学生表中的全部信息select *
from Student;--查询出比王敏年龄大的学生的姓名和学号--学生的姓名,年龄,学号都可以在学生表中查询到,我们可以将Student表和其自身进行非等值连接selectSecond.Sno,Second.Sname,
from Student First,Student SecondwhereFirst.Sname='王敏'andFirst.Sage<Second.Sage;--方式二:selectFirst.Sno,First.Sname
from Student First,Student SecondwhereSecond.Sname='王敏'andFirst.Sage>Second.Sage;