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 22 MySQL
MySQL如何构建数据表索引
May 13 MySQL
MySQL中distinct与group by之间的性能进行比较
May 26 MySQL
Mysql效率优化定位较低sql的两种方式
May 26 MySQL
MySQL 时间类型的选择
Jun 05 MySQL
MySQL 外键约束和表关系相关总结
Jun 20 MySQL
浅谈MySQL之浅入深出页原理
Jun 23 MySQL
ORM模型框架操作mysql数据库的方法
Jul 25 MySQL
MySQL数据库10秒内插入百万条数据的实现
Nov 01 MySQL
MySql分区类型及创建分区的方法
Apr 13 MySQL
MySQL分区以及建索引的方法总结
Apr 13 MySQL
mysql实现将字符串字段转为数字排序或比大小
Jun 14 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模板引擎技术简单实现
2016/03/15 PHP
PHP实现的浏览器检查类
2016/04/11 PHP
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
JavaScript全局函数使用简单说明
2011/03/11 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
详解ES6中的let命令
2020/04/05 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
jsonp跨域及实现百度首页联想功能的方法
2018/08/30 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
JS中的变量作用域(console版)
2020/07/18 Javascript
10分钟学会js处理json的常用方法
2020/12/06 Javascript
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
Python3实现购物车功能
2018/04/18 Python
python3基于TCP实现CS架构文件传输
2018/07/28 Python
python3 拼接字符串的7种方法
2018/09/12 Python
详解用python写一个抽奖程序
2019/05/10 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
python logging设置level失败的解决方法
2020/02/19 Python
专科毕业生学习生活的自我评价
2013/10/26 职场文书
2014年党课学习材料
2014/05/11 职场文书
大学生应聘求职信
2014/05/26 职场文书
幼儿园大班区域活动总结
2014/07/09 职场文书
课外活动总结
2015/02/04 职场文书
演讲比赛主持词
2015/06/29 职场文书
医学会议开幕词
2016/03/03 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
Golang 使用Map实现去重与set的功能操作
2021/04/29 Golang
海弦WR-800F
2022/04/05 无线电
Docker官方工具docker-registry案例演示
2022/04/13 Servers
Springboot中如何自动转JSON输出
2022/06/16 Java/Android