案例:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State

创建两张表,表1为Penson,表2为Address,如下图所示
案例:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State_第1张图片
要求:编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State

问题分析

    使用连接查询,分为内连接和外连接
    内连接(inner join)会舍弃两表中不相同的部分
    外连接(left join和right join)除了显示符合条件的记录外,还显示表中的记录
以例子为例进行分析
先在表Person表中添加第4个数据,但不添加对应 Address表 数据:
案例:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State_第2张图片
若使用内连接完成本案例,SQL语句为

select P.FirstName,P.Lastname,A.City,A.State from Person P join Address A on P.PersonId = A.PersonId;

结果为
案例:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State_第3张图片
显示正确。
若使用外连接(left join),SQL语句为

select P.FirstName,P.Lastname,A.City,A.State from Person P left join Address A on P.PersonId = A.PersonId;

结果如下
案例:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State_第4张图片
同样结果也是正确。

你可能感兴趣的:(mysql,mysql)