MySQL增删查改、多表查询的操作大全

 更新时间:2025年12月25日 16:56:25   作者:姓蔡小朋友  
本文介绍MySQL增删查改、多表查询的操作大全,文章主要内容涵盖了数据库操作中的增删查改、多表查询、自连接、联合查询和子查询等知识,感兴趣的朋友跟随小编一起看看吧

一、增删查改

1.添加数据

insert into 表名(字段名1,字段名2...) values(值1,值2...);

2.修改数据

update 表名 set 字段名1=值1, 字段名2=值2 where ...;

3.删除数据

delete from 表名 where...

4.查询数据

4.1 条件查询

select [distinct] 字段名1,字段名2 from 表名 where...

4.2 聚合函数

select 聚合函数(字段列表) from 表名

4.3 分组查询

select 字段列表 from  表名 [where 条件] group by 分组字段 [having 分组后过滤条件]

其中having是分组之后进行过滤的,所以相较于where在分组之前进行过滤,having可以对聚合函数过滤。

select gender, avg(age) from emp where age>18 group by gender having avg(age)>20

4.4 排序查询

select 字段列表 from  表名 [where 条件] order by 字段1 排序方式1, 字段2 排序方式2;
  • ASC:升序(默认值)
  • DESC:降序

多字段排序时,先对第一个字段排序,第一个字段相同时再对第二个字段排序。

4.5 分页查询

select 字段列表 from  表名 [where 条件] limit 起始索引, 查询行数;

起始索引从0开始,起始索引=(查询页码-1)×每页的行数
如果查询的是第一页数据,起始索引可以省略,简写为limit 查询行数

二、多表查询

1.笛卡尔积

多表查询时如果没有指定条件那么查询结果就是笛卡尔积。例如A表有2条数据,B表有4条数据,那么笛卡尔积就是2×4=8条数据。

select * from a,b;

2.内连接

内连接查询的是两张表的交集部分。也就是说当表A/表B中的数据在表B/表A中没有匹配项时不会输出。

隐式内连接:select a.name, b.name from a, b where a.b_name=b.name;
显式内连接:select a.name, b.name from a inner join b on a.b_name=b.name;

3.外连接

左外连接查询的是左表所有数据+两张表的交集。右外连接查询的是右表所有数据+两张表的交集。也就是说当表A中的数据在表B中没有匹配项时使用左外连接也会输出,当表B中的数据在表A中没有匹配项时使用右外连接也会输出。

左外连接:select a.name, b.name from a left join b on a.b_name=b.name;
右外连接:select a.name, b.name from a right join b on a.b_name=b.name;

在实际开发中,想要哪张表的所有信息就以该表作为主表。

4.自连接

自连接查询的是同一张表,例如同一张表记录了id和领导id,那么查询所有员工的信息及其领导信息就需要用自连接。自连接可以用内连接也可以用外连接,具体看需求。自连接需要对表起别名,因为需要看成两张表。

select * from emp a, emp b left join on a.manager_id=b.id;

5.联合查询

联合查询可以把多次查询的结果在行上合并起来,形成一个新的结果集。

select * from emp where salary>5000
union all
select * from emp where age>50

union还会将查询结果合并之后去重

6.子查询

6.1 列子查询

子查询返回的是1列n行数据,常用操作符:

  • in:在子查询集合内满足其一
  • not in
  • any: 在子查询集合内满足其一,一般配合>号使用
  • all:子查询集合内满足所有,一般配合>号使用

6.2 行子查询

子查询返回的是1行n列数据,常用操作符:

  • =
  • <>:不等于
  • in:在子查询集合内满足其一
  • not in

6.3 表子查询

子查询返回的是n行n列数据,常用操作符:

  • in:在子查询集合内满足其一

select * from emp where (job, salary) in (子查询select job, salary from …)

到此这篇关于MySQL增删查改、多表查询的操作大全的文章就介绍到这了,更多相关mysql增删查改、多表查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL详细讲解多表关联查询

    MySQL详细讲解多表关联查询

    在数据库的设计中, 我们通常都是会有很多张表 , 通过表与表之间的关系建立我们想要的数据关系, 所以在多张表的前提下, 多表的关联查询就尤为重要
    2022-04-04
  • MySQL中group_concat函数深入理解

    MySQL中group_concat函数深入理解

    本文通过实例介绍了MySQL中的group_concat函数的使用方法,需要的朋友可以适当参考下
    2012-11-11
  • MySQL创建用户以及用户权限详细图文教程

    MySQL创建用户以及用户权限详细图文教程

    在MySQL中可以通过创建用户来管理数据库的访问权限,下面这篇文章主要给大家介绍了关于MySQL创建用户以及用户权限的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-06-06
  • Linux下mysql5.6.33安装配置教程

    Linux下mysql5.6.33安装配置教程

    这篇文章主要为大家详细介绍了Linux下mysql5.6.33安装配置方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • MySQL select count(*)计数很慢优化方案

    MySQL select count(*)计数很慢优化方案

    这篇文章主要介绍了MySQL select count(*)计数很慢优化方案,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Mysql账户管理原理与实现方法详解

    Mysql账户管理原理与实现方法详解

    这篇文章主要介绍了Mysql账户管理原理与实现方法,结合实例形式详细分析了mysql账户管理的原理、操作技巧、相关问题解决方法与注意事项,需要的朋友可以参考下
    2020-01-01
  • 浅析一个MYSQL语法(在查询中使用count)的兼容性问题

    浅析一个MYSQL语法(在查询中使用count)的兼容性问题

    本篇文章是对MYSQL语法(在查询中使用count)的兼容性问题进行了详细的分析介绍,需要的朋友参考下
    2013-07-07
  • 深入了解MySQL ClickHouse中的物化视图功能

    深入了解MySQL ClickHouse中的物化视图功能

    MapReduce是一种用于处理大规模数据集的并行编程模型,其特点高效性和可扩展性,这篇文章主要介绍了MySQL ClickHouse中的物化视图功能,需要详细了解可以参考下文
    2023-05-05
  • MySQL sysdate()函数的具体使用

    MySQL sysdate()函数的具体使用

    本文主要介绍了MySQL sysdate()函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • navicat无法连接mysql的问题及解决方案

    navicat无法连接mysql的问题及解决方案

    文章讲述了如何解决本地IP没有访问远程数据库权限的问题,通过打开管理员窗口,登录MySQL服务器,更新用户权限,刷新权限并检查是否成功来实现
    2025-10-10

最新评论