求平均值 avg()
求和sum()
求最大值max()
求最小值min()
统计有多少条记录count()
分组 group by
条件 having +聚合 count()
左向外联接 left join
右表联接 right join
全部联接 full join
内部链接 inner join
求平均值 avg() :
select max(sage) from tb_stu;
求和sum() :
select sum(sage) from tb_stu;
求最大值max() :
select max(sage) from tb_stu;
求最小值min() :
select min(sage) from tb_stu;
统计有多少条记录count() :
select count(*) from tb_stu;
分组 group by:
select 列名(saddress),列名(ssex),count(*) 人数 from 表名 group by 列名(saddress),列名(ssex);
除了统计函数外,group by 后面的列名跟select后面的列名要保持一致,只可多不可少。
saddress | ssex | 人数 | |
1 | 小白 | 男 | 1 |
2 | 小黑 | 女 | 1 |
3 | 小兰 | 女 | 1 |
4 | 小红 | 女 | 2 |
条件 having +聚合 count():
select saddress,count(*) 人数 from tb_stu where ssex= '女' group by saddress having count(*)>1;
saddress | 人数 | |
1 | 冲冲冲吃 | 2 |
左向外联接 left join:
简称左链接,即以左表为基表,只要是左表里有的数据都会显示,而不管右表是否包含,左联接使用关键字left join进行联接。
select a.sid a.name,b.grade from tb_stu as a left join tb_grade as b a.sid=b.gid;
sid | sname | grade | |
1 | 2 | 李四 | NULL |
2 | 4 | 李阳 | 64 |
3 | 3 | 刘克兰 | 79 |
4 | 5 | 杨晓 | 98 |
5 | 6 | 张可 | 55 |
右向外联接 right join:
简称右联接,即以右表为基表,只要是右表里有的数据都会显示,而不管左表是否包含,右联接使用关键字right join 进行联接,语法与左联接类似。
select a.sid,a.sname,b.grade from tb_stu as a right join tb_grade as b on a.sid=b.gid;
sid | sname | grade | |
1 | NULL | NULL | 88 |
2 | 3 | 刘克兰 | 79 |
3 | 4 | 李阳 | 64 |
4 | 5 | 杨晓 | 98 |
5 | 6 | 张可 | 55 |
完整外联接 full join:
简称全联接,即将左表和右表的所有数据全部显示,全联接使用关键字 full join 进行联接。
select a.sid,a.sname,b.grade from tb_stu as a full join tb_grade as b on a.sid=b.gid;
sid | sname | grade | |
1 | NULL | NULL | 88 |
2 | 2 | 李四 | NULL |
3 | 3 | 李克兰 | 79 |
4 | 4 | 李阳 | 64 |
5 | 5 | 杨晓 | 98 |
6 | 6 | 张可 | 55 |
内部链接 inner join:
简称内联接,最终会显示两个表或多个表中共有的数据(默认),使用关键字 inner join 或直接用 join 进行联接。
select a.sid,a.sname,b.grade from tb_stu as a inner join tb_grade as b on a.sid=b.gid;
sid | sname | grade | |
1 | 3 | 李克兰 | 79 |
2 | 4 | 李阳 | 64 |
3 | 5 | 杨晓 | 98 |
4 | 6 | 张可 | 55 |