数据库笛卡尔积
设R关系元数为3,基数为3,S关系元数为2,基数为2,则进行R*S运算后生成的新关系元数为5,基数为6.这里的元数,基数是什么意思?还有答案我也不懂怎么算的...
设R关系元数为3,基数为3,S关系元数为2,基数为2,则进行R*S运算后生成的新关系元数为5,基数为6.
这里的元数,基数是什么意思?还有答案我也不懂怎么算的 展开
这里的元数,基数是什么意思?还有答案我也不懂怎么算的 展开
4个回答
展开全部
1.笛卡尔积定义
笛卡尔积在SQL中的实现方式既是交叉连接(Cross Join)。所有连接方式都会先生成临时笛卡尔积表,笛卡尔积是关系代数里的一个概念,表示两个表中的每一行数据任意组合,上图中两个表连接即为笛卡尔积(交叉连接)
在实际应用中,笛卡尔积本身大多没有什么实际用处,只有在两个表连接时加上限制条件,才会有实际意义
MySQL的多表查询(笛卡尔积原理)
先确定数据要用到哪些表。
将多个表先通过笛卡尔积变成一个表。
然后去除不符合逻辑的数据(根据两个表的关系去掉)。
最后当做是一个虚拟表一样来加上条件即可。
注意:列名最好使用表别名来区别。
笛卡尔积
Demo:
左,右连接,内,外连接
l 内连接:
要点:返回的是所有匹配的记录。
l 外连接有左连接和右连接两种。
要点:返回的是所有匹配的记录 外加 每行主表外键值为null的一条记录。辅表所有列为null值。
select * from a left join b on a.x=b.x order by a.x //左外连接或称左连接
select * from a right join b on a.x=b.x order by a.x //右外连接或称右连接
select子句顺序
子句
说明
是否必须使用
select
要返回的列或表示式
是
form
从中检索数据的表
仅在从表选择数据时使用
where
行级过滤
否
group by
分组说明
仅在按组计算聚集时使用
having
组级过滤
否
order by
输出排序顺序
否
limit
要检索的行数
笛卡尔积在SQL中的实现方式既是交叉连接(Cross Join)。所有连接方式都会先生成临时笛卡尔积表,笛卡尔积是关系代数里的一个概念,表示两个表中的每一行数据任意组合,上图中两个表连接即为笛卡尔积(交叉连接)
在实际应用中,笛卡尔积本身大多没有什么实际用处,只有在两个表连接时加上限制条件,才会有实际意义
MySQL的多表查询(笛卡尔积原理)
先确定数据要用到哪些表。
将多个表先通过笛卡尔积变成一个表。
然后去除不符合逻辑的数据(根据两个表的关系去掉)。
最后当做是一个虚拟表一样来加上条件即可。
注意:列名最好使用表别名来区别。
笛卡尔积
Demo:
左,右连接,内,外连接
l 内连接:
要点:返回的是所有匹配的记录。
l 外连接有左连接和右连接两种。
要点:返回的是所有匹配的记录 外加 每行主表外键值为null的一条记录。辅表所有列为null值。
select * from a left join b on a.x=b.x order by a.x //左外连接或称左连接
select * from a right join b on a.x=b.x order by a.x //右外连接或称右连接
select子句顺序
子句
说明
是否必须使用
select
要返回的列或表示式
是
form
从中检索数据的表
仅在从表选择数据时使用
where
行级过滤
否
group by
分组说明
仅在按组计算聚集时使用
having
组级过滤
否
order by
输出排序顺序
否
limit
要检索的行数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
笛卡儿积就是把两个(多个)表的结果集相乘
R表中的每一条数据与S表中的每一条数据匹配并呈现,数量级就是两表的成绩,属性为列相加
R表中的每一条数据与S表中的每一条数据匹配并呈现,数量级就是两表的成绩,属性为列相加
追问
还是不懂,为什么R*S中会多出一个d还有2
追答
两个结果集无关联相匹配,因为没有关联条件,所以R中每条数据要与S中每条数据进行匹配
R中的a,1,c这条数据要与S中的两条数据进行匹配,最后的结果就是a,1,c看似是重复的
这样R中3条数据,S中2条,最后的结果就是3*2=6条
而列方面直接合并,这个没什么懂不懂的,记住就行了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
通俗易懂点说 元数 就是有几种数据,基数就是有几条数据。R*S R中三条每条都与S中两条对应生成一条。所以就是6条啦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询