mysql连接查询中and与where的区别浅析

吾爱主题 阅读:130 2024-04-02 08:03:46 评论:0

1. 建表

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 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);
?
1 2 3 4 5 6 7 8 9 10 11 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内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/G_x_n/article/details/118314885

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容