iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Mysql中join操作的示例分析
  • 307
分享到

Mysql中join操作的示例分析

2024-04-02 19:04:59 307人浏览 八月长安
摘要

小编给大家分享一下Mysql中join操作的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!join的类型1.  

小编给大家分享一下Mysql中join操作的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

join的类型

1.  内联结:将两个表中存在联结关系的字段符合联结关系的那些记录形成记录集的联结。

2.  外联结:分为外左联结和外右联结。

案例背景

create table java (name varchar(255));
insert into java values ('java1'),('java2'),('blue'); 
create table mysql (name varchar(255));
insert into mysql values ('mysql1'),('mysql2'),('blue');

内联结

select * from java,mysql where java.name=mysql.name;
SELECT * FROM java JOIN mysql ON java.name=mysql.name;
SELECT * FROM java INNER JOIN mysql ON java.name=mysql.name;
SELECT * FROM java CROSS JOIN mysql ON java.name=mysql.name;
SELECT * FROM java STRaiGHT_JOIN mysql ON java.name=mysql.name;

这四个语句都是内联结,返回结果都是

+------+------+
| name | name |
+------+------+
| blue | blue |
+------+------+
  • table_reference条目中的每个逗号都看作相当于一个内部联合

  • 默认的JOIN都是INNER JOIN

  • CROSS JOIN从语法上说与INNER JOIN等同

  • STRAIGHT_JOIN与JOIN相同。除了有一点不一样,左表会在右表之前被读取。STRAIGH_JOIN可以被用于这样的情况,即联合优化符以错误的顺序排列表。

内联结的语法如下:

join_table:
 table_reference [INNER | CROSS] JOIN table_factor [join_condition]
 | table_reference STRAIGHT_JOIN table_factor
 | table_reference STRAIGHT_JOIN table_factor ON condition

外联结

左联结

SELECT * FROM java LEFT JOIN mysql ON java.name=mysql.name;

结果是

+-------+------+
| name | name |
+-------+------+
| java1 | NULL |
| java2 | NULL |
| blue | blue |
+-------+------+

所以从上面结果看出,因为Java表中的java1和java2记录的name没有在MySQL表中有对应name,因此为空,但java 所有的列栏仍有java1和java2记录,mysql表所有列栏为NULL。而剩下的blue的那条记录就是java表和mysql表内连接的结果。

如果对于在LEFT JOIN中的ON或USING部分中的右表没有匹配的记录,则所有列被设置为NULL的一个行被用于右表。如果一个表在其它表中没有对应部分,您可以使用这种方法在这种表中查找记录:

SELECT * FROM java LEFT JOIN mysql ON java.name=mysql.name WHERE mysql.name IS NULL;

该sql找出在java的人,但是不在mysql里的人,这里明显是人员'java1'和'java2'符合要求。

右联结

SELECT * FROM java RIGHT JOIN mysql ON java.name=mysql.name;

返回结果是

+------+--------+
| name | name |
+------+--------+
| NULL | mysql1 |
| NULL | mysql2 |
| blue | blue |
+------+--------+

右联结和左联接结果类似,只是这次是mysql表保存所有的结果集。

外联结的语法

join_table:| table_reference LEFT [OUTER] JOIN table_reference join_condition
 | table_reference NATURAL [LEFT [OUTER]] JOIN table_factor
 | table_reference RIGHT [OUTER] JOIN table_reference join_condition
 | table_reference NATURAL [RIGHT [OUTER]] JOIN table_factor

USING(column_list)子句

用于为一系列的列进行命名,这些列必须同时在两个表中存在

SELECT java.*,mysql.* FROM java LEFT JOIN mysql USING (name);

结果返回

+-------+------+
| name | name |
+-------+------+
| java1 | NULL |
| java2 | NULL |
| blue | blue |
+-------+------+

联结的运算顺序

SELECT * FROM t1 LEFT JOIN (t2, t3, t4) ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c);
--相当于
SELECT * FROM t1 LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4) ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)

括号对于join的顺序的影响

SELECT t1.id,t2.id,t3.id FROM t1,t2 LEFT JOIN t3 ON (t3.id=t1.id) WHERE t1.id=t2.id;
--实际上这么执行
SELECT t1.id,t2.id,t3.id FROM t1,( t2 LEFT JOIN t3 ON (t3.id=t1.id) ) WHERE t1.id=t2.id;
--应该这么写
SELECT t1.id,t2.id,t3.id FROM (t1,t2) LEFT JOIN t3 ON (t3.id=t1.id) WHERE t1.id=t2.id;

在这里括号是相当重要的,因此以后在写这样的查询的时候我们不要忘记了多写几个括号,至少这样能避免很多错误。

以上是“Mysql中join操作的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: Mysql中join操作的示例分析

本文链接: https://www.lsjlt.com/news/55905.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql中join操作的示例分析
    小编给大家分享一下Mysql中join操作的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!join的类型1.  ...
    99+
    2022-10-18
  • mysql中数据操作的示例分析
    这篇文章给大家分享的是有关mysql中数据操作的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、读取数据select * from tb1;select...
    99+
    2023-06-15
  • mysql中in操作符的示例分析
    这篇文章给大家分享的是有关mysql中in操作符的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在之前学习其他模块的时候,我们接触到了in操作符,不过在mysql数据库中很多人就不知道怎么运用了。我们今天...
    99+
    2023-06-14
  • sql中left join的示例分析
    这篇文章主要为大家展示了“sql中left join的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“sql中left join的示例分析”这篇文章吧。网...
    99+
    2022-10-18
  • mysql权限操作的示例分析
    这篇文章给大家分享的是有关mysql权限操作的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 1、创建新用户: create user mark@localhost ...
    99+
    2022-10-19
  • MySQL中DML语言操作的示例分析
    这篇文章主要介绍MySQL中DML语言操作的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!补充说明,外键:不要使用外键,一切外键概念都在应用层解决。补充说明,数据库的列,也就...
    99+
    2022-10-18
  • Hive中Map端JOIN的示例分析
    小编给大家分享一下Hive中Map端JOIN的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Map端JOINmap端join适用于当一张表很小(可以存在内...
    99+
    2023-06-04
  • golang中gorm操作mysql及gorm的示例分析
    这篇文章给大家分享的是有关golang中gorm操作mysql及gorm的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。golang 官方的那个操作mysql的有点麻烦所以就使用了gorm,下面就gorm...
    99+
    2023-06-15
  • SQL之各种join的示例分析
    这篇文章将为大家详细讲解有关SQL之各种join的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。SQL Left Join, Right Join, Inner Join, and Natural...
    99+
    2023-06-20
  • Python中opencv操作的示例分析
    这篇文章主要介绍Python中opencv操作的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!直接读取图片def display_img(file="p.jpeg"): ...
    99+
    2023-06-14
  • JavaScript中DOM操作的示例分析
    这篇文章主要介绍JavaScript中DOM操作的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下:一、DOM概念1. "D":Docment,指的...
    99+
    2022-10-19
  • SQL中DDL操作的示例分析
    这篇文章给大家分享的是有关SQL中DDL操作的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 1、数据库对象    表&...
    99+
    2022-10-19
  • VB.NET中EXCEL操作的示例分析
    这篇文章将为大家详细讲解有关VB.NET中EXCEL操作的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。EXCEL的宏功能:EXCEL提供一个Visual Basic编辑器,打开Visual Ba...
    99+
    2023-06-17
  • Dos中Shell操作的示例分析
    这篇文章主要介绍了Dos中Shell操作的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。代码如下:@echo off //不列出执行过程 cd test\ //移到该...
    99+
    2023-06-09
  • SQL中各种连接Join的示例分析
    这篇文章给大家分享的是有关SQL中各种连接Join的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN...
    99+
    2022-10-18
  • MySQL数据库基本操作的示例分析
    这篇文章主要介绍了MySQL数据库基本操作的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、数据库的安装这个就不在这里过多阐述了,...
    99+
    2022-10-18
  • MySQL数据库常用操作的示例分析
    小编给大家分享一下MySQL数据库常用操作的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:一、查询不同表中同名...
    99+
    2022-10-18
  • getdata table表格数据join mysql方法的示例分析
    这篇文章主要为大家展示了“getdata table表格数据join mysql方法的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“getdata ta...
    99+
    2022-10-18
  • MySQL数据库中表查询操作的示例分析
    小编给大家分享一下MySQL数据库中表查询操作的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、单表查询      1...
    99+
    2022-10-18
  • MySQL中join查询实例代码分析
    这篇“MySQL中join查询实例代码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“M...
    99+
    2022-11-30
    mysql join
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作