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


Posted in MySQL onJuly 01, 2021

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 不加条件

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

2.2 and 条件

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

2.3 where 条件

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

3. left join - 左外连接

3.1 不加条件

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

3.2 and 条件

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

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

3.3 where 条件

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

mysql连接查询中and与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 InnoDB存储引擎的内存管理
Apr 08 MySQL
MySQL性能压力基准测试工具sysbench的使用简介
Apr 21 MySQL
详解MySQL事务的隔离级别与MVCC
Apr 22 MySQL
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
Jun 26 MySQL
MySQL系列之六 用户与授权
Jul 02 MySQL
MySQL系列之十二 备份与恢复
Jul 02 MySQL
MySQL实例精讲单行函数以及字符数学日期流程控制
Oct 15 MySQL
MySQL分区表实现按月份归类
Nov 01 MySQL
浅谈MySql整型索引和字符串索引失效或隐式转换问题
Nov 20 MySQL
MySQL学习必备条件查询数据
Mar 25 MySQL
Mysql InnoDB 的内存逻辑架构
May 06 MySQL
MySQL生成千万测试数据以及遇到的问题
Aug 05 MySQL
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
Jul 01 #MySQL
MySQL 8.0 驱动与阿里druid版本兼容问题解决
MySQL query_cache_type 参数与使用详解
Jul 01 #MySQL
mysql 数据插入优化方法之concurrent_insert
Jul 01 #MySQL
MySQL的Query Cache图文详解
MySQL高速缓存启动方法及参数详解(query_cache_size)
Jul 01 #MySQL
mysql优化之query_cache_limit参数说明
Jul 01 #MySQL
You might like
显示程序执行时间php函数代码
2013/08/29 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
php实现根据url自动生成缩略图的方法
2014/09/23 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
使用bootstrap3开发响应式网站
2016/05/12 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
详解JavaScript中typeof与instanceof用法
2018/10/24 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
2019/03/19 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
Python进阶篇之字典操作总结
2016/11/16 Python
Python实现感知机(PLA)算法
2017/12/20 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
Django如何配置mysql数据库
2018/05/04 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
Python文件操作基础流程解析
2020/03/19 Python
python 下载文件的多种方法汇总
2020/11/17 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
2017/07/31 HTML / CSS
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
演讲主持词
2014/03/18 职场文书
企业文化口号
2014/06/12 职场文书
社区党员公开承诺书
2014/08/30 职场文书
2014年生产部工作总结
2014/12/17 职场文书
英文版辞职信
2015/02/28 职场文书
法制工作总结2015
2015/07/23 职场文书
大学生奶茶店创业计划书
2019/06/25 职场文书
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL
使用Redis实现实时排行榜功能
2021/07/02 Redis
Python中如何处理常见报错
2022/01/18 Python