在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

mysql如何实现多表连接查询

134次阅读
没有评论

共计 3365 个字符,预计需要花费 9 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章给大家分享的是有关 mysql 如何实现多表连接查询的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

实际的项目,存在多张表的关联关系。不可能在一张表里面就能检索出所有数据。如果没有表连接的话,那么我们就需要非常多的操作。比如需要从 A 表找出限制性的条件来从 B 表中检索数据。不但需要分多表来操作,而且效率也不高。比如书中的例子:

代码如下:

SELECT FId
FROM T_Customer
WHERE FName= MIKE

这个 SQL 语句返回 2,也就是姓名为 MIKE 的客户的 FId 值为 2,这样就可以到 T_Order 中检索 FCustomerId 等于 2 的记录:

代码如下:

SELECT FNumber,FPrice
FROM T_Order
WHERE FCustomerId=2

下面我们详细来看看表连接。表连接有多种不同的类型,有交叉连接(CROSS JOIN)、内连接(INNER JOIN)、外连接(OUTTER JOIN)。

(1)内连接(INNER JOIN):内连接组合两张表,并且只获取满足两表连接条件的数据。

代码如下:

SELECT o.FId,o.FNumber,o.FPrice,
c.FId,c.FName,c .FAge
FROM T_Order o JOIN T_Customer c
ON o.FCustomerId= c.FId

注:在大多数数据库系统中,INNER JOIN 中的 INNER 是可选的,INNER JOIN 是默认的连接方式。

在使用表连接的时候可以不局限于只连接两张表,因为有很多情况下需要联系许多表。例如,T_Order 表同时还需要连接 T_Customer 和 T_OrderType 两张表才能检索到所需要的信息,编写如下 SQL 语句即可:

代码如下:

SELECT o.FId,o.FNumber,o.FPrice,
c.FId,c.FName,c .FAge
FROM T_Order o JOIN T_Customer c
ON o.FCustomerId= c.FId
INNER JOIN T_OrderType
ON T_Order.FTypeId= T_OrderType.FId

(2)交叉连接(CROSS JOIN):交叉连接所有涉及的表中的所有记录都包含在结果集中。可以采用两种方式来定义交叉连接,分别是隐式和显式的连接。

下面看看隐式的例子:

代码如下:

SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge,
T_Order.FId, T_Order.FNumber, T_Order.FPrice
FROM T_Customer, T_Order

使用显式的连接则需要使用 CROSS JOIN,例子如下:

代码如下:

SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge,
T_Order.FId, T_Order.FNumber, T_Order.FPrice
FROM T_Customer
CROSS JOIN T_Order

(3)外连接(OUTTER JOIN):内部连接只获取满足连接条件的数据,而对于外部连接来说,主要是解决这样的一种场景。满足条件的数据检索出来,这个没有疑问,外部连接还会检索另一部分数据,那就是将不满足条件的数据以 NULL 来填充。先来看一下外连接的分类:左外部连接(LEFT OUTER JOIN)、右外部连接(RIGHT OUTER JOIN)和全外部连接(FULLOUTER JOIN)。

I、左外部连接(LEFT OUTER JOIN):前头也说了,将不满足条件的数据以 NULL 来填充。那么具体是哪些需要以 NULL 来填充呢,对于左外连接来说的话,连接条件当中,如果出现满足条件的左表的数据在右表中没有相应匹配时,需要把相应的右表字段填充 NULL 值。也就是说左外部连接的主体是左表,右表来配合。

代码如下:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
LEFT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

注:如果使用左外部连接的话,通过 where 语句能过滤其中不符合的数据

代码如下:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
LEFT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId
WHERE o.FPrice =150

II、右外部连接(RIGHT OUTER JOIN):右外部连接与左外连部接相反,将会被填充 NULL 值的是左表的字段。也就是说右外部连接的主体是右表,左表来配合。

代码如下:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
RIGHT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

注:同左外连接一样,可以使用 where 语句进行过滤

III、全外部连接(FULLOUTER JOIN): 全外部连接是左外部连接和右外部连接的合集。也就是既包括左外部连接的结果集,也包括右外部连接的结果集。

代码如下:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
FULL OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

其结果相当于:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
LEFT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId
UNION
SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
RIGHT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

=======================================================================================

多表查询的多种 sql 写法:(下面是从两个表里查询 也可以看成从三个表里查询 , 显示表 v_goods 里的所有字段,显示 admin2 表里的 name 字段作为添加人,显示表 admin2 表的 name 字段作为操作人)  多个表的查询都可按照下面三个例句进行编写 sql

SELECT v.*,(SELECT a.name FROM admin2 a WHERE a.adminId=v.loadInId) AS aname,(SELECT a.name FROM admin2 a WHERE a.adminId=v.operatorId) AS uname FROM v_goods v where 1=1;
SELECT v.*,a.name aname,b.name uname FROM v_goods v,admin2 a,admin2 b WHERE a.adminId=v.loadInId AND b.adminId=v.operatorId ;
SELECT v.*,a.name aname,b.name uname FROM v_goods v LEFT JOIN admin2 a ON a.adminId=v.loadInId LEFT JOIN admin2 b ON b.adminId=v.operatorId ;

感谢各位的阅读!关于“mysql 如何实现多表连接查询”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计3365字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 久久久亚洲精品蜜桃臀 | 一级日本高清视频免费观看 | 好爽又高潮了毛片免费下载 | 无码av在线一本无码 | 亚洲国产精品自产在线播放 | 麻豆回家视频区一区二 | 亚洲人成图片小说网站 | 麻豆影视在线观看 | 欧美黑人又粗又大久久久 | 黄色网页在线播放 | 日本三级电影免费看 | 亚洲综合无码无在线观看 | 女人下边被舔全过视频 | 国产无遮挡a片又黄又爽 | 国产精品视频福利一区二区 | 在线免费视频你懂的 | 欧美亚洲精品小说一区二三区 | 日产精品一二三区 | 日本三级欧美三级人妇视频 | 精品无码国产av一区二区三区 | 夜夜操操操 | 一区在线免费 | 亚洲日韩va无码中文字幕 | 久久久久av无码免费网 | 久久精品国产一区二区 | 色综合久久久无码中文字幕 | 免费a级做爰片在线观看爱色戒 | 亚洲a成人 | 人人鲁人人莫人人爱精品 | 泰国一级特黄在线观看大片 | 男人把女人桶到爽免费应用 | 青青草原免费在线视频 | 亚洲毛片网 | 青青青国产精品国产精品美女 | 69老司机精品视频免费观看 | 特级淫片大乳女子高清视频 | 青青草原在线免费观看视频 | 又爽又黄又无遮挡网站 | 亚洲综合九九 | 日本不卡高字幕在线2019 | 国产最新进精品视频 |