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
同理 右链接:
自连接
简单来说就是自己和自己进行笛卡尔积(使用不多,用来应对一些特殊场景)
自连接就是将行和行之间的关系变成列和列的关系
子查询就是套娃
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现