笛卡尔积与连接查询

连接查询 (左连接 右连接 内连接)

笛卡尔乘积

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

 

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

 

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

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

进行区分

 

笛卡尔积

如果 aA, bB

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);

 

AM 个元素 BN 个元素

那么 A*BM*N个元素

同理

AM 行 表BN

那么 A*BM*N

例如:

ta tb 两表

笛卡尔积与连接查询

笛卡尔积

笛卡尔积与连接查询

通过分析可以看出

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

 

左连接

1 连上表

连接条件

例如:

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

select 1,列2,列N

from

table 1 inner join table 2

on table 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 数据类型数据的字段,将会发生错误



 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明明如月学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值