您现在的位置是:网站首页> 编程资料编程资料
mysql连接查询中and与where的区别浅析_Mysql_
2023-05-27
408人已围观
简介 mysql连接查询中and与where的区别浅析_Mysql_
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 不加条件

2.2 and 条件

2.3 where 条件

3. left join - 左外连接
3.1 不加条件

3.2 and 条件
left join中以左表全匹配进行连接,之后使用and进行筛选;不符合条件的左表数据保留,右表数据为null。

3.3 where 条件
在left join 中以左表全匹配进行连接,之后以where进行筛选;只筛选符合条件的数据。

4. right join
同3中left join,只是基表相反。
5. 总结
- 所有连接,使用where是对连接后符合条件的数据行进行再次的条件筛选,只保留符合条件的数据行;
- left join连接时,使用and以左表为主,左表数据全部保留,不符合条件的数据行右表数据为null;
- right join连接时,使用and以右表为主,右表数据全部保留,不符合条件的数据行左表数据为null;
到此这篇关于mysql连接查询中and与where区别的文章就介绍到这了,更多相关mysql连接查询and与where内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:
相关内容
- 低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限_Mysql_
- MySQL 8.0 驱动与阿里druid版本兼容问题解决_Mysql_
- MySQL query_cache_type 参数与使用详解_Mysql_
- mysql 数据插入优化方法之concurrent_insert_Mysql_
- MySQL的Query Cache图文详解_Mysql_
- mysql优化之query_cache_limit参数说明_Mysql_
- MySQL中存储时间的最佳实践指南_Mysql_
- MySQL连表查询分组去重的实现示例_Mysql_
- python中的mysql数据库LIKE操作符详解_Mysql_
- 解决Mysql的left join无效及使用的注意事项说明_Mysql_
