用户登录

使用关联,我们可以利用表与表之间的关系,重新去组织不同表的信息。比如我们想把用户和评论这两个表组织在一起,找出所有用户所撰写的对应的电影评论。找到的结果里面要包含用户的名称,还有对应的评论的内容。

SELECT user_name 用户名,还有 review_content ,评论的内容,注意这两栏内容是来自不同的数据表,user_name 是在 user 表里,review_content 是在 review 表里。

如果栏的名称有冲突的话,需要在栏的名称的前面,加上数据表的名称,然后一个点,后面是栏的名称。

FROM ,来自 user 还有 review 这两个表 ... 再用 WHERE 去设置一个条件,这个条件是把用户与评论这两个表组织在一起的非常关键的一步 ...

要设置的条件是 review 表里的 user_id 要跟 user 表里的 user_id 相匹配。回车 ... 用户还有评论这两个表就关联在一起了,关联以后这个表里面有两栏内容,来自用户表里的用户的名称,还有来自评论表里的评论的内容。因为我们设置了一个关联的条件,评论表里的 user_id 等于用户表里的 user_id ,所以,这里显示出来的就是对应用户还有对应的评论内容。

这也是为什么在设计数据表结构的时候,不直接把用户名放在评论的表里面,而是用了一个用户的 id。这样用户可以更改他的名称或者相关的设置,需要的时候,我们可以使用这条语句把这两个表的内容组织在一起。

SELECT user_name, review_content FROM user, review WHERE review.user_id = user.user_id;

关联也有很多方法,比如我们这里,在 FROM 后面指定的要关联的两个表,中间使用了一个逗号... 它的功能其实就相当于是 CROSS JOIN ... 交叉关联 ... 或者 INNER JOIN 内部关联。下面我们用 INNER JOIN 再试一下 ...

两个表之间用 INNER JOIN 连接 ... 然后把 WHERE 要换成 ON ... 也就是用 ON 来设置一下关联的时候要查看是否匹配的栏,也就是去对比一下两个表之间的共同点。回车 ... 跟前面的语句的效果是一样的 ...

SELECT user_name, review_content FROM user INNER JOIN review ON review.user_id = user.user_id;

在它的后面,我们可以继续使用 WHERE 去设置其它的条件。比如找出用户 id 是 1 的评论内容。WHERE user.user_id = 1

SELECT user_name, review_content FROM user INNER JOIN review ON review.user_id = user.user_id WHERE user.user_id = 1;

INNER 就是使用两个表之间的共同点进行关联,这个共同点匹配的话才会把他们关联在一起。它其实就是找出两个表相交集的数据。

关联 - JOIN《 MySQL 基础 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点