网站推广软件预期效果,安卓软件开发用什么语言,西地那非片的功能,wordpress中文问答模块目录
一、什么是笛卡尔积#xff1f;
二、什么是联合查询#xff1f;
三、内连接
3.1 简介
3.2 语法
3.3 更多的表
3.4 操作演示
四、外连接
4.1 简介
4.2 语法
4.3 操作演示
五、自连接
5.1 简介
5.2 自连接非必要不使用
六、子查询(嵌套查询)
6.1 简介
6.…目录
一、什么是笛卡尔积
二、什么是联合查询
三、内连接
3.1 简介
3.2 语法
3.3 更多的表
3.4 操作演示
四、外连接
4.1 简介
4.2 语法
4.3 操作演示
五、自连接
5.1 简介
5.2 自连接非必要不使用
六、子查询(嵌套查询)
6.1 简介
6.2 in 和 exists 关键字
6.3 子查询可能让简单的语句变复杂
七、合并查询
7.1 简介
7.2 合并查询可能让简单的语句变复杂
八、MySQL 中各个关键字的执行顺序 一、什么是笛卡尔积 笛卡尔积Cartesian product是一种数学概念用于描述两个或多个集合之间的组合。它表示为两个或多个集合的乘积其中每个元素都来自不同的集合。 在编程中笛卡尔积通常用于描述两个或多个数据集合之间的组合。 编程中使用笛卡尔积需要注意以下两点
实际开发中使用笛卡尔积需要慎重需要预估笛卡尔积后的结果集的规模避免规模过大。通常表与表之间存在关联关系才可以进行笛卡尔积。没有关联关系的数据得出的笛卡尔积通常也没有意义。 二、什么是联合查询 在MySQL中联合查询是一种查询多个表的多个列的查询通过取笛卡尔积这些表和列被组合成一个结果集。联合查询通常用于查询多个表之间的关联数据。
联合查询的常见方式包括内连接、外连接、自连接、子查询(嵌套查询)、合并查询。 三、内连接
3.1 简介 内连接是查询两个表或多个表之间的关联数据返回两个表之间的交集数据。内连接是默认的连接类型如果不指定连接类型那么查询默认为内连接。 3.2 语法
基本语法select * from 表1 join 表2 on 关联条件;基本语法select * from 表1,表2 where 关联条件;释义 根据关联条件全列查询指定表的笛卡尔积。 以上两种写法效果一致。 可以指定别名。
以上语法只进行了基本的查询后续往往需要根据需要根据需求对表的内容进行精简。
查询和精简步骤
1、进行笛卡尔积 2、指定表之间的关联条件 3、指定结果集的筛选条件4、指定需要打印的列对需要打印的列进行精简或聚合运算 join on 语法 select 需要打印的列名... from 表1 join 表2 on 关联条件 and 结果集的其他筛选条件; where语法 select 需要打印的列名... from 表1,表2 where 关联条件 and 结果集的其他筛选条件;
3.3 更多的表
在超过两个表做笛卡尔积时两种语法分别是怎样添加对应语句的
假设此时有三个表做笛卡尔积 join on 语法 select 需要打印的列名... from 表1 join 表2 on 关联条件 join 表3 on 关联条件 and 结果集的其他筛选条件; where 语法 select 需要打印的列名... from 表1,表2,表3 where 关联条件,关联条件 and 结果集的其他筛选条件; 第一种写法清晰地表达了表之间是什么关联条件而第二种写法则更为简洁但表之间的关联条件却写成一团两种写法各有各的优点。
3.4 操作演示 四、外连接
4.1 简介 外连接也是查询两个表之间的关联数据但有所不同的是内连接查询的是两个表的交集而外连接则会以一侧的表为主显示所有列。 4.2 语法 外连接需要使用 left join 或 right join 子句指定连接方向。使用 left join 表示完全显示左侧表称为左外连接使用 right join 表示完全显示右侧表称为右外连接。 语法 select 需要打印的列名... from 表1 left join 表2 on 关联条件 and 结果集的其他筛选条件; 释义根据关联条件和结果集的其他筛选条件以指定的左侧表为主查询指定表中指定的列数据。
4.3 操作演示 五、自连接
5.1 简介 自连接是指一个表和自己进行笛卡尔积这种查询方式应用场景不多在需要将行关系转化成列关系时可以使用。 语法 select * from 表名 as 别名1,表名 as 别名2;释义 指定一个表和自己进行笛卡尔积并打印结果集。 由于在同一个语句中表名相同因此自连接需要使用别名。
没有使用别名将报错 5.2 自连接非必要不使用
假设有以下场景 从上图可知除了行列关系不同使用其他方法可以和自连接获得一样的数据但是自连接还需要对数据进行笛卡尔积查询开销大。因此自连接的查询方式并不常用。如果出现一定要使用自连接进行查询才能获得正确数据的情况此时则应考虑表的设计是否存在缺陷。 六、子查询(嵌套查询)
6.1 简介 子查询是嵌套在主查询内部的SQL查询它返回一个结果集然后被用作主查询的条件。子查询需要使用where子句并将其放在主查询的括号内。 语法 主查询语句 where 包含(子查询语句)的条件表达式;释义 使用子查询语句返回的结果集作为主查询语句的条件。
6.2 in 和 exists 关键字
子查询语句可以配合 in 和 exists 关键字使用。
关键字释义in / exists包含在(子查询语句返回的结果集中)not in / not exists不包含在(子查询语句返回的结果集中)
6.3 子查询可能让简单的语句变复杂 七、合并查询
7.1 简介 合并查询用于查询多个表的多个列的查询这些表和列将被组合成一个结果集。在前后查询的结果集中列的类型和数量需要一致列名则不需要一致。 合并查询需要使用 union 或 union all 关键字。
关键字说明union取得两个结果集的并集去重union all取得两个结果集的并集不去重
语法查询语句1 union 查询语句2;释义将两个查询的结果集合并去重打印。
7.2 合并查询可能让简单的语句变复杂 八、MySQL 中各个关键字的执行顺序
fromonjoinwheregroup bywithhavingselectdistinctorder bylimit 关键字从左到右优先级依次从高到低。优先级高的关键字先执行。 阅读指针 - 《数据库中的索引是什么》
链接生成中...........