MySQL基础学习5

聚合函数


sum求和

sum(字段名) as 别名, 最好起个别名

求和就是求这一系列数据的总和。
例:
查询学号为150101学生的总成绩。
sum求和

avg平均数

avg(字段名) as 别名,

平均数就是求这一系列数据的平均数。
例:
查询学号为150101学生的平均成绩。
avg平均数

max最大值

max(字段名) as 别名,

最大值就是求这一系列数据的最大值。
例:
查询学号为150101学生的单科最高成绩。
max最大值

min最小值

min(字段名) as 别名,

最小值就是求这一系列数据的最小值。
例:
查询学号为150101学生的单科最低成绩。
min最小值

year求年龄

year(now()) - year(字段名),

就是用当前时间减去数据的时间就是年龄。
例:
查询学生的年龄。
year求年龄

count查询数据个数

count(字段名或者*), 

就是查询这系列数据有几个,一般配合分组使用,可以把count里面的字段名改成*,也是一样的。需要加条件,清除多余需要在count里面加。

例:
查询学生有几个是河北保定。
count查询数据个数

group by分组

group by 字段名;

统计什么字段,就需要select哪个字段,和查询函数一起用。
例:
查询学生表各地有多少人。
group by分组

with rollup数据总汇

尾部添加with rollup;

用于总汇数据,看看一共有多少。
例:
查询学生表各地有多少人,并且查看一共有多少学生。
with rollup数据总汇

having分组筛选

group by
	条件
having
	条件表达式;	

用于进行筛选完的条件再进行进一步筛选。
例:
查询学生表各地学生为一人的地方。
having数据筛选

join多表查询

join是对笛卡尔积的结果进行不同的操作


inner join内连接

例如:select * from A,B where A.ID=B.ID;
例如:select * from A inner join B on A.ID = B.ID;
格式:select * from 表名 inner join 另外表名 on 表名.相同的字段名 = 另外表名.相同的字段名,
可以简化成using(相同的字段名)
格式:select * from 表名 inner join 另外表名 using(相同的字段名)

就是对笛卡尔积的结果进行等值处理,就是把没有用的信息排掉,字段名后面可以添加自己命名的名字。
例:
查询每个学生的所在班级。
内连接

[outter] join外连接

外连接分为左外连接与右外连接,一般叫左连接和右连接,就是左右方向不同,一般outter都不写

left [outer] join左连接
select * from 字段名1 left join 字段名 on 字段名1.ID = 字段名2.ID;

左连接为指向左边的数据表,基于左边数据表来进行书写,只要左边有的数据,新生成的临时表里也有什么,如果另外一个表没有与之对应,则为空。
例:
查询所有人的成绩,要求输出无效成绩。
left join左连接

right [outer] join右连接

和左连接一样,详情参考左连接。
嘿嘿

交叉连接(笛卡尔积)
select *
from
    表名,表名....
[where]
    连接方式 and|or 条件

第一个表的第一个数据与第二个表中的每个数据建立联系,第一个表中的第二个数据与第二个表中的数据建立联系,直到第一个表中的所有数据与表二建立完关系就可以了。如果想清除多余数据,就需要使用内连接,或者外连接了。

发布了8 篇原创文章 · 获赞 41 · 访问量 7135

猜你喜欢

转载自blog.csdn.net/lolly1023/article/details/105138674