一个简单例子理解连表查询

有两张表article(文章),category(分类),article表中有art_id、title、author、cate_id四个字段,category表中有cate_id、cate_name两个字段。

如图:

一个简单例子理解连表查询_第1张图片                        

一个简单例子理解连表查询_第2张图片

现在想要查出包括(art_id、title、author、cate_name)的所有文章信息怎么做?

SELECT *,cate_name
FROM
article LEFT JOIN category
ON article.`cate_id`=category.`cate_id`;

一个简单例子理解连表查询_第3张图片

发现art_id=4的那一行因为没有匹配的值则默认使用了NULL填充,这和左查询(有的叫左外连接)的机制有关! 
左查询是以左表为准(对应图中的article表),逐行在右表中进行筛选,如果有匹配到的值则正常显示,如果没有则用null填充;

如何剔除这些null值的行呢,这个时候就需要用到内连接inner join。

SELECT *,cate_name
FROM
article INNER JOIN category 
ON category.cate_id=article.cate_id;

 

一个简单例子理解连表查询_第4张图片

为什么会这样子,因为iner join会提取出2张表的共同交集;

这个例子中,我们可以学习到包括了左连接LEFT JOIN和内连接INNER JOIN所有连表查询的运行机制,是不是很有收获。

你可能感兴趣的:(mysql)