MySQL中的分组和多表连接详解

2025-04-30 17:50

本文主要是介绍MySQL中的分组和多表连接详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧...

MySQL中的分组和多表连接

一、MySQL的分组(group by )

单例函数

函数含义
lower将列内容变成小写
upper将列内容变成大写
length()长度
trim去除空格
round()后加正数,是针对小数的四舍五入;后加负数是针对整数的四舍五入
rand()生成一个0-1之间的随机数
concat(a,c)拼接a,c两列中的内容,一列输出
substr(a,1,2)截取a列中字符串中,第一位以及之后共两位的字符
ifnull(A,B)判断是否为空值,如果A是空值,则返回B,如果A不是空值,就返回查到的值

聚合函数

聚合函数:输出列的数量一般变少了,一般配合gruop China编程by 进行使用,一般不允许嵌套使用

函数含义
max()最大值
min()最小值
avg()平均值
sum()求和
count()计数
#  将科目进行分组,查询每个科目的最高值
select c_name,max(grade) from score_one group by c_name;
# 注:where后边不能加聚合函数,但是可以使用单例函数,因此需要使用having来进行数据的过滤
select department,count(department) from student_one group by department  having count(department)>2;
# 隐式分组distinct
# 表达式分组 address
select substr(address,1,3),count(s编程China编程ubstr(address,1,3)) from student_one group by substr(address,1,3);

二、多表连接(表连接会产生大量的数据垃圾)

  • 笛卡尔积连接(交叉连接)cross join:和使用,进行连接没有任何区别。是连接中的默认连接。
  • 内连接:inner join … on 连接条件 过滤条件:如果两个表中有相同的列名,可以使用using(共有的列名)表示判断条件为列名相同的情况下的连接,相同的列名只显示一次, 代替on
  • 简单的多表连接:直接在后边在进行join即可
    • 将子查询的结果作为查询表:将查询出的结果命名为a,再利用a 与其他表进行连接
    • 连续两次使用同一张表:同一张表指定不一样的别名

自连接 :inner join,本表的外键链接本表,两次引用使用不同的别名。

  • 相等连接和不等连接:
    • 相等连接:在on 之后使用等号(=)连接;
    • 不等连接: 使用>、<、 !=进行连接
  • 外连接(左外连接和右外连接):
    • 左外连接:left join &helliwww.chinasem.cnp; on …,必须写连接条件,以join左边的表为主
    • 右外连接:right join … on …,必须写连接条件,以join 右边的表为主
    • 全外连接:使用union 实现左外连接和右外连接的并集,也可使用union all(不会删除重复的值)
  • 自然连接 : natural join
  • 使用自然连接时,两张表中必须有相同的列名
  • 如果找不到相同的列名,自然连接就会变成笛卡尔积连接

到此这篇关于MySQL中的分组和多表连接的文章就介绍到这了,更多相关mysql分组和多表连接内容请搜索China编程(www.cppcns.cChina编程om)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!

这篇关于MySQL中的分组和多表连接详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154442

相关文章

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

SQL Server 中的 WITH (NOLOCK) 示例详解

《SQLServer中的WITH(NOLOCK)示例详解》SQLServer中的WITH(NOLOCK)是一种表提示,等同于READUNCOMMITTED隔离级别,允许查询在不获取共享锁的情... 目录SQL Server 中的 WITH (NOLOCK) 详解一、WITH (NOLOCK) 的本质二、工作

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原