1.分组查询定义
根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表
2.分组查询语法
Select * from result
select subjectNo,avg(studentResult) from result group by subjectNo
3.分组实战(分组,排序)
select subjectNo,avg(studentResult) from result group by subjectNo
Order avg(studentResult) avg升序 order要在分组之后输入才有用
4.分组实战(多字段分组)
select gradeID,sex,studentNo from student group by gradeID,sex,studentNo
5.分组+having实战(group by+having+order)
核心要点:having是分组之后过滤(筛选)
需求:求result表中每个科目的平均成绩,且成绩大于等于60,小于60就不用显示了
Select subjectNo,avg(studentResult) from result GROUP BY subjectNo
having avg(studentResult)>=60
order by avg(studentResult) desc
6.内连接(inner join)
定义:使用比较运算符根据每个表的通用列中的值匹配两个表中的行
select *from student a
inner JOIN
result b
on a.studentNo=b.studentNo
a表和b表能匹配的显示不能匹配的不显示
7.左外连接:
核心要点:根据左键的记录,在被链接的右表中找出符合条件的记录与之匹配。如过找不到与左表匹配的,用null表示
select a . studentNo , a . studentName , b . studentResult from student a
Left JOIN
Result b
ON a . studentNo =b . studentNo; a是左,b是右 a和b能匹配的显示,a独有的用null表示。b独有的不显示
8.右外连接
select a . studentNo , a . studentName , b . studentResult from student a
Right JOIN
Result b
ON a . studentNo =b . studentNo; a是右,b是左 a和b能匹配的显示,a独有的不显示。b独有的用null表示
二
1.逻辑主外键
把物理主外键删除,达到业务上的主外键的方式
2.物理主外键
特点:删除数据麻烦【必须先删除t-user,t_role, t_permission】
添加数据【先添加 t_permission,t_role,t-user】
三.码表关联(中间表关联)
select a.name '用户名', b.rname '职业', c.pname '权限' from t_user a,t_role b,t_permission c,t_u_r d,t_r_p e
WHERE a.id=d.u_id and b.id=d.r_id and b.id=e.r_id and c.id=e.p_id