mysql进阶

 


1 表的设计

 

 

 

 

 一对一

比如一个学生有一个账户,一个账户也只能被一个学生注册

一对多

可以创建两个表,一个学生表一个班级表

 

 

多对多

 

 

1号学生选择语文课程

语文课程可以被1号同学选择

 

2 新增

将一个表的内容复制到另一个表中

 

 在这个语句中会先执行查找,,针对查找的结果都插入B中,需要保证类型的匹配 

AB一个是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

同理 右链接:

 

 

自连接

简单来说就是自己和自己进行笛卡尔积(使用不多,用来应对一些特殊场景)

自连接就是将行和行之间的关系变成列和列的关系

 

子查询就是套娃

 

posted @   possiblely  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示