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 14 MySQL
MySQL索引失效的典型案例
Jun 05 MySQL
MySQL系列之三 基础篇
Jul 02 MySQL
为什么MySQL分页用limit会越来越慢
Jul 25 MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 MySQL
简单聊一聊SQL注入及防止SQL注入
Mar 23 MySQL
MySQL插入数据与查询数据
Mar 25 MySQL
Mysql分析设计表主键为何不用uuid
Mar 31 MySQL
详细聊一聊mysql的树形结构存储以及查询
Apr 05 MySQL
mysql 子查询的使用
Apr 28 MySQL
MySQL解决Navicat设置默认字符串时的报错问题
Jun 16 MySQL
数据设计之权限的实现
Aug 05 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在XP下IIS和Apache2服务器上的安装
2006/09/05 PHP
分享PHP header函数使用教程
2013/09/05 PHP
PHP中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
php猜单词游戏
2015/09/29 PHP
Yii框架上传图片用法总结
2016/03/28 PHP
阿里云PHP SMS短信服务验证码发送方法
2017/07/11 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
2019/10/17 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
多广告投放代码 推荐
2006/11/13 Javascript
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
2011/09/27 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
js实现屏幕自适应局部代码分享
2015/01/30 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
JS中用三种方式实现导航菜单中的二级下拉菜单
2016/10/31 Javascript
VUE axios上传图片到七牛的实例代码
2017/07/28 Javascript
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法
2018/03/12 Javascript
JS实现简单打字测试
2020/06/24 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
[01:45:05]VGJ.T vs Newbee Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python中%r和%s的详解及区别
2017/03/16 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
使用Python计算玩彩票赢钱概率
2019/06/26 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
服务中心夜班服务员岗位职责
2013/11/27 职场文书
中层干部岗位职责
2013/12/18 职场文书
竞聘演讲稿
2014/04/24 职场文书
大学三年计划书范文
2014/04/30 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
车辆挂靠协议书
2016/03/23 职场文书
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js