龙空技术网

「你所不知道的Mysql」第一篇 组合两个表

儛2018 207

前言:

而今我们对“两个mysql服务”大体比较注意,朋友们都需要剖析一些“两个mysql服务”的相关文章。那么小编也在网络上汇集了一些有关“两个mysql服务””的相关文章,希望大家能喜欢,各位老铁们快快来了解一下吧!

楔子

作为一个程序员,几乎不可避免的要接触到数据库。当前数据库使用最多的非Mysql莫属,提升这方面的能力非常重要。

本系列文章将以实际应用入手,实例解答,介绍和分析各类sql语句。摆脱工具书的生涩难懂。

表1: Person

+-------------+---------+| 列名 | 类型 |+-------------+---------+| PersonId | int || FirstName | varchar || LastName | varchar |+-------------+---------+PersonId 是上表主键

表2: Address

+-------------+---------+| 列名 | 类型 |+-------------+---------+| AddressId | int || PersonId | int || City | varchar || State | varchar |+-------------+---------+AddressId 是上表主键

编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:

FirstName, LastName, City, State

这个场景考察的是对join的理解。当主表的数据在副表中不存在时,几种join的表现会有何不同。

join 用于多表中字段之间的联系,语法如下:

... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona

table1:左表;table2:右表。

JOIN 按照功能大致分为如下三类:

INNER JOIN(内连接,或等值连接):取得两个表中存在连接匹配关系的记录。LEFT JOIN(左连接):取得左表(table1)完全记录,即是右表(table2)并无对应匹配记录。RIGHT JOIN(右连接):与 LEFT JOIN 相反,取得右表(table2)完全记录,即是左表(table1)并无匹配对应记录。

方便理解:

inner join 产生同时符合A和B的一组数据。

inner join

left join,(或left outer join:在Mysql中两者等价,推荐使用left join.)左连接从左表(A)产生一套完整的记录,与匹配的记录(右表(B)) .如果没有匹配,右侧将包含null。

left join

right join就和left join相反,由右侧作为主表。

本题的答案及left join (left outer join).

select FirstName, LastName, City, Statefrom Personleft join Addresson Person.PersonId = Address.PersonId;

希望大家能通过这篇文章有所收获,欢迎大家提供意见和建议,我将会在后面的文章中会注意改进。

标签: #两个mysql服务