笛卡尔积与连接查询

简介: 连接查询 (左连接 右连接 内连接)

笛卡尔乘积


集合特性 : 确定性 无序性 唯一性



一张表可以看做是一个集合,每行数据相当于集合的一个元素



Union时 去掉重复  原理 就是集合元素的唯一性


表中存在完全相同的两行 是因为  表内部  存在  rowid


进行区分



笛卡尔积


如果 a∈A, b∈B


A*B = ( a, b);



例如 A=(1,2,3,4,5);B=(11,12);


那么 A*B


(1,11), (2,11), (3,11), (4,11), (5,11),


(1,12), (2,12), (3,12), (4,12), (5,12);



A有 M 个元素 B 有N 个元素


那么 A*B 有 M*N个元素


同理


表A有 M 行 表B 有N 行


那么 A*B 有 M*N行

通过分析可以看出


tb 表的 a b c d  每个分别和 ta   的a b c d  组合一遍



左连接


1 连上表


2  连接条件


例如:


select


good_id,goods.cat_id,goods_name,shop_price


from


goods left join category


on good.cat_id = category.cat_id;


字段名重复那么需要加表前缀,否则会报错;


error 1052(23000) column * in field list is ambiguous


最后两行可以看 作是一张表。






左连接语法:


select 列1,列2,列N


from


table 1 left join table 2


on table 1  列 = table 2 列;

on 后面的条件只要是条件就可以 可以不是等于 但是常用是等于。将from 后面的当做一个普通表看待。


右连接语法:


select 列1,列2,列N


from


table 1 right join table 2


on table 1  列 = table 2 列;

内连接 inner

select1,列2,列N

from

table 1inner jointable 2

ontable 1 = table 2 列;

左连接  右连接 内连接的区别和联系:





左连接和右连接

      是以左边的表为基准。通俗的讲,先将左边的表全部显示出来,然后右边的表id与左边表id相同的记录就“拼接”上去,比如说id为1的记录。如果没有匹配的id,比如说t1中id为2的t2中就没有。那边就以null显示。

右外连接过程正好相反。

内连接



      只有一条记录。内连接就是只取出符合过滤条件的记录 也就是t1.id=t2.id  那么符合t1.id=t2.id的记录只有id=1这一条,所以只显示一条。 不像外连接,是将你作为基准的表(左外连接就是左边表为基准,右外连接就是右边表为基准)的所有行都显示出来。

-----------------[以下为网上的一点资料(粘贴的)]------------------


LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。


语法:

FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2


说明:

① table1, table2参数用于指定要将记录组合的表的名称。

② field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。

③ compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。

④ 如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误





 

————————————————

版权声明:本文为CSDN博主「明明如月学长」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/w605283073/article/details/46572519

相关文章
|
6月前
|
关系型数据库 MySQL 数据库
什么是内连接、外连接、交叉连接、笛卡尔积呢?
什么是内连接、外连接、交叉连接、笛卡尔积呢?
|
4月前
|
SQL 搜索推荐 Java
什么是笛卡尔积及其在SQL查询中的应用
什么是笛卡尔积及其在SQL查询中的应用
|
6月前
(头哥)多表查询与子查询
(头哥)多表查询与子查询
121 0
内连接、左外连接、右外连接、全外连接区别
内连接、左外连接、右外连接、全外连接区别
内连接、左外连接、右外连接、全外连接区别
|
关系型数据库 MySQL
一文完整MySQL连接查询,笛卡尔乘积,内连接外连接交叉连接
一文完整MySQL连接查询,笛卡尔乘积,内连接外连接交叉连接
203 0
一文完整MySQL连接查询,笛卡尔乘积,内连接外连接交叉连接
|
SQL 数据库
有关交叉连接的问题
有关交叉连接的问题
86 0
|
存储 关系型数据库 MySQL
mysql加强(4)~多表查询:笛卡尔积、消除笛卡尔积操作(等值、非等值连接),内连接(隐式连接、显示连接)、外连接、自连接
mysql加强(4)~多表查询:笛卡尔积、消除笛卡尔积操作(等值、非等值连接),内连接(隐式连接、显示连接)、外连接、自连接
888 0
mysql加强(4)~多表查询:笛卡尔积、消除笛卡尔积操作(等值、非等值连接),内连接(隐式连接、显示连接)、外连接、自连接
用图表示 内连接 左外连接右外连接的区别
用图表示 内连接 左外连接右外连接的区别
117 0
用图表示 内连接 左外连接右外连接的区别
|
关系型数据库 MySQL 开发者
连接查询之外连接 | 学习笔记
快速学习连接查询之外连接。
109 0
连接查询之外连接 | 学习笔记
|
关系型数据库 MySQL Oracle
MySQL表连接(内连接、交叉连接、外连接、联合查询)
MySQL表连接(内连接、交叉连接、外连接、联合查询) 一、内连接(INNER JOIN)    SELECT * FROM 表1 INNER JOIN 表2   ON   条件    SELECT * FROM 表1 INNER JOIN 表2   WHERE  条件    典型的联接运算,使用像 =  或 之类的比较运算符)。
9624 0