MySQL从删库到跑路(5):in and not

 “哈哈哈哈,看你这几天没来上课,我还以为你去拜什么高人为师了?原来就是这个烂番薯、臭鸟蛋的小卖部大爷学装逼,你逗我玩呢?哈哈哈哈哈”

 “哈哈哈哈,一个老屌丝,一个小屌丝,死一边去吧!”

 望着班长、学习委员、纪检委员离去的背影,李有为握紧拳头的手,微微有些颤抖。

 他很想跳起来给三人几耳屎,可是对方各个都是又高又帅又有钱的人物,装逼实力已经快要到达逼王级别,他这个装逼水平一级的渣渣只能在心中诅咒他们,生娃儿莫得屁眼儿,日*日到钢板。

 大爷反倒波澜不惊、宠辱皆忘,淡然笑道:“”胜败兵家事不期,包羞忍辱是男儿。,当年韩信都受过胯下之辱,你今天这点事儿那就是毛毛雨,那都不叫事儿!我们还是开始今天的学习吧!一个星期后,就是学校一年一度的装逼考试大赛,我保证让你扬眉吐气,一鸣惊人。”

 “真的吗?”李有为的目中突然闪出金光,“我真的可以吗?”

 “请把疑问句变成肯定句,男人要自信!”

 "come baby,让暴风雨来得更猛烈洗吧!"李有为疯狂咆哮着,心中重新燃起了熊熊烈火。

 “开课前先考验一下你的学习水平,现在我这里有一个需求,我要你查询出生地A省A市,B省B市,C省C市,D省D市,E省E市,身高170以上,颜值220以上,情感状态(is_single)是单身的妹子的名字的姓名(name),身高(height)、年龄(age)、体重(weight),出生地(birthpalce),现居地(address)等相关信息。”

 听了大爷的题目,李有为当即会心一笑
在这里插入图片描述
 开机,启动heidisql,编写SQL代码,整个过程行云流水,稳得一批,不到一分钟,优美而整洁的SQL代码便呈现在大爷眼前。

SELECT
	name,
	height,
	age,
	weight,
	looks,
	birthplace
FROM
	human_base_info
WHERE
	(
		birthplace = 'A省A市'
		OR birthplace = 'B省B市'
		OR birthplace = 'C省C市'
		OR birthplace = 'D省D市'
		OR birthplace = 'E省E市'
	)
AND sex = 'F'
AND height >= 170
AND looks >= 220

 看了李有为的SQL代码,大爷的脸上在次流露出无比赞许的神色,但是这种赞美的神色转瞬即逝,大爷突然话锋一转道:“如果我多加几个省市,你是不是一直要or下去呢?有没有一个更简单、有没的方法呢?”

三花聚顶,五气朝元,赤橙红绿青蓝紫七种不同的精光不断从大爷的体内澎涌而出,李有为看着大惊失声,“难道大爷就是站在装逼大陆顶端的那个最强者,遇神阻将神消灭,遇仙拦将仙诛杀,人送外号“逼王之王“的装逼界至尊,逼神阿六敦
在这里插入图片描述
 大爷看着李有为,如是说道。
 “听你大爷给你讲一讲in 和 not 的用法”

IN

IN 操作符用来指定条件范围,范围中的每个条件都可以进行匹配。
条件范围可以看做是一个在用括号"()"包起来的集合,集合里的元素用逗号分隔。
例如这样('A省A市','B省B市','C省C市','D省D市','E省E市')
出生地只要满足集合里的任意一个条件都可以匹配成功。

因此,原来的SQL可以修改成这样

SELECT
	NAME,
	height,
	age,
	weight,
	looks,
	birthplace
FROM
	human_base_info
WHERE
	birthplace IN (
		'A省A市',
		'B省B市',
		'C省C市',
		'D省D市',
		'E省E市'
	)
AND sex = 'F'
AND height >= 170
AND looks >= 220

 李有为一看果然比原来,简单、优雅、明了了许多。这时候大爷突然又把话锋一转,“如果我要看,出生地不是A省A市,B省B市,C省C市,D省D市,E省E市,身高170以上,颜值220以上,情感状态(is_single)是单身的妹子的信息呢。”

 李有为听完后,心中随即涌起一股装逼的渴望,但是他竭力克制住自己的情绪,在大爷面前表现出不卑不亢的样子。
在这里插入图片描述
以前他会这样写

SELECT
	NAME,
	height,
	age,
	weight,
	looks,
	birthplace
FROM
	human_base_info
WHERE
	birthplace != 'A省A市'
AND birthplace != 'B省B市'
AND birthplace != 'C省C市'
AND birthplace != 'D省D市'
AND birthplace != 'E省E市'
AND sex = 'F'
AND height >= 170
AND looks >= 220

但是听了大爷的话后,他会这样写

SELECT
	NAME,
	height,
	age,
	weight,
	looks,
	birthplace
FROM
	human_base_info
WHERE
	birthplace NOT IN (
		'A省A市',
		'B省B市',
		'C省C市',
		'D省D市',
		'E省E市'
	)
AND sex = 'F'
AND height >= 170
AND looks >= 220

在这里插入图片描述
 大爷看了之后,但当场实名表扬了李有为一番,胳膊和手共同组成了“666”的形状。

 “小伙子不错,竟然能够提前猜出 not的用法。

NOT

not在where语句中只有一个作用,否定它后面所更的任何条件。

IN ('A省A市','B省B市','C省C市','D省D市','E省E市'),表示匹配在集合中的任意一个数据
NOT IN ('A省A市','B省B市','C省C市','D省D市','E省E市'),则表示匹配不是集合中的任意一个数据

 其实李有为只是用了联系的观点看问题,既然 SQL的相关关键词都是英语单词,那么英语单词的意思放在固定的场景中也是特定的咯。比如说IN NOT NULL等等

 今天听了大爷讲的话后,他对空值和非空值的过滤也掌握。最开始大爷讲这里的时候他开了小差,但是经过今天这一堂课后,他已经熟练于心了。
 大爷说,human_base_info表里面有一个人的age是空的,要迅速定位这个人的信息只需要

SELECT * FROM human_base_info WHERE age IS NULL

在这里插入图片描述

选择非空值,也可以用其他方式实现,这里只是举例

SELECT * FROM human_base_info WHERE age IS NOT NULL

 做完这些,这通操作,李有为整个人不禁有些飘飘然了,但是他一想到自己现在是忍辱负重、卧薪藏胆,于是他连忙告诫自己。
在这里插入图片描述
一周后就是学校一年一度的装逼考试大会,被人冷眼嘲讽的李有为在学习了《MySQL从删库到跑路》之后,会在学校里掀起怎样的风云?他的人生又会掀开怎样的篇章?

预知后事如何,请听下回分解!

猜你喜欢

转载自blog.csdn.net/katyusha1/article/details/106209578