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的MVCC多版本并发控制的实现
Apr 14 MySQL
MySQL性能压力基准测试工具sysbench的使用简介
Apr 21 MySQL
MySQL 存储过程的优缺点分析
May 20 MySQL
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
May 29 MySQL
MySQL 数据恢复的多种方法汇总
Jun 21 MySQL
MySQL系列之十五 MySQL常用配置和性能压力测试
Jul 02 MySQL
浅谈MySQL函数
Oct 05 MySQL
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
Mar 22 MySQL
MySQL创建管理LIST分区
Apr 13 MySQL
Mysql排查分析慢sql之explain实战案例
Apr 19 MySQL
MySQL添加索引特点及优化问题
Jul 23 MySQL
MySQL远程无法连接的一些常见原因总结
Sep 23 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 反射机制实现动态代理的代码
2008/10/22 PHP
谈谈新手如何学习PHP 默默经典版本
2009/08/04 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
php实现的Timer页面运行时间监测类
2014/09/24 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
PHP类的封装与继承详解
2015/09/29 PHP
php与js的区别是什么
2013/08/05 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
JavaScript实现99乘法表及隔行变色实例代码
2016/02/24 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
Webpack如何引入bootstrap的方法
2017/06/17 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
2017/07/31 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
Python中集合类型(set)学习小结
2015/01/28 Python
Python数据类型详解(一)字符串
2016/05/08 Python
Python命令启动Web服务器实例详解
2017/02/23 Python
简单谈谈python中的语句和语法
2017/08/10 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
python使用pip安装SciPy、SymPy、matplotlib教程
2019/11/20 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
HTML5样式控制示例代码
2013/11/27 HTML / CSS
世界领先的26岁以下学生和青少年旅行预订网站:StudentUniverse
2018/07/01 全球购物
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
50岁生日感言
2014/01/23 职场文书
加拿大留学自荐信
2014/01/28 职场文书
五年级数学教学反思
2014/02/11 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
服务理念标语
2014/06/18 职场文书
融资合作协议书范本
2014/10/17 职场文书
国庆庆典邀请函
2015/02/02 职场文书
王亚平太空授课观后感
2015/06/12 职场文书
商业计划书之服装
2019/09/09 职场文书