SQL基础5--where 过滤数据3

参考数据表名:person
id  name age
1 atom 111
2 atom2 22
3 atom3 33
4 atom 22

1、IN操作符

如果我们想搜索姓名为atom和atom2的搜索数据应该怎们办呢?

可以用or来搜索:SELECT age,name FROM person WHERE name = "atom" or name = "atom2"

还有一种方法可以使用in来进行筛选:

SELECT age,name FROM person WHERE name IN ("atom","atom2")

搜索年龄和姓名从person中,姓名包含 atom和atom2的数据

 IN的几个优点:

1、在与and和or组合使用IN时,求值顺序更容易理解

2、在性能上IN比or执行的更快

2、NOT操作符

如果我们要搜索姓名不为atom的其他数据,应该怎么办呢?

可以用之前学到的!=或者<>来搜索:SELECT age,name FROM person WHERE  name != "atom"

或 SELECT age,name FROM person WHERE  name <> "atom"

也可以使用NOT操作符来搜索:SELECT age,name FROM person WHERE not name = "atom"

搜索年龄和姓名从person表中,姓名不为atom的数据

3、LIKE操作符

LIKE通常和“%”、“_”(下面4、5会说"%"和"_"的具体用法)等通配符一起使用,主要是要搜索的数据的值只知道部分。比如要搜索atom2,只记着时at开头的,后面的记不清楚了,就要使用的通配符like了

如果要搜索名字结尾时2的用户,应该怎么搜索呢?

这时候就要用到like搭配%去使用了

SELECT age,name FROM person WHERE  name LIKE "%2"

搜索年龄和姓名从person表中,名字结尾为2的数据


4、%通配符

上面简单看了下like的基本使用规则,现在说下%的含义,可以理解为 %代表任意位数的任意字符,比如 "%2" 就表示 前面可以是任意的内容,但是最后一个字必须是2的数据;"a%"表示以a开头,后面是任意内容的数据;还可以"a%2"表示以a开头结尾是2的所有数据;还有就是“%a%2%”就是可以理解为搜索前面为任意内容也可以为空,然后中间有a,再之后有任意内容或者为空,再之后有个2,再之后可以有任何内容或者为空,总结下就是中间有a和2就行的数据

SELECT age,name FROM person WHERE  name LIKE "%a%2%"

搜索年龄和姓名从person表中,姓名中为XaX2X的数据(X表示任意位数的任意数据或者空) 

5、_通配符

如果我们只忘记了行名的第二个字符,前后都记着,又不想要搜索太多没用的内容应该怎么办?

这时候就可以使用通配符 "_",通配符"_"表示只匹配单个任意字符。比如真实名字为atom和attom,但是搜索的时候忘了是atom还是akom了,只确定是aXom(X表示一个字符),这时候用%就不合适了,"a%om"会搜出 atom和attom但是我只想要 atom的相关数据,这时候就要用到"_"了,具体写法 "a_om"这样就只会搜出了atom了

那我要是想搜索 attom呢?  可以那就再加一个 "_"就行了,有几个不确定的就输入几个 "_",具体可输入"a__om"这样就只会搜索出 attom了

看实际表中数据,我要搜索 atom2 ,但是只记着 aXoX2(X表示单个字符),应该怎么办呢?

SELECT age,name FROM person WHERE  name LIKE "a_o_2"

搜索年龄和姓名从person表中,姓名为 aXoX2(X表示单个字符)的数据

那还有个问题"%"可以表示0个字符(空),那"_"呢?可以看下实际搜索结果

SELECT age,name FROM person WHERE  name LIKE "atom_"

搜索结果只搜索出来atom2和atom3并没有搜索到 atom,所有"_"并不能表示为0个字符(空)

可扫描二维码关注公众号:刘阿童木的进化记录     大家一起学习进步

 

Guess you like

Origin blog.csdn.net/weixin_42893232/article/details/120754505