学习Mysql ,每日做一道数据库题目,文章仅用做做题记录用途。--章记
文章目录:
- 题目要求--分析
- 具体实现--动手
- 结果
- 知识拓展
- 总结
1. 题目要求--分析
表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
分析:
1、选取表格中的部分数据,用SELECT(用于从数据库中选取数据);
2、涉及两个表格,用JOIN (用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段);
3、无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息,用LEFT JOIN(LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行);
2. 具体实现--动手
# 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. 结果
image4. 知识拓展
INNER JOIN:如果表中有至少一个匹配,则返回行
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
FULL JOIN:只要其中一个表中存在匹配,则返回行
5. 总结
我希望自己的大脑像 CPU 一样处理日常事物,每一件事就像一个进程,当我 focus on 一件事时,大脑被这件事完全占据,当进程由于外部资源限制被停滞时可以回到等待队列。但我希望每一件事都是按照最快时间去处理进入完成队列,每件事都尽可能少的出现在等待队列,这样每天就会好快活。
网友评论