mysql连接查询中and与where的区别浅析

 更新时间:2021年07月01日 16:11:41   作者:侣行G_X_N  
在使用数据库查询语句时,单表的查询有时候不能满足项目的业务需求,在项目开发过程中,有很多需求都是要涉及到多表的连接查询,这篇文章主要给大家介绍了关于mysql连接查询中and与where区别的相关资料,需要的朋友可以参考下

1. 建表

CREATE TABLE `student`  (
  `id` int(11) NOT NULL,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `age` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;


INSERT INTO `student` VALUES (1, '张三', 12);
INSERT INTO `student` VALUES (2, '李四', 12);
INSERT INTO `student` VALUES (3, '王五', 12);
INSERT INTO `student` VALUES (4, '赵六', 12);
INSERT INTO `student` VALUES (5, '孙七', 12);
INSERT INTO `student` VALUES (6, '王八', 12);
CREATE TABLE `grade`  (
  `id` int(11) NOT NULL,
  `sid` int(11) NULL DEFAULT NULL,
  `grade` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `grade` VALUES (1, 1, 100);
INSERT INTO `grade` VALUES (2, 2, 80);
INSERT INTO `grade` VALUES (3, 3, 99);
INSERT INTO `grade` VALUES (4, 4, 66);

2. inner join-内连接

内连接中and和where没有区别,都是取连接后的结果进行条件筛选。

2.1 不加条件

2.2 and 条件

2.3 where 条件

3. left join - 左外连接

3.1 不加条件

3.2 and 条件

left join中以左表全匹配进行连接,之后使用and进行筛选;不符合条件的左表数据保留,右表数据为null。

3.3 where 条件

在left join 中以左表全匹配进行连接,之后以where进行筛选;只筛选符合条件的数据。

4. right join

同3中left join,只是基表相反。

5. 总结

  • 所有连接,使用where是对连接后符合条件的数据行进行再次的条件筛选,只保留符合条件的数据行;
  • left join连接时,使用and以左表为主,左表数据全部保留,不符合条件的数据行右表数据为null;
  • right join连接时,使用and以右表为主,右表数据全部保留,不符合条件的数据行左表数据为null;

到此这篇关于mysql连接查询中and与where区别的文章就介绍到这了,更多相关mysql连接查询and与where内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL中时间函数操作大全

    MySQL中时间函数操作大全

    在使用SQL语言进行数据查询和数据分析中,常常需要借助日期时间函数来计算相关的指标或生成日期辅助列,下面这篇文章主要给大家介绍了关于MySQL中时间函数操作的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • mysql sql99语法 内连接非等值连接详解

    mysql sql99语法 内连接非等值连接详解

    在本篇文章里小编给大家整理的是一篇关于mysql sql99语法 内连接非等值连接的相关知识点文章,有需要的朋友们可以学习下。
    2019-09-09
  • MySQL主从同步延迟原因与解决方案

    MySQL主从同步延迟原因与解决方案

    本文主要介绍了MySQL主从同步延迟原因与解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • MySQL多表之间字段的匹配实现代码

    MySQL多表之间字段的匹配实现代码

    本文主要介绍下MySQL多表之间字段的匹配;如tag表中name匹配info中的name,接下来详细介绍下,感兴趣的你可以参考下哈
    2013-03-03
  • 详解Mysql导出数据的几种方式

    详解Mysql导出数据的几种方式

    MySQL导出数据的目的有很多种,如数据库备份、表结构导出、表数据导出、分析数据采取等,本文详细的介绍了两种Mysql导出数据的方法,感兴趣的小伙伴可以了解一下
    2018-10-10
  • MySql数据分区操作之新增分区操作

    MySql数据分区操作之新增分区操作

    这篇文章主要介绍了MySql数据分区操作之新增分区操作,本文讲解了测试创建分区表文件、插入测试数据、查询P2中的数据等内容,需要的朋友可以参考下
    2015-03-03
  • mysql字段为null为何不能使用!=

    mysql字段为null为何不能使用!=

    这篇文章主要介绍了mysql字段为null为何不能使用!=问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • MySQL与sqlyog安装教程图文详解

    MySQL与sqlyog安装教程图文详解

    这篇文章主要介绍了MySQL与sqlyog安装教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • mysql如何查询重复数据并删除

    mysql如何查询重复数据并删除

    这篇文章主要介绍了mysql如何查询重复数据并删除问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • MySQL用命令行运行sql文件的详细图文教程

    MySQL用命令行运行sql文件的详细图文教程

    最近重新踩了一下mysql 这边的坑,记录一下自己忽略的地方,下面这篇文章主要给大家介绍了关于MySQL用命令行运行sql文件的详细图文教程,文中通过实例代码的非常详细,需要的朋友可以参考下
    2023-01-01

最新评论