Nodejs第三十七章(子查找和连表)。
观众伴侣,今天来学习Nodejs的第37章子查找和联表。先学子查找,亦便是subquery。在之前是在一张表里边进行增删改差的,在真正的工作中是不会把所有的字段都定义在一张表里边,亦没见过一张表里面有什么成千上万个字段,这般查找的效率肯定是欠好的。
因此为了性能是会进行分表的,乃至还会进行分库、分表和读写分离。今天演示便是分成两个表里边,来看一下。user表里边一共有4个值,还有table表里边有3个值。
有一个需求,例如想要搜索名字,经过name去查到table表里边所定义的数据。table表里面好似并无小满数据,但能跟name对应吗?肯定是不可的,由于名字肯定是能够随便变化的,肯定是不可做为一个基准去参考的。
就必须创立相关关系了,亦便是两个表必须相关起来才可查。相关关系在哪?便是userID,便是table表里边的userID去对应的user表里边的ID,亦便是经过小满去查到ID,ID为一。经过一再去table表里边查user_id,不就把这条数据就查出来吗?这便是实现思路。
亦便是碰见这种需求就必须用子查找,重视用子查找。子查找语句应该怎么写?首要经过select*from肯定要查,查哪个表?查table表。要求是什么?要求便是userID,便是经过子查找来的。重视子查找的规则必要是一个小括号,便是子查找必要要用小括号包起来,这是它的规则。必定要记得写小括号,否则会包语法错误。
·再经过子查找去查,select ID,源自于哪?源自user表。要求是什么?要求就要经过name去查,查小满,便是这般子的。
·来看一下结果,执行,是不是经过名字把table标准数据去查出来?其实这条语句执行出来便是这般子的,不便是个一吗?执行一下,不便是这玩意吗?能够来单独执行下这个语句,便是ID,而后为一。能够来看一下,字形ID为一,把这个值再去交给他,不就查出来吗?
其实子查找并无想象的那样难,便是把两条语句组合到一块了,这个是能够灵活组合大锥,重视这个便是子查找的用法。
然则在工作中可能还会有这种需求,便是查出来的值想把user表跟table表只融合到一块,此刻只是查出table表的数据,然则想把table表跟user表的这几条相关数据融合到一块,这种需求是很平常的,子查找肯定是满足不了的。
此时候必须什么?必须联表,联表查找分为内连接跟外连接,内连接还有外连接,外连接分为左连接跟右连接。
先演示一下什么叫内连接,目的是什么?目的便是把table表的数据和user表的数据合并到一块,这种数据是就这种需求是很平常的,先经过内连接把它们的数据合并到一块。
这个语句该怎么写?便是经过select*from,便是一起查两个表,其实亦很简单,便是查哪个表,查user表,再查一个table表,就一起查两个表。相关关系是什么?必须一个相关关系,相关关系亦讲过了,便是经过user表的ID去相关table表的user ID,user ID,就这般的,它们的相关关系。
来查一下,发掘是不是查出来了,数据是不是放到一块的?重视看,数据是不是合并到一块的?Gole Codm,小满的数据,还有小满,它们把数据都合并到一块了,这个便是内连接。
然则会发掘有个新的问题,点击user,明明是四条数据,查出来把第四条数据丢掉了,这是为何?由于table表里面仅有三条数据,并无那样一条,因此就不会去放到结果的集里边,这是内连接所会产生的一个问题,大众必定要重视一下。
此时候应该怎么办?便是期盼把那条数据查出来,期盼有个四,倘若table表无数据,补个null不就能够了吗?此时候就必须运用外连接了,内连接就满足不了了。
外连接这个语句该怎么写?外连接先演示左连接,左连接什么?便是left,跟表名表面后面跟什么?跟on,on后面跟的是什么?连接的要求,因此这个语句亦很简单,来看一下,select,而后leftjoin,亦便是左边的表为驱动表,亦便是它们的数据都会以驱动表为主。
倘若无是填充null,由于是左边,肯定便是左边的表,亦便是user表,它便是驱动表。table就说table就说被驱动表,它便是被驱动的,这个便是驱动表。重视结果,结果是以驱动表为主的,因此结果便是以四条数据为主,倘若无就补个null。
当然这是左连接,亦能够进行右连接。右连接什么意思?右连接肯定便是以右面的为主,亦便是此时table表的它就做为驱动表了,user的便是做为被驱动表了。查出来结果是什么?肯定是三条,由于table表里边不就三条数据,它又做为驱动表。
来看一下是不是结果?就仅有三条,因此大众必定要看清楚详细的需求到底要不要哪条数据,抉择便是到底要哪个表做为驱动表,只必须变换一下这个就能够了,便是left跟right,只要灵活的变通。
以上便是子查找跟连表的基本演示。
|