【LeetCode-SQL每日一练】——1.组合两个表

🎈写在前面

        🙋‍♂️大家好呀,我是超梦梦梦梦。小伙伴们都知道,不管是在学习中还是日常工作中,几乎天天是要跟数据库打交道的,为了更好的操作数据库,我们的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. 我们先通读一下题目,先看题目中提到的表1(person)和表2(address),从表的结构可以看出,表1(person)是人的姓名信息,表2(address)是人的地址信息

       2. 我们都要通过Person表与AddressId表来查询出FirstName, LastName, City, State)这四个字段的信息。查询结果是两个表里的列名,所以需要多表查询

       3. 可能不是每个人都有地址信息,所以查询出来的数据有的person就会有City,State两个字段的信息,有的person就会没有,对应显示为null。考虑到有的人可能没有地址信息,要是查询结构要查所有人,需要保留表1(Person)里的全部数据,所以用左联结(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


😀感谢小伙伴们支持,如果有什么疑问,欢迎留言询问,小梦定知无不言,言无不尽!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438381.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode-SQL每日一练】——2. 第二高的薪水

🎈写在前面 🙋‍♂️大家好呀,我是超梦。小伙伴们都知道,不管是在学习中还是日常工作中,几乎天天是要跟数据库打交道的,为了更好的操作数据库,我们的SQL知识储备是必不可少的。想要掌握好SQL&am…

【LeetCode-SQL每日一练】—— 181. 超过经理收入的员工

🎈写在前面 🙋‍♂️大家好呀,我是超梦。小伙伴们都知道,不管是在学习中还是日常工作中,几乎天天是要跟数据库打交道的,为了更好的操作数据库,我们的SQL知识储备是必不可少的。想要掌握好SQL&am…

【windows环境——VSCode安装教程】

大家好呀!我是超梦,今天给小伙伴们带来一个最新版在windows环境的VSCode安装教程,话不多说我们开始吧。 VSCode安装下载与安装设置中文环境下载与安装 1. 第一步,进入官网,根据自己的电脑位数选择下载,小梦…

C#通用类Helper整理

★前言 最近下载了tita_chou在CSDN上传的一个资源,是在工作中整理的C#帮助类,里面包含了很多实用的类,想到我之前收集过自己用到少的可怜的类,心生敬意啊。当粗略的查看了那个资源,发现有一些是重复的,有一…

【LeetCode-SQL每日一练】—— 182. 查找重复的电子邮箱

🎈写在前面 🙋‍♂️大家好呀,我是超梦。小伙伴们都知道,不管是在学习中还是日常工作中,几乎天天是要跟【数据库】打交道的,为了更好的操作数据库,我们的SQL【知识储备】是必不可少的。想要掌握…

【你会用代码画年兽吗】20行代码使用JS实现虎年春节倒计时 —— 红红火火过虎年

🍊前言 🍊哈喽小伙伴们好呀,我是超梦,大家可以叫我小梦~,马上就要过虎年春节啦,在新的一年里祝愿大家🐯身体健康,🐯平平安安,🐯虎气冲天&#xf…

【LeetCode-SQL每日一题】——183. 从不订购的客户

🎈写在前面 🙋‍♂️大家好呀,我是超梦。小伙伴们都知道,不管是在学习中还是日常工作中,几乎天天是要跟数据库打交道的,为了更好的操作数据库,我们的SQL知识储备是必不可少的。想要掌握好SQL&am…

c#进阶(1)—— Task Parallel Library 并行执行与串行执行

本文参考的博文出处:http://www.cnblogs.com/stoneniqiu/p/4857021.html 总体说明: (1)、理解硬件线程和软件线程 硬件线程也称为逻辑内核,一个物理内核可以使用超线程技术提供多个硬件线程。所以一个硬件线程并不代…

【leetcodeMySQL每周一练】- 5道题带你练习mysql

🎈写在前面 🙋‍♂️大家好呀,我是超梦。小伙伴们都知道,不管是在学习中还是日常工作中,几乎天天是要跟数据库打交道的,为了更好的操作数据库,我们的SQL知识储备是必不可少的。想要掌握好SQL&am…

【读书笔记】.Net并行编程高级教程--Parallel

一直觉得自己对并发了解不够深入,特别是看了《代码整洁之道》觉得自己有必要好好学学并发编程,因为性能也是衡量代码整洁的一大标准。而且在《失控》这本书中也多次提到并发,不管是计算机还是生物都并发处理着各种事物。人真是奇怪&#xff0…

【除夕最炫烟花代码】—— HTML+JQuery实现2022跨年烟花特效

🎇前言 大家好呀!我是小梦是✨。 除夕马上到来,激动的心颤动的手!今年由于管控严厉,许多地方禁止燃放烟花爆竹,既然不让我们放,那我们就用代码来实现烟花特效! 文末有彩蛋哦~ 烟花效…

【LeetCode-SQL每日一练】—— 595. 大的国家

🎈写在前面 🙋‍♂️大家好呀,我是超梦。大家可以叫我小梦~ 小伙伴们都知道,不管是在学习中还是日常工作中,几乎天天是要跟数据库打交道的,为了更好的操作数据库,我们的SQL知识储备是必不可少的…

c#进阶(2)—— ASP.NET MVC 常用路由总结

1、URL模式 路由系统用一组路由来实现它的功能,这些路由共同组成了应用系统URL架构或方案,这种URL架构是应用程序能够识别并能对之做出响应的一组URL,当处理一个输入 请求时,路由系统的工作是将这个请求URL与一个模式进行匹配&am…

【爱心代码大全】——情人节表白代码送给她属于我们程序员的浪漫

👴大多数人以为的程序员——发量少,身穿格子褂,坐在电脑前就是码字。一点也不懂浪漫! 谁说我们不懂浪漫的? 不! 你错了 程序员一旦浪漫起来,真没其他人啥事了!!&#xff…

c#进阶(4)—— Redis 用于消息队列的存储

1、参考的博文 a : http://www.cnblogs.com/lori/archive/2012/04/12/2443708.html —— 主要的实现思路 b: http://www.cnblogs.com/liqingwen/archive/2017/04/06/6672452.html —— RedisHelper 类 c : https://www.cnblogs.com/stopfalling/p/5375492.html —— 应用场…

【LeetCode-SQL每日一练】—— 196. 删除重复的电子邮箱

🎈写在前面 🙋‍♂️大家好呀,我是超梦。大家可以叫我小梦~ 小伙伴们都知道,不管是在学习中还是日常工作中,几乎天天是要跟数据库打交道的,为了更好的操作数据库,我们的SQL知识储备是必不可少的…

【情人节表白代码】——情人节将至,10余款浪漫爱心特效送给你爱的那个她

谁说我们不懂浪漫的&#xff1f; 不&#xff01; 你错了 程序员一旦浪漫起来&#xff0c;那就是个bug&#xff01;&#xff01;&#xff01; 浪漫表白一 代码部分 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/…

c#进阶(6)—— 网络通信基础知识

1、HttpClient 类 (1)、HttpClient 类 用于发送HTTP 请求&#xff0c;接收请求的响应。 (2)、HttpClient 类 派生于 HttpMessageInvoker类&#xff0c;此基类负责执行 SendAsync(),SendAsync() 方法调用是异步的&#xff0c;可以编写一个完全异步的系统来调用Web服务。 2、实…

【云原生】—— 学习云计算应用开发你需要掌握的五大技能

学习云计算应用开发之前&#xff0c;我们首先了解一下什么是云计算。 云计算百度百科&#xff1a;云计算&#xff08;cloud computing&#xff09;是分布式计算的一种&#xff0c;指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序&#xff0c;然后&#xff0c;…

c#进阶(5)—— WCF 实现简单预订功能

1、WCF概述 WCF全称为Windows Communication Foundation,在.Net 3.0 中引入&#xff0c;用于客户端与服务端通信&#xff0c;替换了之前的一些技术&#xff0c;如.Net Remoting 及 WSE。 WCF 相比ASP.NET Web API 复杂&#xff0c;但提供了更多的功能&#xff0c;如 &#x…