首页 编程设计 笛卡尔积怎么计算 笛卡尔积运算的意义

笛卡尔积怎么计算 笛卡尔积运算的意义

笛卡尔积怎么计算

笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积,又称直积,表示为X×Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员,而笛卡尔乘积的具体算法及过程如下:

设A,B为集合,用A中元素为第一元素,B中元素为第二元素构成有序对,所有这样的有序对组成的集合叫做A与B的笛卡尔积,记作A x B.

笛卡尔积的符号化为:

笛卡尔积怎么计算 笛卡尔积运算的意义

A×B={(x,y)|x∈A∧y∈B}

笛卡尔积运算的意义

0x01、笛卡尔积笛卡尔积的元素是元组,关系A和B的笛卡尔积可以记为(AXB),如果A为a目,B为b目,那么A和B的笛卡尔积为(a+b)列的元组集合。(1)学生表和分数表中的信息:学生表: 分数表(大概就是这个样子):(2)学生表和分数表执行笛卡尔积后:

SELECT * FROM student JOIN score

可以看出,执行sql语句后,student表中的每一条语句分别与score表中的每一条语句连接。0x02、内连接内连接又称为普通连接或自然连接。在说自然连接之前,应该先说一下连接的概念,连接是从笛卡尔积中选取属性间满足一定条件的元组。连接运算又可以分为等值连接和自然连接。(1)等值连接当条件为“=”的连接为等值连接,是连接属性值相等的那些元组。其结果是连接的表的所有列,包括重复列。还是运用上面的学生表和分数表:执行以下语句(隐式内连接)过滤掉没有用的元组,保留想要的有意义的元组。

SELECT * FROM student, score WHERE student.studentno=score.studentno

或者(显式内连接)

SELECT * FROM student INNER JOIN score ON student.studentno=score.studentno

即:只有学生表的学号属性和分数表的学号属性相等的时候才会将表中的两个元组相连,与笛卡尔积相比,等值连接添加了限制条件。(2)自然连接自然连接不仅要求连接的两个字段必须同名,还要求将结果中重复的属性列去掉。

SELECT * FROM student NATURAL JOIN score

以上自然连接的查询的元组的条数与等值连接相同,只不过是相同的属性(studentno)只保留了一个。0x03、外连接在以上的学生表和分数表的连接中,存在有些学生分数表中没有对应的该学生的分数信息,同样也有可能存在有分数而没有该学生信息的情况。这些找不到对应的元组进行匹配的元组称为悬浮元组。如果把悬浮元组也保留在结果中,那么这种连接就叫做外连接。(1)左外连接(只保留左边关系中的悬浮元组):为了使查询结果更明显,故意制造一个没有分数的学生:

INSERT INTO student VALUES('111','12345566','1111-11-11','111','111','男','zhai','890')

插入后如果进行等值连接或自然连接都不会出现学号为"111"的学生的信息。但是,如果进行左外连接的查询,会出现该学生的信息,但是有关该学生的成绩的相关信息为空。
执行以下语句,进行学生表和分数表的左外连接:

SELECT * FROM student LEFT OUTER JOIN score ON student.studentno=score.studentno

(2)右外连接(只保留右边关系中的悬浮元组)创建一个学生的分数元组,只有成绩而没有与之对应的学生(学号)

INSERT INTO score VALUES('55','1234344','c8848','87','98','123')

插入后如果进行等值连接或自然连接都不会出现学号为1234344的分数,但是如果进行右外连接,就会出现只有学生的分数信息,而没有该学生的基本信息的情况。

SELECT * FROM student RIGHT OUTER JOIN score  ON student.studentno=score.studentno
SELECT * FROM student RIGHT OUTER JOIN score  ON student.studentno=score.studentno

4、内连接、外连接之间的关系 如果用上图来表示内连与外连接之间的关系的话:2:代表内连接1、2:左外连接2、3:右外连接

热门文章

Copyright © 2024 智能网 - 系统编程和数码游戏介绍_知识_教程服务平台!All Right Reserved - 备案号 : 蜀ICP备18030039号

免责声明:智能网所有文字、图片等资料仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,如有问题,请联系我们删除。