mysql简单查询

来源:互联网 发布:攻心之知错不能改 编辑:程序博客网 时间:2024/05/08 15:11

创建查询表

create table A(a int);create table B(b int);

插入数据

insert into A values(1);insert into A values(2);insert into B values(3);insert into B values(4);


单表查询

select attr from table_name;
*表示查询全部属性,也可以指定为属性,属性可以多少,但是表内必须包含


多表查询之笛卡尔积


多表进行查询时,进行循环遍历操作,相当于多个for循环组合,每张表就是一个for,最后面的表最外层

这就是笛卡尔积


查表来源


结合上表,不难看出

多表查询时,form后面的表会进行笛卡尔积的组合,返回一张新的临时表,然后才会在临时表中执行前面的查询操作


关联操作:

select * from table_a left(right) join table_b on condition;


为了观察,插入数据

insert into A values(99);insert into B values(99);

笛卡尔积表



左关联


和下面比较一下


可以看到,左关联对于查询表和关联表有如下特点:

查询表:完整显示所有元素,优先显示条件查询元素,其余元素原来顺序不变

关联表:对应查询表,有对应查询元素显示,没有显示NULL


右关联


可以看到,同左关联,但是查询表和关联表依赖性相反


内关联



检查属性特征,满足条件并列显示(并集)


全关联


全部显示对应关系,不对应自动填充NULL


关联操作意义:对笛卡尔积的进一步封装,查询方便但跳过笛卡尔积不易理解


union


union可以将两个查询结果进行整合显示,相当于一个有序集合set

1. 去重:重复结果不显示

2. 顺序:按照从左到右查询结果依次排列


关联查询,可以是笛卡尔积表的过滤操作,筛选实用组合和对比元素,对无谓的组合进行过滤

所有的多表查询都基于笛卡尔积表进行操作


原创粉丝点击