定义:
外连接: 假设A和B表进行连接,使用外连接的话,AB两表中的一张表为主表,一张为副表,主要查询的主表中的数据,捎带查询一下副表,当副表中的数据没有和主表中的数据匹配上,副表自动模拟出Null与之匹配。
特点;主表中的数据无条件的全部显示出来
内连接: 假设A和B表进行连接,使用内连接的话,凡是A表和B表能够匹配上的记录查询出来,这就是内连接。 AB两表没有主次之分
分类:
左外连接:
表示左边的表为主表
右外连接:
表示右边的表为主表
左连接有右连接的写法,右连接又有左连接的写法。
CREATE TABLE `course` (
`ID` int NOT NULL AUTO_INCREMENT,
`CouName` varchar(45) COLLATE utf8_bin DEFAULT '',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
CREATE TABLE `student` (
`ID` int NOT NULL AUTO_INCREMENT,
`stuName` varchar(45) COLLATE utf8_bin DEFAULT '' COMMENT '姓名',
`stuAge` int DEFAULT '0' COMMENT '年龄',
`Cid` int DEFAULT '0' COMMENT '班级id',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
左外连接:(student 为主表)的左外连接
select b.stuName, c.CouName from book.student as b left join book.course as c on b.Cid = c.ID;
result
右外连接:还是以student 为主表
select b.stuName, c.CouName from book.course as c right join book.student as b on b.Cid = c.ID;