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学习总结-基础架构概述
Apr 05 MySQL
正确使用MySQL INSERT INTO语句
May 26 MySQL
带你学习MySQL执行计划
May 31 MySQL
Mysql 如何实现多张无关联表查询数据并分页
Jun 05 MySQL
python中的mysql数据库LIKE操作符详解
Jul 01 MySQL
MySQL的Query Cache图文详解
Jul 01 MySQL
MySQL定时备份数据库(全库备份)的实现
Sep 25 MySQL
mysql5.7的安装及Navicate长久免费使用的实现过程
Nov 17 MySQL
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
Feb 12 MySQL
MySQL 主从复制数据不一致的解决方法
Mar 18 MySQL
mysql使用instr达到in(字符串)的效果
Apr 03 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使用strtotime获取上个月、下个月、本月的日期
2015/12/30 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
Prototype Object对象 学习
2009/07/12 Javascript
javascript 自动填写表单的实现方法
2010/04/09 Javascript
Javascript实现动态菜单添加的实例代码
2013/07/05 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
深入理解JS DOM事件机制
2016/08/06 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
javascript自定义右键菜单插件
2019/12/16 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
Python实现文件按照日期命名的方法
2015/07/09 Python
linux环境下安装python虚拟环境及注意事项
2020/01/07 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
python 读取、写入txt文件的示例
2020/09/27 Python
使用CSS3制作版头动画效果
2020/12/24 HTML / CSS
100%法国制造的游戏和玩具:Les Jouets Français
2021/03/02 全球购物
C和C++经典笔试题附答案解析
2014/08/18 面试题
什么是TCP/IP
2014/07/27 面试题
亿企通软件测试面试题
2012/04/10 面试题
介绍一下如何优化MySql
2016/12/20 面试题
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
2015年班主任个人工作总结
2015/03/31 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python