day 35 MySQL数据操作
-
单表操作
- 分组指的是;将所有记录按照某个相同字段进行归类
select 字段名,聚合函数 as 代替名 from 表名 group by 字段名 having 条件; # as 代替名 可写可不写
# 聚合函数 count() # 计数 sum() # 求和 max() # 最大值 min() # 最小值 avg() # 平均值
# 二次筛选 having 条件;
# 执行顺序 where > group py > having
- 升序、降序
select * from 表名 order by 字段名 asc;# 升序 select * from 表名 order by 字段名 desc;# 降序 select * from 表名 order by 字段名1 desc,字段名2 desc;# 先对字段1降序,字段1有重复的则再对字段2进行降序
- 分页
limit 起始行索引,行数;
- 使用顺序
select * from 表名 where 条件 group by 条件 having 条件 order by 条件 limit 条件; where > group py > having > order by > limit # 执行优先级
-
多表操作
-
外键;表和表之间的约束关系
- 减少内存占用空间
- 方便修改,只需修改department表一次
# 一对多 constraint 外键名 foreign key (被约束字段) references 约束表(约束字段) 多 一
# 多对多 constraint 外键名1 foreign key (被约束字段1) references 约束表1(约束字段) constraint 外键名2 foreign key (被约束字段2) references 约束表2(约束字段)
# 一对一 constraint 外键名 foreign key (被约束字段) references 约束表(约束字段) unique(被约束字段) # 不能有重复值
- pass
-
两表联查
- left join
select * from 表1 left join 表2 on 字段1 = 表2.字段2; # 显示表1的全部内容
- right join
select * from 表1 left join 表2 on 字段1 = 表2.字段2; # 显示表2的全部内容
-
-
优先级总结
select * from 表1
left join 表2 on 表1.字段1 = 表2.字段2
left join 表3 on 表1or表2.字段 = 表3.字段3
where 条件 group by 条件 having 条件 order by 条件 limit 条件;