在这篇文章中,我们将学习where的其他用法,各种操作符,并使用where对检索的数据进行过滤,得到我们想要查询的数据。
目录
准备工作
我们这次使用的表和上一篇文章中的是一样的,创建表的语句如下:
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 操作符,是不是感觉很简单?其实这几个并不简单,尤其是当他们混用时,到后面我们对基础操作符进行整合,还有多表联查时难度就体现出来了,也欢迎大家游览我后面的文章。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/140292.html