MySQL-2

七、查询语句-语法

select [distinct] *|列名

from 表名 … on 连接条件

where 条件

group by 分组字段…

having 条件

order by 排序字段,排序方向

limit 起始位置,长度;

八、单表查询

8.1 from子句

可以是一张表,也可以查多张表

select * from 表名

select * from 表名1,表名2 …

在这里插入图片描述

8.2 where子句

筛选表中满足条件的行。

条件的写法:

(1)使用比较运算符

(2)多条件使用 and 和 or 连接

(3)连续范围:between … and …

(4)不连续范围:in(…)

(5)模糊匹配:like % _

(6)null判断:is null

在这里插入图片描述

8.3 select子句

筛选列。

*代表所有列。

也可以只选择部分列。

select * from 表名;

select 所有列名 from 表名

select 部分部分列名 from 表名

在这里插入图片描述

distinct作用:将结果集中重复的行合并为一条。

在这里插入图片描述

8.4 order by 子句

对查询结果进行排序。

排序有两种方向:默认升序,asc;降序,desc。

语法:order by 字段名 方向

在这里插入图片描述

8.5 limit子句

限制。

从结果集中取出一部分数据。

主要用于分页查询

*每页的起始位置 = (页码-1)每页长度

语法:limit 结果集种的起始位置,长度

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

8.6 group by分组查询

(1)分组查询

前面不分组查询,查询结果是表中的数据。

分组查询查的不是表中数据,而是查询到的是表中数据的统计信息。

一组对应一条统计信息。

分组的目的是为了统计每组的信息!!!!

统计:使用聚合函数。

count(列名)统计每组的数量。

在这里插入图片描述

sum(列名)统计每组该列总和。

avg(列名)统计每组该列的平均值。

max(列名)统计每组该列的最大值。

min(列名)统计每组该列的最小值。
在这里插入图片描述

(2)别名

可以给结果集中的列起别名,也可以给表名起别名。

在这里插入图片描述

在这里插入图片描述

表:是物理硬盘中的一个存储空间。永久存储。

结果集:是物理内存中的一个存储空间。临时存储。

(3)筛选满足条件的组

having 条件;

在这里插入图片描述

where和having区别:

where是分组之前,选择的是表中的行;

having是分组之后,选择满足条件的组。

在这里插入图片描述

在这里插入图片描述

九、查询执行顺序

9.1 书写语法顺序

select [distinct] *|列名

from 表名 …

where 条件

group by 分组字段…

having 条件

order by 排序字段,排序方向

limit 起始位置,长度;

9.2 查询执行顺序

from

where

group by

select 【distinct】

【having】

order by

limit

十、多表查询

10.1 笛卡尔积

查询两张表。

查询结果是:依次拿a表的每一行和b的所有行进行数据的拼接。

假如:a表中有8行,b表中有4行,笛卡尔积是8*4=32行。

在这里插入图片描述

course表的每一行分别与teacher的每一行拼接 3 3 =9*

10.2 多表查询本质

本质:其实就是单表查询,把笛卡尔积作为查询的目标。

查询两张表,和查询笛卡尔积是一样的。

笛卡尔积中的列,是两张表的列的总和。

笛卡尔中的行数,就是两张表的行数相乘。

10.3 多表查询

(1)内连接查询

从笛卡尔积中,查询满足连接条件的数据行。

写法1:

select *

from 表1 , 表2

where 连接条件;

在这里插入图片描述

写法2:

select *

from 表1 inner join 表2 on 连接条件;

在这里插入图片描述

(2)外连接查询

从笛卡尔积中,查询满足连接条件的数据行。

以及,两张表中不满足的行。

外连接分为:outer join

左外连接left [outer] join:从笛卡尔积中,查询满足连接条件的数据行。以及,左表中不满足条件的行。
在这里插入图片描述

右外连接right [outer] join:从笛卡尔积中,查询满足连接条件的数据行。以及,右表中不满足条件的行。

在这里插入图片描述

十一、子查询

一条查询语句作为另一条查询语句的一部分,这样的查询我们称为子查询。

(1)单行单列

子语句查询结果是单行单列的,也就是只有一个值。

我们一般使用比较运算符来连接子语句。

案例:查询‘张三’教的课程

在这里插入图片描述

(2)多行单列

子语句的查询结果是多行单列的。

一般我们使用in来连接子语句。

案例:查询张三和李四教的课程

在这里插入图片描述

(3)单行多列

子语句查询结果是单行多列的。

使用比较运算符来连接子语句。

案例:查询张三的工号和教的课程

在这里插入图片描述

(4)多行多列

子语句查询结果是多行多列的。

使用in连接子语句。

案例:查询张三和李四的工号和教授的课程

在这里插入图片描述

十二、union合并查询

12.1 union用途

将两个查询结果合并到一起。

12.2 语法

select 1 union select 2

合并的前提条件是:

两个查询语句的结果集中,列数相同,对应顺序的列的数据类型相同。

12.3 案例

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值