数据库连接方式讲解
数据库有5种连接方式:内连接、左连接、右连接、全外连接、交叉连接
数据准备:两张表,五班没有学生,学号8的学生cid为7,在class表内没有记录
1、内连接(join,inner join)查询出两张表有关联的数据
select * from student,class where student.cid=class.id;
select * from student join class on student.cid=class.id;
2、左连接(left join、left outer join)查出左表所有数据,右表没有对应关联数据就置空
select * from student left join class on student.cid=class.id;
3、右连接(right join,right outer join)查出右表所有数据,左表没有对应关联数据就置空
select * from student right join class on student.cid=class.id;
4、全外连接(FULL OUTER JOIN)
注意:MySQL是不支持全外的连接的,这里给出的写法适合Oracle和DB2。但是可以通过左外和右外求合集来获取全外连接的查询结果。
select * from student left join class on student.cid=class.id
union
select * from student right join class on student.cid=class.id;
左连接、右连接、全外连接注意:where的条件不要放on后面
5、交叉连接(CROSS JOIN)
交叉连接(CROSS JOIN):有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,也叫笛卡尔积(没有条件的inner join)。
语句1:隐式的交叉连接,没有CROSS JOIN。
语句2:显式的交叉连接,使用CROSS JOIN。
两种返回的结果一致的,如下: