mysql进阶
1 表的设计

一对一
比如一个学生有一个账户,一个账户也只能被一个学生注册
一对多
可以创建两个表,一个学生表一个班级表

多对多

1号学生选择语文课程
语文课程可以被1号同学选择
2 新增
将一个表的内容复制到另一个表中

在这个语句中会先执行查找,,针对查找的结果都插入B中,需要保证类型的匹配
当A和B一个是name,id 一个是id, name时可以通过针对A修改列的顺序来 保证列的顺序能和A对上

3 查询
1 聚合函数
select count(*) from 表名 查询数量
select sum(*) from 表名 查询和
select avg(*) from 表名 查询平均值
select max(*) from 表名 查询最大值
select min(*) from 表名 查询最小值
也可以进行运算 select sum(列名) + sum(列名) from 表名;也可以搭配where 如 select avg(列名) from 表名 where 条件;
2 group by 语句
select 列名 max(列名),min(列名)...from 表名 group by 列名;
group by 可以使用where但是where是在分组之前执行的 比如 要计算2个角色的工资,一共三个人就要先删掉一个人在计算 这时使用where
select 列名 max(列名),min(列名)...from 表名 where 条件 group by 列名;
如果对分组后进行筛选的话需要使用 having 如果要计算平均工资大于10000 的就要先分组计算出来每个角色的平均工资在筛选 使用having
3 多表联合(笛卡尔积表)
select * from 表名,表名; 这个操作直降将两个表联合 需要谨慎使用,如果两个表数据太多容易引起死机
当两个表联合时需要有联合关系
以下是训练代码





注意笛卡尔积相当于一个临时表

同时也可以使用join

这样做能执行但是不推荐

带inner的这种语句叫内连接

举例

外连接
左链接:

左链接就是以左侧表为主,尽量把左侧表的数据都体现出来,不对应的都值为null
同理 右链接:

自连接
简单来说就是自己和自己进行笛卡尔积(使用不多,用来应对一些特殊场景)
自连接就是将行和行之间的关系变成列和列的关系
子查询就是套娃

浙公网安备 33010602011771号