【mysql学习】6.where高级数据过滤

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 【mysql学习】6.where高级数据过滤,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

       在这篇文章中,我们将学习where的其他用法,各种操作符,并使用where对检索的数据进行过滤,得到我们想要查询的数据。 


目录

准备工作

WHERE高级查询

AND操作

OR操作符

OR和AND混用

IN操作符 

NOT操作符

总结 


准备工作

        我们这次使用的表和上一篇文章中的是一样的,创建表的语句如下:

create table product(id int primary key auto_increment,
		supplier varchar(32),
		name varchar(32) not null,
		price float);
insert into product values(null,'中国','显示屏',800);
insert into product values(null,'美国','芯片',2000);
insert into product values(null,'美国','电池',92);
insert into product values(null,'中国','后盖',60);
insert into product values(null,'中国','PCB',550);
insert into product values(null,'日本','摄像头',285);
insert into product values(null,'新加坡','图像传感器',333);
insert into product values(null,'俄罗斯','马达',160);
insert into product values(null,null,'外壳',60);

        插入数据后查看数据是否添加成功,输入 select * from product; 如果显示如下,那么我们的准备工作就完成了。

【mysql学习】6.where高级数据过滤


WHERE高级查询

        在前面我们已经学习过where语句了,现在我们来对where语句的其他用法学习一下,我们学习where分为2篇文章,这篇文章是where高级。


AND操作

        我们使用and操作符可以对where后面的条件进行连接,and的意思就是的意思,如果where后面有2个条件,那么要这2个条件都满足才行。

        我们使用and操作符来查询供应商是中国且价格大于500的商品

select * from product where supplier = '中国';

【mysql学习】6.where高级数据过滤

         上面语句就是查询供应商是中国的数据,下面我们使用and来显示价格大于200的数据

 select * from product where supplier = '中国' and price > 200;

【mysql学习】6.where高级数据过滤

        注意:and操作符后面没有数量限制,可以使用多个and。 


OR操作符

        OR操作符和AND操作符用法是一样的,只不过or表示的是,如果where后面有2个条件使用or进行连接,那么这2个条件满足一个即可。

        我们使用or操作符来查询供应商是中国或者价格大于1000的数据

select * from product where supplier = '中国' or price > 1000;

【mysql学习】6.where高级数据过滤

        注意:or操作符后面也没有数量限制,可以使用多个or。 


OR和AND混用

        OR和AND可以混用,也就是where后面既可以使用or,也可以使用and,但是他们有一个优先级,如果学过编程语言,应该是知道and是比or优先级高的,这里也一样。

select * from product where supplier = '中国' and price > 200 or id=3;
 select * from product where supplier = '中国' or price > 200 and id=3;

        大家可以想一下上面2条语句分别表示什么意思,下面是查询结果,可以看一下是不是和自己想的一样。

【mysql学习】6.where高级数据过滤

【mysql学习】6.where高级数据过滤

         我们可以看出and的优先级确实是要比or优先级高的,这里我们where后面只有应该and和应该or,如果and和or数量有多个呢?这样就不好理解,所以我们使用 () 来提升优先级,我们把自己想要优先执行的数据使用 () 包起来。

        下面我们就使用 () 让or比and先执行。

 select * from product where (supplier = '中国' or price > 200) and id > 3;

【mysql学习】6.where高级数据过滤

        注意:当我们使用OR和AND的时候,尽量都使用括号来进行明确的执行顺序指定 


IN操作符 

        我们先不说IN操作符怎么用,我们先来使用sql语句查询id=1,id=3,id=5的数据。

select * from product where id = 1 or id = 3 or id = 5;

【mysql学习】6.where高级数据过滤

         我们上面这样写确实实现了功能,但是感不感觉特别麻烦,这时我们对于同时检索多个值时,我们就可以使用IN操作符。

        列名 in(value1,value2,value3,……),这个就是in的用法,表示查询列名满足in里面值的所有数据。我们使用in来实现上面的功能

select * from product where id in(1, 3, 5);

【mysql学习】6.where高级数据过滤

         这样写我们的sql就简介了很多,更清楚,也更直观。我们使用IN还有许多优点,例如:IN比OR执行速度更快,可以包含其他select语句,能够动态建立where子句等(这些我们在后面文章进行讲解)。


NOT操作符

         这个操作符很简单,就是对我们的条件进行取反,下面我们使用not操作符来查询所有供应商不是中国的数据。

 select * from product where not supplier = '中国';

【mysql学习】6.where高级数据过滤

【mysql学习】6.where高级数据过滤

         注意,我们使用not,结果中会自动过滤NULL的数据,我们上面的数据中有一条数据数据的供应商是NULL,这时如果我们使用NOT查询,那么NULL就自动过滤了。


总结 

        我们上面介绍了 ADN,OR,IN,NOT 操作符,是不是感觉很简单?其实这几个并不简单,尤其是当他们混用时,到后面我们对基础操作符进行整合,还有多表联查时难度就体现出来了,也欢迎大家游览我后面的文章。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/140292.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!