当前位置:网站首页>【MySQL入门】第四话 · 和kiko一起探索MySQL中的运算符
【MySQL入门】第四话 · 和kiko一起探索MySQL中的运算符
2022-07-06 09:36:00 【kikokingzz】
写在前面
不得不说,真的真的太热了!今天下午出去送个东西,结果热的满头大汗,太阳光照在身上,感觉就像用几千面镜子对着我,聚集在一点,照得我略有迷茫和恍惚。这种热浪与烦躁在安静的空气中指数级地糅合增长。这时,我的脑海里只有一个念头,那就是,赶紧更文!不能再一拖再拖了了了!
于是今天将会带来两更,这一话的内容主要是介绍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中的运算符
在正式讲解运算符之前,我们先创建一个名为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个字符。
边栏推荐
猜你喜欢
The problem of "syntax error" when uipath executes insert statement is solved
Prototype chain inheritance
【逆向】脱壳后修复IAT并关闭ASLR
Flink parsing (IV): recovery mechanism
[reverse intermediate] eager to try
Interpretation of Flink source code (III): Interpretation of executiongraph source code
Flink parsing (III): memory management
关于Selenium启动Chrome浏览器闪退问题
Flink analysis (II): analysis of backpressure mechanism
ByteDance overseas technical team won the championship again: HD video coding has won the first place in 17 items
随机推荐
Flink源码解读(二):JobGraph源码解读
mysql的合计/统计函数
06个人研发的产品及推广-代码统计工具
华为认证云计算HICA
Some feelings of brushing leetcode 300+ questions
Only learning C can live up to expectations Top1 environment configuration
07个人研发的产品及推广-人力资源信息管理系统
Final review of information and network security (based on the key points given by the teacher)
Flink parsing (VII): time window
C# WinForm中DataGridView单元格显示图片
Connect to LAN MySQL
Flink源码解读(三):ExecutionGraph源码解读
学习投资大师的智慧
02个人研发的产品及推广-短信平台
Only learning C can live up to expectations TOP4 S1E6: data type
Wu Jun's trilogy experience (VII) the essence of Commerce
C version selenium operation chrome full screen mode display (F11)
mysql高级(索引,视图,存储过程,函数,修改密码)
Akamai talking about risk control principles and Solutions
Based on infragistics Document. Excel export table class