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 存储过程的优缺点分析
May 20 MySQL
linux下导入、导出mysql数据库命令的实现方法
May 26 MySQL
Mysql中 unique列插入重复值该怎么解决呢
May 26 MySQL
MySQL索引是啥?不懂就问
Jul 21 MySQL
mysql分组后合并显示一个字段的多条数据方式
Jan 22 MySQL
mysql下的max_allowed_packet参数设置详解
Feb 12 MySQL
mysql自增长id用完了该怎么办
Feb 12 MySQL
MySQL慢查询优化解决问题
Mar 17 MySQL
mysql 生成连续日期及变量赋值
Mar 20 MySQL
聊聊mysql都有哪几种分区方式
Apr 13 MySQL
mysql如何查询连续记录
May 11 MySQL
mysql sql常用语句大全
Jun 21 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
刚才在简化php的库,结果发现很多东西
2006/12/31 PHP
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
php遍历文件夹和文件列表示例分享
2014/03/11 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
jQuery动态设置form表单的enctype值(实现代码)
2013/07/04 Javascript
由ReactJS的Hello world说开来
2015/07/02 Javascript
Angularjs的键盘事件的绑定
2017/07/27 Javascript
jQuery中each遍历的三种方法实例分析
2018/09/07 jQuery
js最实用string(字符串)类型的使用及截取与拼接详解
2019/04/26 Javascript
laravel实现中文和英语互相切换的例子
2019/09/30 Javascript
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
vue设置默认首页的操作
2020/08/12 Javascript
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
Python实现时间序列可视化的方法
2019/08/06 Python
利用pyecharts实现地图可视化的例子
2019/08/12 Python
Django实现发送邮件找回密码功能
2019/08/12 Python
python函数不定长参数使用方法解析
2019/12/14 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
python 中 .py文件 转 .pyd文件的操作
2021/03/04 Python
html5文本内容_动力节点Java学院整理
2017/07/11 HTML / CSS
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
Under Armour安德玛荷兰官网:美国高端运动科技品牌
2019/07/10 全球购物
教导处工作制度
2014/01/18 职场文书
高三生物教学反思
2014/01/25 职场文书
入党积极分子评语
2014/05/04 职场文书
职工小家建设活动方案
2014/08/25 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
2015小学教师年度工作总结
2015/05/12 职场文书
八月一日观后感
2015/06/10 职场文书
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python