MySQL表单的查询及分组聚合整理
1|0单表查询
1|11.表与表关系
1.1校区表 班级表 一对多
校区表 一个校区可以有多个班级 一对多
班级表 一个班级可不可以对应多个校区
校区表 校区id 校区名称 校区城市 校区地址
班级表 班级id 班级名称 开班日期 班主任 校区id
多(foreign key)关联一这张表
班级表创建foreign key关联校区表的校区id字段
1.2学生表 班级表 多对多
站在学生的角度上 一个学生属于多个班级 一对多
站在班级的角度上 一个班级可以有多个学生么 多对一
学生表 学生id 学生姓名 ...
班级表 班级id 班级名称 ...
产生第三张表
一个字段是外键关联另一个表的主键
另一个字段外键关联另一张表的主键
1.3学生表 客户表 一对一
一个客户对应一个学生
学生表gid foreign key 关联客户表id主键
并且gid还要设置为unique
1|22.单表查询
2.1有关查看的语句
2.2查看的基本语法
2.3distinct(去重)
2.4查询能进行四则运算
2.5concat
对字段进行加工
2.6concat_ws
2.7case
2.8where筛选行
select * from 表 where 条件
2.8.1范围查询
①>大于
②<小于
③>=大于等于
④<=小于
⑤=等于
⑥!=或<>不等于
2.8.2模糊查询
①like:
Ⅰ. % 一个百分号代表任意长度的任意字符
Ⅱ. _ 一个下划线代表一个任意字符
②regexp
实际上就是进行正则运算
2.8.3 is与is not
2.8.4逻辑运算
1|33.表的修改
1|44.数据操作补充
2|0数据库中的分组与聚合
2|11.数据库中关键字的执行顺序
①select 想要的列 from 表
②where 先从这张表中查询的行
③group by 分组
④having 对组过滤
⑤order by 排序
⑥limit 取一个区间
2|22.分组(group by)
使用情况:
根据某个重复率比较高的字段进行的,
这个字段有多少种可能就分成多少个组
功能:
①分组
②去重
注:一旦分组了就不能对具体某一条数据进行操作了
数据表:
使用group by 时会出现一些问题:
这里引出group_concat()
2|33.聚合(count,max,min,sum,avg)
聚合:
99.99%的情况都是和分组一起用的
如果没有和分组一起用,默认一整张表是一组
2|44.过滤(having)
2|55.排序(order by)
2|66.限制(limit)
limit的用途:
①显示分页
②取前n名
7.使用python操作数据库
注:你的python中有pymysql模块
3|0多表查询
3|11.连表查询前的序曲
1.1数据准备
1.2笛卡尔积
先计算两张表的笛卡尔积,再根据用户给出的条件进行筛选
因此我们可以使用where来进行筛选:
但是这里也会存在问题,我们这里通过where来进行连表操作,导致where字段被占用了,无法对后续的记录进行筛选.因此这个连表操作是错误的!
3|22.连表操作
概念:原来是两张表,现在拼成一张表,所有的操作都像是操作一张表一样了
2.1内连接
2.2外链接
2.2.1左外连接
2.2.2右外链接
2.2.3全外链接
mysql不支持full join 的写法,但是可通过union来实现全外连接
3|33.子查询
3.1概念
1:子查询是将一个查询语句嵌套在另一个查询语句中。
2:内层查询语句的查询结果,可以为外层查询语句提供查询条件。
3:子查询中可以包含:IN、NOT IN、ANY、ALL、EXISTS 和 NOT EXISTS等关键字
4:还可以包含比较运算符:= 、 !=、> 、<等
3.2实例
in:
exists:
3|44.连表查询与子查询
问题a:
问题b:
总结:
①如果最终需要的结果只出现在一张表中,可以用子查询解决问题
②如果最终需要的结果出现在两个表中,那么最后用的一定是连表查询
3|55.补充select的用法
select还能这么使用:
数据准备:
实例:
__EOF__
本文链接:https://www.cnblogs.com/CoderI/p/12743101.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix