(篇五)select查询续

目录

🍋聚合查询

🍓count

🍓sum

🍓avg

🍓max

🍓min

🍓结合用

🍋分组查询

🍓分组查询搭配查询条件

🍆使用where条件:

🍆使用having条件:

🍋联合查询(多表查询)

🍓内连接:

🍆实例:

 🍓外连接:

🍆左外连接:

🍆右外链接

🍆总结:


聚合查询

聚合查询是进行行与行之间的运算

其中使用sum,avg,max,min函数时,参数必须是数字,否则结果没意义。 

接下来我们用一张exam_result成绩表来向大家介绍。

count

 

注意的是,如果当id这一列的值有一个为null,此时使用count函数返回的结果不包括这一行。 

可以看到结果仍然为7。。

sum

 

 如果当chinese这一列的值有一个为null,此时使用sum函数返回的结果也不包括这一行

 此时结果仍为524.

avg

 

 同样,当某列的数据为null时,avg函数会跳过这一行的数据

结果仍为221.1429. 

max

min

结合用

当然这些函数可以在一个sql语句中使用

分组查询

我们先创建一个员工表。有id(主键)、name(姓名)、role(职位)、salary(薪水)
 

注意:在使用分组查询时,select 后面指定的列要么是聚合函数,要么是group by 后面指定的                   列, 否则没有意义!!! 

分组查询搭配查询条件

使用where条件:

where 条件是在分组前进行条件筛选

        此时就是在按照职位分组前先将沙悟净的数据筛除后,将剩下的数据进行分组查询进而求出平均薪资。

使用having条件:

having是在分组后进行的条件筛选

此时就是先按照职位进行分组之后,通过having筛除老板这一职位的数据。 

联合查询(多表查询)

        联合查询使用的是笛卡尔积,也就是将多张表进行一个排列组合,得到一张更大的表,行数为多张表的行数之积,列数为多张表的列数之和

        需要注意的是,笛卡尔积也是以一种低效的操作,如果表数据过大,可能导致带宽吃满导致电脑卡死。

内连接:

 首先我们先创建几张表,班级表,学生表,课程表,成绩表

        其中根据我们篇四中讲的实体间关系,我们可以看出在设计表的时候,班级表和学生表之间是一对多的关系。学生表和课程表之间是多对多的关系,所以我们设计了第三张表,(score)成绩表来同步管理我们的学生表和课程表。  

实例:

首先根据我们上面讲的五个步骤来。

然后我们根据这些步骤来写:

 

 最终我们就可以得到结果。

 外连接:

        外连接分为左外连接和右外连接。如果联合查询,左侧的表完全显示我们就说是左外连接;右侧的表完全显示我们就说是右外连接。

左外连接:

 

        我们可以看到,此时使用左外链接和使用内链接所得到的结果都是一样的,但是当我们修改一下成绩表中的数据。

 此时我们再使用外连接。

右外链接

 

 

        跟左外连接一样,当没修改score表中数据时,外连接和内连接的所得到的结果一样 。修改score表中的数据后。

总结:

       当两张表的数据是一一对应的,也就是(第一个表的每个记录在第二个表里都有体现,第二个表的每个记录在第一个表也都有体现) ,此时内连接和外连接的查询结果一样。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值