重庆响应式网站方案,crm客户管理,如何维护自己公司的网站,关键字排名优化公司#x1f388;写在前面 #x1f64b;♂️大家好呀#xff0c;我是超梦梦梦梦。小伙伴们都知道#xff0c;不管是在学习中还是日常工作中#xff0c;几乎天天是要跟数据库打交道的#xff0c;为了更好的操作数据库#xff0c;我们的SQL知识储备是必不可少的。想要掌握好… 写在前面 ♂️大家好呀我是超梦梦梦梦。小伙伴们都知道不管是在学习中还是日常工作中几乎天天是要跟数据库打交道的为了更好的操作数据库我们的SQL知识储备是必不可少的。想要掌握好SQL那少不了每天的练习与学习。从今天开始小梦就和小伙伴们一起每天刷一道LeetCode-数据库SQL相关的题目在例举相关知识点帮小伙伴们练习与学习更好的掌握SQL。 ♂️ 小伙伴们如果在学习过程中有不明白的地方欢迎评论区留言提问小梦定知无不言言无不尽 1. 题目概述
题目 编写一个 SQL 查询满足条件无论 person 是否有地址信息都需要基于表1和表2两表提供 person 的以下信息 FirstName, LastName, City, State LeetCode原题地址点击进入~ 表1: Person
----------------------
| 列名 | 类型 |
----------------------
| PersonId | int |
| FirstName | varchar |
| LastName | varchar |
----------------------
PersonId 是Person表主键 表2: Address
----------------------
| 列名 | 类型 |
----------------------
| AddressId | int |
| PersonId | int |
| City | varchar |
| State | varchar |
----------------------
AddressId 是Address表主键
PersonId 是表 Person 的外键 2. 解题思路 1. 我们先通读一下题目先看题目中提到的表1person和表2address从表的结构可以看出表1person是人的姓名信息表2address是人的地址信息。 2. 我们都要通过Person表与AddressId表来查询出FirstName, LastName, City, State这四个字段的信息。查询结果是两个表里的列名所以需要多表查询。 3. 可能不是每个人都有地址信息所以查询出来的数据有的person就会有CityState两个字段的信息有的person就会没有对应显示为null。考虑到有的人可能没有地址信息要是查询结构要查所有人需要保留表1Person里的全部数据所以用左联结left join。 4. 表 Address 中的 PersonId 是表 Person 的外关键字两个表通过personId产生联结。 3. 代码实现
这里我们使用的是左外连接
select FirstName, LastName, City, State from Person left join Address on Person.PersonId Address.PersonId;
在LeetCode上执行测试是否成功 与预期结果一致通过 4. 知识小结——联表查询之外连接 该题目主要考察了联表查询外连接的相关知识点接下来带着小伙伴们快速回顾一下外连接的相关知识点帮助大家学习与巩固。 外连接分为三种左外连接(left join)右外连接(right join)全外连接(full join)。这里我们省略了outer 这个关键字。 外连接的一个重要特点至少有一方保留全集没有匹配行用NULL代替。 下面小梦把这三种外连接简单说一下 1. LEFT OUTER JOIN简称LEFT JOIN左外连接左连接 结果集保留左表的所有行但右表只包含与左表匹配的行。右表相应的空行为NULL值。 SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.xx 表2.xx 2. RIGHT OUTER JOIN简称RIGHT JOIN右外连接 (右连接) 结果集保留右表的所有行但左表只包含与右表匹配的行。左表相应的空行为NULL值。 SELECT * FROM 表1 RIGHT JOIN 表2 ON 表1.xx 表2.xx 3. FULL OUTER JOIN简称FULL JOIN全外连接 会把两个表所有的行都显示在结果表中。 SELECT * FROM 表1 FULL JOIN 表2 ON 表1.xx 表2.xx 感谢小伙伴们支持如果有什么疑问欢迎留言询问小梦定知无不言言无不尽