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多表查询-笔记七
Apr 05 MySQL
MySQL 角色(role)功能介绍
Apr 24 MySQL
MySQL 百万级数据的4种查询优化方式
Jun 07 MySQL
MySQL开启事务的方式
Jun 26 MySQL
详细聊聊关于Mysql联合查询的那些事儿
Oct 24 MySQL
MySQL 主从复制数据不一致的解决方法
Mar 18 MySQL
深入理解mysql事务隔离级别和存储引擎
Apr 12 MySQL
MySQL创建管理子分区
Apr 13 MySQL
MySQL 数据库 增删查改、克隆、外键 等操作
May 11 MySQL
MySQL外键约束(Foreign Key)案例详解
Jun 28 MySQL
MySQL事务的隔离级别详情
Jul 15 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编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
2018/12/06 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
JavaScript入门教程(11) js事件处理
2009/01/31 Javascript
jquery 表格分页等操作实现代码(pagedown,pageup)
2010/04/11 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
js 用CreateElement动态创建标签示例
2013/11/20 Javascript
jquery 鼠标滑动显示详情应用示例
2014/01/24 Javascript
javascript的创建多行字符串的7种方法
2014/04/29 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
React中jquery引用的实现方法
2017/09/12 jQuery
微信小程序 数据绑定及运算的简单实例
2017/09/20 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
[03:10]2014DOTA2 TI马来劲旅Titan首战告捷目标只是8强
2014/07/10 DOTA
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
python保存字符串到文件的方法
2015/07/01 Python
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
2018/12/05 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
Python os模块常用方法和属性总结
2020/02/20 Python
Python3使用 GitLab API 进行批量合并分支
2020/10/15 Python
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
护理学毕业生自荐信
2013/10/02 职场文书
税务干部个人整改措施思想汇报
2014/10/10 职场文书
图文详解matlab原始处理图像几何变换
2021/07/09 Python