网络知识 娱乐 【MySQL入门】第四话 · 和kiko一起探索MySQL中的运算符

【MySQL入门】第四话 · 和kiko一起探索MySQL中的运算符

🍺写在前面


不得不说,真的真的太热了!今天下午出去送个东西,结果热的满头大汗,太阳光照在身上,感觉就像用几千面镜子对着我,聚集在一点,照得我略有迷茫和恍惚。这种热浪与烦躁在安静的空气中指数级地糅合增长。这时,我的脑海里只有一个念头,那就是,赶紧更文!不能再一拖再拖了了了!

于是今天将会带来两更,这一话的内容主要是介绍MySQL中常用的一些运算符,这些运算符在之后的各话中都会应用到,所以大家可以好好收藏住,细细品味一番啦!


往期系统化讲解:

【MySQL入门】第一话 · 初入“数据库”大陆https://kikoking.blog.csdn.net/article/details/125594651

【MySQL入门】第二话 · 数据库与数据表的基本操作https://kikoking.blog.csdn.net/article/details/125106100

【MySQL入门】第三话 · MySQL中常见的数据类型https://kikoking.blog.csdn.net/article/details/125401775

目录

🍺写在前面

🍺知识点6:MySQL中的运算符

🍯5.1 数值与字符比较运算符

🍯5.2 逻辑比较运算符

🍯5.3 范围内比较运算符

🍯5.4 匹配空、非空运算符

🍯5.5 模糊比较运算符

🍺知识点6:MySQL中的运算符


在正式讲解运算符之前,我们先创建一个名为hero的表格,在这个表格中我们插入一些游戏数据,其中创建表格时我们用到了一些语句和数据类型,例如int、tinyint、enum等都在上一章有所提及,如果各位有遗忘的,赶紧去复习一下哦!
【MySQL入门】第三话 · MySQL中常见的数据类型https://blog.csdn.net/qq_54151955/article/details/125401775?spm=1001.2014.3001.5501

#创建一个hero数据表

USE kiko_1;

CREATE TABLE hero(
id int,
name char(20),
attack int unsigned,
defense tinyint unsigned,
sex enum("男","女"),
country varchar(20)
)CHARACTER SET utf8;

INSERT INTO hero VALUES
(1,'诸葛亮',120,20,'男','蜀国'),
(2,'司马懿',119,25,'男','魏国'),
(3,'关羽',188,60,'男','蜀国'),
(4,'赵云',200,66,'男','魏国'),
(5,'孙权',110,20,'男','吴国'),
(6,'貂蝉',666,10,'女','魏国'),
(7,null,1000,99,'男','蜀国'),
(8,'',1005,88,'女','蜀国'),
(9,'刘备',146,90,'男','蜀国');

在建立完上面这个表格后,我们就要开始正式学习一些MySQL中的常见运算符啦!

🍯5.1 数值与字符比较运算符


之所以将这两个放在一起是因为一个它们首先长的非常相似,但是数值比较可以进行大小比较,而字符比较只能比较字符是否相同,这两种运算符通常都应用在WHERE条件里,其具体特点如下:

数值比较:  =     !=     >     >=     <     <=
字符比较:  =     !=

为了更清楚地区分这二者,同时巩固练习,我们可以实战操作一下下面两道题:

1、查找攻击力高于150的英雄的名字和攻击值。(数值比较)

在本题中的WHERE条件这里使用自数值比较运算符 >,将attack攻击值与150进行了数字间的比较。

SELECT name,attack FROM hero WHERE attack>150;

2、将赵云的攻击力设置为360,防御力设置为200。(字符比较)

这里涉及到要将表中记录进行修改操作,因此使用UPDATE命令,在WHERE条件中要对英雄进行限定,此时就用到了字符比较运算符。

UPDATE hero SET attack=360,defense=200 WHERE name='赵云';

  ✨✨✨我是分割线✨✨✨

🍯5.2 逻辑比较运算符


逻辑比较运算符通常应用在进行多个条件判断时,起到一个连接或组合限制的作用,通常以下两种:

  • AND:要求两个或多个条件同时成立。
  • OR:要求任意一个条件成立即可。

为了便于理解,同理我们也通过两道例题来进一步理解。

1、查找攻击力高于200的魏国英雄的名字和攻击值。(AND)

这里一共有两处限制条件,第一是攻击力需要高于200,第二是必须是魏国英雄,这两个条件要求同时成立,因此我们使用AND。

SELECT name,attack FROM hero WHERE attack>200 AND country='魏国';

2、查找所有蜀国和魏国的英雄信息。(OR)

值得注意的是,这道题对于计算机而言是一种逻辑或的关系,查找出蜀国的英雄信息OR魏国的英雄信息,因为没有哪个英雄既是蜀国又是魏国的,如果使用AND连接则查找不到任何一个英雄。

SELECT * FROM hero WHERE country='蜀国' OR country='魏国';

 ✨✨✨我是分割线✨✨✨

🍯5.3 范围内比较运算符


范围内比较运算符其实就是将上面两种运算符进行逻辑功能的组合,为了方便实际地编写操作,因此诞生了这么一个运算符,其主要有三种形式,其中各种形式对应的值的类型各不相同,其一般形式如下:

WHERE 字段名 BETWEEN 值1 AND 值2 ;        值为数字
WHERE 字段名 IN (值1、值2、值3、···);      值可以为数字,也可以为字符
WHERE 字段名 NOT IN (值1、值2、值3、···);  值可以为数字,也可以为字符

1、查找攻击力介于100~200之间的蜀国英雄信息。(BETWEEN)

这里的限制条件是100~200,这是一段数值范围,因此可以使用BETWEEN来进行限制,同样地,也可以通过数值比较运算符+逻辑比较运算符实现。

解法1:使用范围内比较运算符
SELECT * FROM hero WHERE (attack BETWEEN 100 AND 200) AND country="蜀国";

解法2:数值比较运算符+逻辑比较运算符
SELECT * FROM hero WHERE (attack>100) AND (attack<200) AND country='蜀国';

2、查找蜀国和吴国以外的国家的女英雄信息。(NOT IN)

这里是要查找限制条件以外的内容,使用 NOT IN 就非常方便可以进行限制啦。

SELECT * FROM hero WHERE (country NOT IN("蜀国","吴国") )AND sex="女";

3、查找id为1,3,5的蜀国英雄和貂蝉的信息。(IN)

这里给定了具体的三个id条件,要求在给定的这三个范围内进行查看,因此使用 IN 较为合适。还有一点值得注意的是,这里面暗含了一个AND和OR逻辑,id与蜀国英雄是需要同时满足的关系,因此用AND连接;而貂蝉是另一个需要满足的信息,和之前的条件无关,因此用OR。

SELECT * FROM hero WHERE (id IN(1,3,5) AND country="蜀国" ) OR name="貂蝉";

 ✨✨✨我是分割线✨✨✨

🍯5.4 匹配空、非空运算符


匹配空与非空操作并不是通过比较运算符去与空进行比较,而是由专用的匹配运算符操作,其一般形式如下:

WHERE 字段名 IS NULL;        判空操作
WHERE 字段名 IS NOT NULL;    判非空操作

我们需要特别注意的是,NULL代表空值,它只能用 IS IS NOT 去匹配;当我们遇到空字符串 " " 时,我们只能用字符比较运算符去比较匹配。

1、查找姓名为空值的英雄信息。(判空值)

SELECT * FROM hero WHERE name IS NULL;

2、查找姓名为非空值的英雄信息。(判非空值)

SELECT * FROM hero WHERE name IS NOT NULL;

3、查找姓名为 '  ' 的英雄信息。(判空字符串)

SELECT * FROM hero WHERE name=' ';

 ✨✨✨我是分割线✨✨✨

🍯5.5 模糊比较运算符


模糊比较运算符是较为重要的一个运算符,如其名字那样,它可以进行模糊比较,也就是在查询过程中,当你只记得部分信息,或记得有共同一部分内容时,你就可以使用模糊查询,其一般格式如下:

格式: WHERE 字段名 LIKE 表达式

表达式: _ 匹配单个字符; % 匹配0到多个字符

关于上面这个格式和表达式可能大部分人看到会懵逼,同样,我一开始看到也是,但是我们通过几道例题就可以很容易理解,相信我。

1、查找所有名字为三个字的英雄信息。

​​​​SELECT * FROM hero WHERE name LIKE '___' #这边打了三个下划线 _ _ _

我们知道一个 下划线 _ 代表匹配单个字符,由于我们这里并没有指明具体的英雄,只指定了英雄的姓名为3个字,因此采用模糊比较运算符,而为了限定查找范围为3个字的英雄,我们就用三个 下划线_ 来匹配三个字符,最后通过匹配得到了以下两种结果。

2、查找所有名字大于2个字的英雄。

SELECT * FROM hero WHERE name LIKE '__%'; #这边打了两个_,和一个%

我们这里要求查找名字大于2个字符的英雄,由于这里要求的是大于2个字符,因此我们先使用两个 下划线_ ,然后再使用一个 % 。这是因为使用一个% 代表0到多个字符,可以使得该结构查询的名字字符至少为2个,可以大于2个字符。