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 相关文章推荐
MySQL8.0.24版本Release Note的一些改进点
Apr 22 MySQL
mysql 8.0.24版本安装配置方法图文教程
May 12 MySQL
MySQL 全文索引使用指南
May 25 MySQL
MySQL如何使用使用Xtrabackup进行备份和恢复
Jun 21 MySQL
MySQL 5.7常见数据类型
Jul 15 MySQL
MySQL 四种连接和多表查询详解
Jul 16 MySQL
mysql脏页是什么
Jul 26 MySQL
Mysql案例刨析事务隔离级别
Sep 25 MySQL
MySQL基于索引的压力测试的实现
Nov 07 MySQL
MySQL为数据表建立索引的原则详解
Mar 03 MySQL
MySQL 主从复制数据不一致的解决方法
Mar 18 MySQL
MySQL8.0 Undo Tablespace管理详解
Jun 16 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入门速成教程
2007/03/19 PHP
PHP获取POST数据的几种方法汇总
2015/03/03 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
PHP实现一个限制实例化次数的类示例
2019/09/16 PHP
Laravel6.18.19如何优雅的切换发件账户
2020/06/14 PHP
JavaScript中的其他对象
2008/01/16 Javascript
js 字符串转换成数字的三种方法
2013/03/23 Javascript
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
javascript鼠标滑动评分控件完整实例
2015/05/13 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
简易的JS计算器实现代码
2016/10/18 Javascript
Bootstrap基本组件学习笔记之分页(12)
2016/12/08 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
浅谈Angular4中常用管道
2017/09/27 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
浅析Python中的join()方法的使用
2015/05/19 Python
Python AES加密实例解析
2018/01/18 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
python游戏开发的五个案例分享
2020/03/09 Python
Python sorted对list和dict排序
2020/06/09 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
ShellScript面试题一则-ShellScript编程
2014/06/24 面试题
药学专业大学生自荐信
2013/09/28 职场文书
令人啧啧称赞的经理推荐信
2013/11/07 职场文书
yy结婚证婚词
2014/01/10 职场文书
学生吸烟检讨书
2014/09/14 职场文书
2019年教师节:送给所有老师的祝福语
2019/09/05 职场文书
python脚本框架webpy模板控制结构
2021/11/20 Python