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 11 MySQL
MySQL的join buffer原理
Apr 29 MySQL
MySQL令人大跌眼镜的隐式转换
Aug 23 MySQL
MySQL中的隐藏列的具体查看
Sep 04 MySQL
Mysql binlog日志文件过大的解决
Oct 05 MySQL
MySQL数据库超时设置配置的方法实例
Oct 15 MySQL
SQL优化老出错,那是你没弄明白MySQL解释计划用法
Nov 27 MySQL
MySQL中IO问题的深入分析与优化
Apr 02 MySQL
一文简单了解MySQL前缀索引
Apr 03 MySQL
一文了解MYSQL三大范式和表约束
Apr 03 MySQL
MySQL串行化隔离级别(间隙锁实现)
Jun 16 MySQL
MySQL控制流函数(-if ,elseif,else,case...when)
Jul 07 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 array_search() 函数使用
2010/04/13 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
2013/08/07 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
php使用simplexml_load_file加载XML文件并显示XML的方法
2015/03/19 PHP
屏蔽PHP默认设置中的Notice警告的方法
2016/05/20 PHP
php下载远程大文件(获取远程文件大小)的实例
2017/06/17 PHP
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
实例讲解php实现多线程
2019/01/27 PHP
把textarea中字符串里含有的回车换行替换成<br>的javascript代码
2007/04/20 Javascript
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
Nodejs中自定义事件实例
2014/06/20 NodeJs
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
jQuery插件pagination实现无刷新分页
2016/05/21 Javascript
JS中关于事件处理函数名后面是否带括号的问题
2016/11/16 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
vue导出html、word和pdf的实现代码
2018/07/31 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
JS数组的常用10种方法详解
2020/05/08 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
jquery自定义组件实例详解
2020/12/31 jQuery
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
Python中常用信号signal类型实例
2018/01/25 Python
Python将字符串常量转化为变量方法总结
2019/03/17 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
美国50岁以上单身人士约会平台:SilverSingles
2018/06/29 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
集体婚礼证婚词
2014/01/13 职场文书
《和我们一样享受春天》教学反思
2014/02/07 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
五年级作文之学校的四季
2019/12/05 职场文书
深入讲解数据库中Decimal类型的使用以及实现方法
2022/02/15 MySQL
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers
mysql函数之截取字符串的实现
2022/08/14 MySQL