SQL的多表查詢的多種解法與自己總結(jié)的多種語法

查詢所有名字包含王的學(xué)生的信息和代課老師
解法1(未用多表查詢):
select * from stuinfo? where? Sname LIKE '%王%'?
select * from teacherinfo? where? Tname LIKE '%王%'
解法2(用多表查詢):
select * from classinfo as a, teacherinfo as b, stuinfo as c where a.TeacherID=b.TeacherID and a.ClassId=c.ClassID? and Sname LIKE '%王%'
自己總結(jié)的語法
select (列名)from (表名1)?as(表名1的別名)/*注釋:別名是便于少打原表名*/(表名2)as(?表名2的別名),?(表名3)?as(表名3的別名)?where a.TeacherID=b.TeacherID?and a.ClassId=c.ClassID??and?(附加條件)
解法3(用多表查詢):
select * from (classinfo a left join teacherinfo b on? a.TeacherID=b.TeacherID)left join stuinfo c on a.ClassID = c.ClassID where Sname LIKE '%王%' /*? ??()可以省略,()內(nèi)的內(nèi)容可看成一個整體? ? ?*/
自己總結(jié)的語法
select (列名)from?(表名1)?as(表名1的別名)left join(表名2)as(?表名2的別名)on(a.TeacherID=b.TeacherID)? ??left join(表名3)?as(表名3的別名)on(a.ClassID = c.ClassID)?where (附加條件)
解法4(用多表查詢):
select *? from classinfo as a
inner join teacherinfo as b on(a.TeacherID=b.TeacherID)
inner join stuinfo as c on(a.ClassID = c.ClassID)
where Sname LIKE '%王%'
自己總結(jié)的語法
select (列名)from?(表名1)?as(表名1的別名)inner join(表名2)as(?表名2的別名)on(a.TeacherID=b.TeacherID)? ??inner join(表名3)?as(表名3的別名)on(a.ClassID = c.ClassID)?where (附加條件)
(?以上中的as與()可以省略? ?(a.TeacherID=b.TeacherID)等類似于一個表名,被看成了一個整體?)