首页 运维知识 mysql的sql其他 SQL中inner join、outer join和cross join的区别讲解如下

mysql的sql其他 SQL中inner join、outer join和cross join的区别讲解如下

ALTER TABLE qms_error_info ADD goods_name VARCHAR(32) DEFAULT NULL COMMENT ‘物品名称&#82…

ALTER TABLE qms_error_info ADD goods_name VARCHAR(32) DEFAULT NULL COMMENT ‘物品名称’;
ALTER TABLE qms_error_info ADD package_type VARCHAR(6) DEFAULT NULL COMMENT ‘包装类型’;

ALTER TABLE qms_error_info CHANGE `report_bonus` `report_bonus` decimal(9,2) DEFAULT 0  NOT NULL      – – – 设置字段的默认值

ALTER TABLE tcp.tcp_base_car_vendor ALTER COLUMN `car_vendor_status`  SET DEFAULT ‘1’;  —  设置字段的默认值

alter TABLE mdm.mdm_tms_transport_car_doc  modify column trans_doc_type varchar(16) DEFAULT ” COMMENT ‘运输单类型’;

ALTER TABLE tms_close_ticket_arrive ADD INDEX index_name (ticket_id);  —  添加索引

ALTER TABLE qms.qms_error_info ADD INDEX index_report_time ( `report_time` );  —  添加索引

ALTER TABLE hcm_emp_pact MODIFY pact_no3 varchar(35) DEFAULT NULL COMMENT ‘合同编号3’;

 

缺省情况下是inner join,开发中使用的left join和right join属于outer join,另外outer join还包括full join.下面我通过图标让大家认识它们的区别。
现有两张表,Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录name是相同的:
mysql的sql其他 SQL中inner join、outer join和cross join的区别讲解如下插图

1.INNER JOIN 产生的结果是AB的交集

SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name
mysql的sql其他 SQL中inner join、outer join和cross join的区别讲解如下插图1          mysql的sql其他 SQL中inner join、outer join和cross join的区别讲解如下插图2
2.LEFT [OUTER] JOIN 产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代。
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name
mysql的sql其他 SQL中inner join、outer join和cross join的区别讲解如下插图3           mysql的sql其他 SQL中inner join、outer join和cross join的区别讲解如下插图4
3.RIGHT [OUTER] JOIN 产生表B的完全集,而A表中匹配的则有值,没有匹配的则以null值取代。
SELECT * FROM TableA RIGHT OUTER JOIN TableB ON TableA.name = TableB.name
图标如left join类似。

4.FULL [OUTER] JOIN 产生A和B的并集。对于没有匹配的记录,则会以null做为值。
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name
你可以通过is NULL将没有匹配的值找出来:
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name
WHERE TableA.id IS null OR TableB.id IS null

5. CROSS JOIN 把表A和表B的数据进行一个N*M的组合,即笛卡尔积。如本例会产生4*4=16条记录,在开发过程中我们肯定是要过滤数据,所以这种很少用。
SELECT * FROM TableA CROSS JOIN TableB
相信大家对inner join、outer join和cross join的区别一目了然了。

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

作者: 小小编

为您推荐

dell R710 更换raid卡后,raid卡信息没有了,处理方案

dell R710 更换raid卡后,raid卡信息没有了,处理方案

1.将一台服务器(A)的硬盘依次拔出,按相同顺序插入另一台同样配置的服务器(B) 2.启动服务器(B) 3.按提示键盘按...
PL SQL Developer 13连接Oracle数据库并导出数据详细操作教程方法

PL SQL Developer 13连接Oracle数据库并导出数据详细操作教程方法

下载 并安装 PL SQL Developer 13,默认支持中文语言 ========================...
关于一条sql语句在mysql中是如何执行的

关于一条sql语句在mysql中是如何执行的

最近开始在学习mysql相关知识,自己根据学到的知识点,根据自己的理解整理分享出来,本篇文章会分析下一个sql语句在my...
关于sql注入姿势总结(mysql)

关于sql注入姿势总结(mysql)

前言 学习了sql注入很长时间,但是仍然没有系统的了解过,这次总结一波,用作学习的资料。 从注入方法分:基于报错、基于布...
关于Oracle SQL外连接

关于Oracle SQL外连接

SQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同。 连接...

发表回复

返回顶部