今天主要的内容是要讲解SQL中关于Join、Inner Join、Left Join、Right Join、Full Join、On、 Where区别和用法,不用我说其实前面的这些基本SQL语法各位攻城狮基本上都用过。但是往往我们可能用的比较多的也就是左右连接和内连接了,而且对于许多初学者而言不知道什么时候该用哪种语法进行查询,并且对于左右,或者内连接查询的时候关于ON 和Where 的作用也是模糊不清的,说不出其中的一个大概的差别,因此接下来请容我把它们好好描述一遍。
概念:用于两表或多表之间数据联立查询
select * from Students s,Class c where s.ClassId=c.ClassId
概念:与Join相同,两表或多表之间联立查询数据,因此我们在使用多表join查询的时候既可以使用where关联,也可以是inner join关联查询
select * from Students s inner join Class c on s.ClassId=c.ClassId
概念:以左表中的数据为主,即使与右表中的数据不匹配也会把左表中的所有数据返回
select * from Students s left join Class c on s.ClassId=c.ClassId
概念:与Left Join的用法相反,是以右表中的数据为主,即使左表中不存在匹配数据也会把右表中所有数据返回
select * from Students s right join Class c on s.ClassId=c.ClassId
概念:返回表中所有的数据数据,无论匹配与否
select * from Students s Full JOIN Class c on s.ClassId=c.ClassId
select * from Students s inner JOIN Class c on s.ClassId=c.ClassId and s.Sex='男'
select * from Students s left join Class c on s.ClassId=c.ClassId and s.Sex='男'
--全连接 select * from Students s full join Class c on s.ClassId=c.ClassId --全连接加on查询 select * from Students s full join Class c on s.ClassId=c.ClassId and s.Sex='男'
1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录(以左连接为例)。
2、where条件是在临时表生成好后,再对临时表产生的数据进行过滤条件筛选。
最后我想说的是,有时候我们总认为概念性的东西很简单而忽视了实践。其实往往一些基础性的东西才是我们为往后构造的万丈高楼的前提,坚持实践,坚持动手,你会发现许多你没有想到过的问题哟!