这里以两个表的连表为例:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`phone` varchar(255) DEFAULT NULL,
`address` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
CREATE TABLE `news` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`types` varchar(255) DEFAULT NULL,
`titles` varchar(255) DEFAULT NULL,
`contents` varchar(255) DEFAULT NULL,
`author` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
是以左表为基础,根据ON后面给出的两个表的条件将两个表连接起来。
结果是会将左表所有的查询数据展示出来,而右表只展示出ON后面的条件与左表满足的部分。
举例:以左表的username字段和右表的author字段作为两个表的连接字段将两个表连接起来;
select user.username,user.phone,news.types,news.author,news.titles from user
left join news on user.username = news.author
如图1
从图中可以看出左表的数据都展示出来了,而右表的数据只展示出了与左表连接的数据;
如果左表有数据和右表的数据为一对多的话,那么右表的多条对应左表一条的数据都展示出来。
是以右表为基础,根据ON后面给出的两个表的条件将两个表连接起来。
结果是会将右表所有的查询数据展示出来,而左表只展示出ON后面的条件与右表满足的部分。
举例:以左表的username字段和右表的author字段作为两个表的连接字段将两个表连接起来;
select user.username,user.phone,news.types,news.author,news.titles from user
right join news on user.username = news.author
如图2
从图中可以看出右表的数据都展示出来了,而左表的数据只展示出了与右表连接的数据;
如果右表有数据和左表的数据为多对一的话,那么左表的一条对应右表多条的数据会重复展示。
是同时将两个表作为参考对象,根据ON后面给出的两个表的条件将两个表连接起来。
结果则是只有两个表同时满足ON后面的条件的部分才会展示出来。
举例:以左表的username字段和右表的author字段作为两个表的连接字段将两个表连接起来;
select user.username,user.phone,news.types,news.author,news.titles from user
inner join news on user.username = news.author
如图3
从图中可以看出只有左表和右表两个表连接有相同的数据的部分才会展示出来。