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 重写查询语句的三种策略
May 10 MySQL
MySQL主从搭建(多主一从)的实现思路与步骤
May 13 MySQL
Mysql效率优化定位较低sql的两种方式
May 26 MySQL
MYSQL(电话号码,身份证)数据脱敏的实现
May 28 MySQL
使用ORM新增数据在Mysql中的操作步骤
Jul 26 MySQL
mysql中varchar类型的日期进行比较、排序等操作的实现
Nov 17 MySQL
Mysql存储过程、触发器、事件调度器使用入门指南
Jan 22 MySQL
MySQL中一条update语句是如何执行的
Mar 16 MySQL
MySQL实现配置主从复制项目实践
Mar 31 MySQL
mysql数据库实现设置字段长度
Jun 10 MySQL
MySQL串行化隔离级别(间隙锁实现)
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安全性问题中的:Null 字符问题
2013/06/21 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
JavaScript 新手24条实用建议[TUTS+]
2009/06/21 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
jquery实现下拉框功能效果【实例代码】
2016/05/06 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
微信小程序提取公用函数到util.js及使用方法示例
2019/01/10 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
[38:32]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第二局
2016/02/26 DOTA
Python创建文件和追加文件内容实例
2014/10/21 Python
python模块之re正则表达式详解
2017/02/03 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
2018/07/13 Python
Django REST framework 视图和路由详解
2019/07/19 Python
Python 列表去重去除空字符的例子
2019/07/20 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
英国最大的奢侈品零售网络商城:Flannels
2016/09/16 全球购物
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
中英文自我评价语句
2013/12/20 职场文书
普通简短的个人自我评价
2014/02/15 职场文书
应聘英语教师求职信
2014/04/24 职场文书
实习生个人总结范文
2015/02/28 职场文书
2016高考感言
2015/08/01 职场文书
学生会副主席竞选稿
2015/11/19 职场文书
Mysql - 常用函数 每天积极向上
2021/04/05 MySQL
python 如何获取页面所有a标签下href的值
2021/05/06 Python
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL