首页 > 数据库 >mysql-关联查询 内连接 外连接(左外,右外,全连接) 交叉连接(迪卡积尔)

mysql-关联查询 内连接 外连接(左外,右外,全连接) 交叉连接(迪卡积尔)

时间:2023-10-26 11:35:33浏览次数:49  
标签:join 左外 记录 查询 id table 积尔 连接

mysql-关联查询

关联查询:数据查询是Mysql数据库管理最重要的一个功能,关联查询是关系型数据库最主要的查询。包括内连接([inner] join … on),外连接(left/right [outer] join … on),全外连接,通过关联查询可实现多个表连接的条件关系查询得到预期结果。
基本定义:
[inner] join … on(内连接或等值连接,不写inner默认为内连接):返回两张表中符合连接条件的字段值,即两张表的数据交集。
left [outer] join … on(左外连接,一般默认不写outer):以左边的表为基表,返回左表的全部记录,右表中符合连接条件的记录,不足的地方为Null。
right [outer] join … on(右外连接,一般默认不写outer):以右边的表为基表,返回右表的全部记录,左表中符合连接条件的记录,不足的地方为Null。
full join(全外连接):oracle支持该种写法,mysql不支持。mysql可通过union关键字实现(左连接 union 右连接)。
说明:
union(合并查询,去重复):使用UNION关键字是将所有查询结果合并到一起,然后去除相同的记录。
union all(合并查询):使用UNION ALL关键字则是将所有的结果合并到一起。
示例解释:
新建两张表:

CREATE TABLE `a_table` (
  `a_id` int(11) DEFAULT NULL,
  `a_name` varchar(10) DEFAULT NULL,
  `a_part` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  • 1
  • 2
  • 3
  • 4
  • 5
CREATE TABLE `b_table` (
  `b_id` int(11) DEFAULT NULL,
  `b_name` varchar(10) DEFAULT NULL,
  `b_part` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  • 1
  • 2
  • 3
  • 4
  • 5

插入数据:

INSERT INTO `a_table` VALUES(1,'赵','销售');
INSERT INTO `a_table` VALUES(2,'钱','技术');
INSERT INTO `a_table` VALUES(3,'孙','人事');
INSERT INTO `a_table` VALUES(4,'李','销售');
  • 1
  • 2
  • 3
  • 4
INSERT INTO `b_table` VALUES(2,'钱','技术');
INSERT INTO `b_table` VALUES(4,'李','销售');
INSERT INTO `b_table` VALUES(6,'周','技术');
INSERT INTO `b_table` VALUES(8,'吴','人事');
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述 在这里插入图片描述
内连接(不写inner时,默认为内连接):

select * from a_table a inner join b_table b on a.a_id = b.b_id;
  • 1

结果如下图:
在这里插入图片描述
说明:将表a_table和表b_table中a.id和b.id相同的行筛选出,求两表的交集
在这里插入图片描述
左连接:

select * from a_table a left join b_table b on a.a_id = b.b_id;
  • 1

结果如下图:
在这里插入图片描述
说明:左表(a_table)的记录将会全部显示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
在这里插入图片描述
右连接:

select * from a_table a right join b_table b on a.a_id = b.b_id;
  • 1

结果如下图:
在这里插入图片描述
说明:和左连接规则相反。
在这里插入图片描述
全外连接(union):

select * from a_table a left join  b_table b on a.a_id=b.b_id 
	union 
select * from a_table a right join b_table b on a.a_id = b.b_id;
  • 1
  • 2
  • 3

结果如下图:
在这里插入图片描述
说明:使用UNION关键字是将所有查询结果合并到一起,然后去除相同的记录。左表的记录+右表的记录-相交的记录
全外连接(union all):

select * from a_table a left join  b_table b on a.a_id=b.b_id 
	union all
select * from a_table a right join b_table b on a.a_id = b.b_id;
  • 1
  • 2
  • 3

结果如下图:
在这里插入图片描述
说明:使用UNION ALL关键字则是将所有的结果合并到一起。左表的记录+右表的记录+相交的记录

原文可参考链接:

https://www.jianshu.com/p/766dec20e28f
  • 1
原文链接:https://blog.csdn.net/qq_40298231/article/details/106091906/

标签:join,左外,记录,查询,id,table,积尔,连接
From: https://www.cnblogs.com/sunny3158/p/17789003.html

相关文章

  • ssh保持长连接的方式,ssh保持连接不断开原创
    习惯用gitbash连接ssh,但是长时间无操作直接断开,简单配置一下:vim/etc/ssh/sshd_configClientAliveInterval30#每隔30秒发送一次请求给client,然后client响应,从而保持连接ClientAliveCountMax3#发出请求后,客户端没有响应得次数达到3,就自动断开连接复制重启ssh:sys......
  • 数据库连接
    /*1.在src目录下,创建类(add,delete,revise,query)extendsHttpServlet2.在类里实现,protectedvoiddoPost/doGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//获取数据库连接Connectionconn=null;......
  • VM安装linux虚拟机宿主机连接不上虚拟机问题处理及静态ip设置
    https://blog.csdn.net/onlyonexhj/article/details/131273066centos7中的网络设置#虚拟机网络配置文件vi/etc/sysconfig/network-scripts/ifcfg-ens33修改完成后重启虚拟机网络systemctlrestartnetwork1尝试连接百度看是否能ping通 至此网络配置全部完成,最后别忘了关......
  • Apipost现已支持连接数据库!
    Apipost提供了数据库连接功能,在接口调试时可以使用数据库获取入参或进行断言校验。目前的Apipost支持:Mysql、SQLSever、Oracle、Clickhouse、达梦数据库、PostgreSQL、Redis、MongoDB8种数据库的连接操作新建数据库连接:在「项目设置」-「公共资源维护」-「连接数据库」中配置需......
  • 通过代码连接FTP,下载指定目录的文件
    1#region从SFTP下载文件2varcopy_sftp_result=GetSftpFile();3if(!copy_sftp_result)4{5returnfalse;6}7#endregion89......
  • Apipost现已支持连接数据库!
    Apipost提供了数据库连接功能,在接口调试时可以使用数据库获取入参或进行断言校验。目前的Apipost支持:Mysql、SQLSever、Oracle、Clickhouse、达梦数据库、PostgreSQL、Redis、MongoDB8种数据库的连接操作新建数据库连接:在「项目设置」-「公共资源维护」-「连接数据库」中配置......
  • 如果 jumpserver 堡垒机中连不上之前保存能连接的服务器了怎么办
    如果这期间曾经修改过密码,请删除该服务器主机已关联的用户信息,重新添加用户,里面的用户凭据不会通过用户自动同步另外如果主机有其它安全服务保护,请注意是否因为堡垒机尝试错误次数过多导致ip被封,需要手动解封ip!参考:https://blog.csdn.net/weixin_42672685/article/details/11......
  • RecureCRT连接VMware虚拟机Centos7及网络配置
    1.确认物理机ip地址2.打开VMware,点击网络适配器并且选择NET模式3.打开WMware,点击左上角编辑,虚拟网络编辑器,设置子网ip和子网掩码 4.设置好之后点击上图中的NET设置,查看网关IP5.打开并进入虚拟机,配置网络信息,输入如下命令:vim/etc/sysconfig/network-scripts/ifconfig-e**......
  • 网络共享打印机无法连接 错误0x0000011b如何解决
    网络共享打印机是指通过局域网将一台打印机共享给多台电脑使用的方式,可以节省打印机资源,提高打印效率。但是,有时候我们在连接网络共享打印机时,会遇到无法连接的问题,提示错误代码0x0000011b。这是什么原因呢?又该如何解决呢?本文将为你介绍网络共享打印机无法连接错误0x0000011b的原......
  • iOS配置通用链接后,分享页面,打开微信后,一直显示连接中
    一开始发现的问题是  apple-app-site-association  这个json里面的bundleid错了但是修正之后仍然显示连接中: 微信开放平台后台显示通用效验通过微信自检代码 checkUniversalLinkReady 检测失败 后来领导说上线之后可能就好了,果然,上线了,分享就没问题了......