Mlog3-组合两个表

2019-4-5

学习Mysql ,每日做一道数据库题目,文章仅用做做题记录用途。–章记

文章目录:

  1. 题目要求–分析
  2. 具体实现–动手
  3. 结果
  4. 知识拓展
  5. 总结

1. 题目要求–分析

表1: Person

1
2
3
4
5
6
7
8
+-------------+---------+
| 列名 | 类型 |
+-------------+---------+
| PersonId | int |
| FirstName | varchar |
| LastName | varchar |
+-------------+---------+
PersonId 是上表主键

表2: Address

1
2
3
4
5
6
7
8
9
+-------------+---------+
| 列名 | 类型 |
+-------------+---------+
| AddressId | int |
| PersonId | int |
| City | varchar |
| State | varchar |
+-------------+---------+
AddressId 是上表主键

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

1
FirstName, LastName, City, State

分析:

1、选取表格中的部分数据,用SELECT(用于从数据库中选取数据);
2、涉及两个表格,用JOIN (用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段);
3、无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息,用LEFT JOIN(LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行);

2. 具体实现–动手

1
2
3
4
5
# Write your MySQL query statement below
select Person.FirstName,Person.LastName,Address.City,Address.State
from Person
left join Address
on Person.PersonId=Address.PersonId

3. 结果

2019-4-5

4. 知识拓展

1
2
3
4
INNER JOIN:如果表中有至少一个匹配,则返回行
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
FULL JOIN:只要其中一个表中存在匹配,则返回行

5. 总结

我希望自己的大脑像 CPU 一样处理日常事物,每一件事就像一个进程,当我 focus on 一件事时,大脑被这件事完全占据,当进程由于外部资源限制被停滞时可以回到等待队列。但我希望每一件事都是按照最快时间去处理进入完成队列,每件事都尽可能少的出现在等待队列,这样每天就会好快活。