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

       在这篇文章中,我们将学习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; 如果显示如下,那么我们的准备工作就完成了。


WHERE高级查询

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


AND操作

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

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

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

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

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

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


OR操作符

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

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

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

        注意: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条语句分别表示什么意思,下面是查询结果,可以看一下是不是和自己想的一样。

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

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

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

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


IN操作符 

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

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

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

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

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

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


NOT操作符

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

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

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


总结 

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

猜你喜欢

转载自blog.csdn.net/m0_51545690/article/details/123620474