SQL的多表查询的多种解法与自己总结的多种语法

查询所有名字包含王的学生的信息和代课老师
解法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 '%王%'
自己总结的语法
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 '%王%' /* ()可以省略,()内的内容可看成一个整体 */
自己总结的语法
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 '%王%'
自己总结的语法
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)等类似于一个表名,被看成了一个整体 )