用一句话概括就是:左连接就是左边全部保留按条件查出右边,右连接就是右边全部保留按条件查出左边。
说得有点抽象,其实并没有什么难度,还是自己运行下数据库就明白了。
数据库建表语句如下:
create database if not exists `emp`; USE `emp`; DROP TABLE IF EXISTS `dept`; CREATE TABLE `dept` ( `depid` varchar(50) NOT NULL, `deptname` varchar(100) default NULL, PRIMARY KEY (`depid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into `dept`(`depid`,`deptname`) values ('01','部门1'),('02','部门2'),('03','部门3'),('04','部门4'); DROP TABLE IF EXISTS `emp`; CREATE TABLE `emp` ( `empid` varchar(50) NOT NULL, `empname` varchar(50) default NULL, `depid` varchar(50) default NULL, PRIMARY KEY (`empid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into `emp`(`empid`,`empname`,`depid`) values ('0001','柳梦璃','01'),('0002','韩菱纱','01'),('0003','云天河','02'),('0004','慕容紫英','03'),('0005','玄霄',NULL),('0006','九天玄女',NULL);
左连接:select * from dept d left join emp e on d.depid=e.depid;
右连接:select * from dept d right join emp e on d.depid=e.depid;
内连接:select * from dept d inner join emp e on d.depid=e.depid;
内连接可省略inner关键字。