数据库基础_笔记05
2019年12月17日 星期二 CQCET
复杂数据查询
- 聚合函数
聚合函数包括
SUM(),COUNT(),AVG(),MAX(),MIN()
聚合函数语法:
select 聚合函数(列名) from 表名 [where 条件];
- sum函数
用于计算合
select sum(成绩) 某某班总成绩 from xs_kc;
- count函数
count函数用于统计记录条数
select count(学号) 参考人数 from xs_kc;
加上where条件查询
select count(学号) 班级男生人数 from xsqk where 性别='男';
- AVG函数
avg函数用于统计平均值
select avg(成绩) from xs_kc where 学号=2016110101;
- MAX函数
max函数用于查询最大值
select max(成绩) from xs_kc;
- MIN函数
min函数用于打印最小值
select min(成绩) 最低成绩 from xs_kc;
- 分类汇总
一个聚合函数只能汇总一条记录,分类汇总用于查询多条记录汇总查询。
简单分类查询语法:
select 列名 from 表名 where 条件 group by 列名1[...];
简单的分类查询:
select * from xs_kc group by 课程号;
ps:因为group by 在进行分类时会筛选重复数据。
- 统计功能分类查询
select 课程号, group_concat(学号) 学号
from xs_kc
group by 课程号;
其中group_concat()函数可以显示每条分组中指定的字段值。
- 多字段分类查询
语法:
select 列名 from 表名 where 条件 group by 列名1...;
select 学号,专业名,group_concat(姓名) 姓名,count(姓名) 人数 from xsqk group by 姓名,专业名;
concat()函数记录条数
- HAVING子句分类查询
select 课程号, avg(成绩) 平均成绩, group_concat(学号) 学号, count(学号) 人数 from xs_kc group by 课程号 having avg(成绩) >60;
简单理解having就是where,但是where后不能用聚合函所以采用having。
- 多表查询
在sql注入中会用到内联注入。
内连查询
内连就是将多个共享列值进行比较,把多个表中的满足条件的的连接记录横向连接。内连接分
自连接
等值连接
非等值连接
自连接:
其中 from xsqk x,xsqk z 采用表的别名,就是把xsqk取别名为x,和z,连个表连接的语句是 where x .学号 z.学号
因为是自连接,所以都是xsqk表本身,如果要从另外的表连接,需要一个为主表,一个为从表。
- 等值连接
等职连接就是在where后添加=来使两个表中相同字段的值作为连接。
- 外连查询
通过内连的结果是相关表中的
外连查询会返回操作表中至少一个表的所有记录
外连分
左外连接和右外连接(我觉得都一样)
select xsqk.学号,姓名,课程号,成绩 from xsqk left outer join xs_kc on xsqk.学号=xs_kc.学号;
左外连接
右外连接
select xsqk.学号,姓名,课程号,成绩 from xsqk right outer join xs_kc on xsqk.学号=xs_kc.学号 ;