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中的书写:
等于查询 SELECT * FROM A,B WHERE A.a=B.c;
3.自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列
在θ中AC列会合并成为一列,BD会合成一列
看下在MySQL中的书写:
自然连接查询 SELECT * FROM A NATURAL JOIN B;
3>内连接、外连接
1.内连接 内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值
看下在MySQL中的书写:
内连接查询 SELECT * FROM A INNER JOIN b ON A.a=B.c;;
来源:https://www.cnblogs.com/hhxz/p/9081037.html