笛卡尔积

MySQL连接查询

喜你入骨 提交于 2020-03-15 13:17:34
MySQL中的连接查询: 虽然在看过数据库原理之后还是有很多不知道的地方,下面有叙述不对的地方望大家批评指正。 在数据库中连接基本基本上都是基于笛卡尔积的原理上的。(连接、等值连接、自然连接、内连接、外连接(左连接、右连接、全连接) 1> 首先介绍下笛卡尔积 以下面的A B 表为例:集合A={1,2},集合B={a,b,c},则两个集合的笛卡尔积为{(1,a),(1,b),(1,c),(2,a),(2,b),(2,c)}。 形成的结果: MySQL中笛卡尔积的使用: 具体步骤:   创建数据库(create database XX)   创建表格A与表格B(create table A…, create table B…, )   插入数据   求出笛卡尔积:select * from A,B; 2> 连接(θ连接,等值连接,自然连接) 1.θ连接:从两个表的笛卡尔积选取属性满足一定条件的元组。 以上面的为例 以上是公式,看起来比较麻烦!看下在MySQL中的书写: 大于查询 SELECT * FROM A,B WHERE A.a>B.c; 等于查询 SELECT * FROM A,B WHERE A.a=B.c; 小于查询 SELECT * FROM A,B WHERE A.a<B.c; 2.等值连接:从两个表的笛卡尔积选取属性满足一定条件的元组,其中θ为“=”号 其实就是θ为“=

Mysql 多表连接查询 inner join 和 outer join 的使用

烈酒焚心 提交于 2020-02-22 18:53:09
Mysql 多表连接查询 inner join 和 outer join 的使用 JOIN的含义就如英文单词“join”一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接。这里描述先甩出一张用烂了的图,然后插入测试数据。 首先先列举本篇用到的分类(内连接,外连接,交叉连接)和连接方法(如下): A)内连接 :join,inner join B)外连接 :left join,left outer join,right join,right outer join,union C)交叉连接 :cross join 案例表: t_users: t_department: 第一种:内连接 inner join 内连接INNER JOIN是最常用的连接操作。从数学的角度讲就是求两个表的 交集 ,从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录。 有INNER JOIN,WHERE(等值连接),STRAIGHT_JOIN,JOIN(省略INNER)四种写法。 select d.id, d.department, t.name from t_users t inner join t_department d on d.id = t.department_id 结果说明;只去表A表和B表共同有的on 条件部分数据; 第二种:外连接 left join,left outer

Oracle数据库之多表查询一

流过昼夜 提交于 2020-02-17 01:58:54
上一篇给大家介绍了数据的单表查询,相信大家对于单表的查询应该都有了一些了解。单表查询在数据库中的使用会有一些,但并不是很多,但是作为初学者,我们需要学习单表查询的思路。今天呢,我们为大家介绍一下数据库中的多表查询,左查询和右查询。因为多表查询在实际项目中的应用还是比较广泛的。我们一定要掌握,掌握了多表查询对于后面的子查询、分组查询的学习就非常的简单了! 第一步:首先开启数据库监听服务: 1.Win + R ---> cmd --->输入lsnrctl start --->显示如下图,则开启成功!开启监听服务使用的命令是:lsnrctl start 第二步:然后在开启数据库的主服务orcl,使用的命令是:net start oracleserviceorcl 我们使用自己提前造好的测试数据进行本篇文章的详解。接着往下看。 我们创建一个t_student表和一个t_score表。 通过sql语句查看两张表中的信息,如下: select * from t_student; select * from t_score; t_student表: t_score表: 需求1:如果我想查询张山的数学成绩,应该怎么办呢?很显然张山和成绩并不在一个表中,他们分别在不同的表中,所以,我们需要将两张表结合看。我们通过上面的截图可以狠清晰的发现t_student表和t_score表是通过主键ID关联的

PHP实现笛卡尔积算法

坚强是说给别人听的谎言 提交于 2019-12-26 15:47:49
概念 在数学中,两个集合X和Y的笛卡儿积(Cartesian product),又称直积,表示为 X × Y。设A、B是任意两个集合,在集合A中任意取一个元素x,在集合B中任意取一个元素y,组成一个有序对(x,y),把这样的有序对作为新的元素,他们的全体组成的集合称为集合A和集合B的直积,记为A×B,即 A×B={(x,y)|x∈A且y∈B}。 假设集合 A={a, b},集合 B={0, 1, 2},则两个集合的笛卡尔积为 {(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。 举例 给出三个域: D1 = { 张清玫,刘逸 } D2 = {计算机专业,信息专业} D3 = {李勇,刘晨,王敏} 则 D1,D2,D3 的笛卡尔积 D = D1×D2×D3,等于: { (张清玫, 计算机专业, 李勇), (张清玫, 计算机专业, 刘晨), (张清玫, 计算机专业, 王敏), (张清玫, 信息专业, 李勇), (张清玫, 信息专业, 刘晨), (张清玫, 信息专业, 王敏), (刘逸, 计算机专业, 李勇), (刘逸, 计算机专业, 刘晨), (刘逸, 计算机专业, 王敏), (刘逸, 信息专业, 李勇), (刘逸, 信息专业, 刘晨), (刘逸, 信息专业, 王敏) } 这样就把D1、D2、D3这三个集合中的每个元素加以对应组合

DataBaseSystem:Relational Data Structure

故事扮演 提交于 2019-12-04 09:48:57
本篇内容来自《数据库系统概论(第五版)》(王珊 萨师煊),主要是整理数据库的基本概念,供自己复习查阅。 关系数据库 关系数据库就是基于关系模型的数据库系统。关系模型包含三部分: 关系数据结构 、 关系操作集合 、 关系完整性约束 。 关系数据结构 关系数据结构只包含一种数据结构——关系,从逻辑结构上看,关系就是一张 二维表 。前面提到,关系模型是基于严格的数学概念形成的数据模型,而关系的基础就是 集合论 。故需要从集合论角度理解关系数据结构的形式化定义。 域(domain) 域是一组具有相同数据类型的值的集合。如常见的自然数域N、实数域R。一个域的不同取值的个数称为这个域的 基数 。 笛卡尔积(Cartesian product) 笛卡尔积是一种 集合运算 ,定义如下: \[ \begin{aligned} &对于给定的一组域D_1,D_2,...,D_n,不要求域互异,D_1,D_2,...,D_n的笛卡尔积为\\ &D_1\times D_2\times...\times D_n=\{(d_1,d_2,...,d_n)|d_i\in D_i,i=1,2,...,n\} \end{aligned} \] 笛卡尔积运算的结果也是一个域,它的基数等于各域基数的积。 关系 定义 \[ \begin{aligned} &D_1\times D_2\times ...\times D

MySQL的JOIN(一):用法

老子叫甜甜 提交于 2019-12-04 06:44:25
MySQL的JOIN(一):用法 JOIN的含义就如英文单词“join”一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接。这里描述先甩出一张用烂了的图,然后插入测试数据。 CREATE TABLE t_blog( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(50), typeId INT ); SELECT * FROM t_blog; +----+-------+--------+ | id | title | typeId | +----+-------+--------+ | 1 | aaa | 1 | | 2 | bbb | 2 | | 3 | ccc | 3 | | 4 | ddd | 4 | | 5 | eee | 4 | | 6 | fff | 3 | | 7 | ggg | 2 | | 8 | hhh | NULL | | 9 | iii | NULL | | 10 | jjj | NULL | +----+-------+--------+ -- 博客的类别 CREATE TABLE t_type( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) ); SELECT * FROM t_type; +----+------------+ |

笛卡尔乘积

匿名 (未验证) 提交于 2019-12-03 00:34:01
X Y X Y X Y [1] 定义 编辑 运算 编辑 Ax桅 =桅 , 桅 xA=桅 案例 编辑 代码 编辑 C#源代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Linq; public class Descartes { public static void run(List<List< string >> dimvalue, List< string > result, int layer, string curstring) { if (layer < dimvalue.Count - 1) { if (dimvalue[layer].Count == 0) run(dimvalue, result, layer + 1, curstring); else { for ( int i = 0; i < dimvalue[layer].Count; i++) { StringBuilder s1 = new

十一、深入了解连接查询及原理

眉间皱痕 提交于 2019-12-02 21:56:38
当我们查询的数据来源于多张表的时候,我们需要用到连接查询,连接查询使用率非常高。 本文内容 笛卡尔积 内连接 外连接 左连接 右连接 表连接的原理 使用java实现连接查询,加深理解 一、笛卡尔积   笛卡尔积简单点理解:有两个集合A和B,笛卡尔积表示A集合中的元素和B集合中的元素任意相互关联产生的所有可能的结果。    来源: https://www.cnblogs.com/biao/p/11764055.html

关系代数基础

天涯浪子 提交于 2019-12-01 00:16:48
关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。 任何一种运算都是将一定的运算符作用于一定的运算对象上,得到预期的结果。所以运算对象、运算符、运算结果是运算的三大要素。 按运算符的不同分为传统的集合运算和专门的关系运算两类: 传统的集合运算包括:并(∪)、差(−)、交(∩)、笛卡尔积(×)。 专门的关系运算包括:选择(σ)、投影(π)、连接(⋈)、除运算(÷)。 MySQL基础 -- 传统的集合运算 传统的集合运算是二目运算, 并( ∪ )、差( − )、交( ∩ )、笛卡尔积( × )四种运算。 设关系 R 和关系 S 具有相同的目 n(即两个关系都有 n 个属性),且相应的的属性取自同一个域,t 是元组变量,t∈R 表示 t 是 R 的一个元组。 下图分别是具有三个属性列的关系 R、S : 可以定义并、差、交、笛卡尔积运算如下: 1、并(union) 关系 R 与关系 S 的并由属于 R 且属于 S 的 元组 组成。其结果关系仍为 n 目关系。记作: 下图为关系 R 与关系 S 的并: 2、差(except) 关系R与关系S的差由属于R而不属于S的所有元组组成。其结果关系仍为n目关系。记作: 下图为关系R与关系S的差: 3、交(intersection) 关系R与关系S的交由既属于R又属于S的元组组成。其结果关系仍为n目关系。记作: 下图为关系R与关系S的交: 4

php 多个数组的笛卡尔积

时间秒杀一切 提交于 2019-11-27 15:36:12
/** * 多个数组的笛卡尔积 * @return array */ function combineDika() { $data = func_get_args(); $data = current($data); $result = array(); $arr1 = array_shift($data); foreach ($arr1 as $key=>$item) { $result[] = array($item); } foreach ($data as $key=>$item) { $result = combineArray($result, $item); } return $result; } /** * 两个数组的笛卡尔积 * @param $arr1 * @param $arr2 * @return array */ function combineArray($arr1, $arr2) { $result = array(); foreach ($arr1 as $item1) { foreach ($arr2 as $item2) { $temp = $item1; $temp[] = $item2; $result[] = $temp; } } return $result; } 来源: https://www.cnblogs.com/ssx314/p