当前位置:网站首页>【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个字符。
边栏推荐
- Only learning C can live up to expectations top3 demo exercise
- mysql的列的数据类型详解
- Final review of information and network security (full version)
- Flink 解析(四):恢复机制
- Junit单元测试
- Garbage first of JVM garbage collector
- 全网最全tcpdump和Wireshark抓包实践
- Only learning C can live up to expectations TOP4 S1E6: data type
- On the clever use of stream and map
- Redis quick start
猜你喜欢
【逆向初级】独树一帜
Flink analysis (I): basic concept analysis
Serial serialold parnew of JVM garbage collector
Akamai 反混淆篇
网络分层概念及基本知识
JVM 垃圾回收器之Serial SerialOld ParNew
Interpretation of Flink source code (III): Interpretation of executiongraph source code
Connect to LAN MySQL
Flink 解析(四):恢复机制
Jetpack compose 1.1 release, based on kotlin's Android UI Toolkit
随机推荐
Prototype chain inheritance
Final review of information and network security (based on the key points given by the teacher)
CTF逆向入门题——掷骰子
复盘网鼎杯Re-Signal Writeup
SQL tuning notes
自动答题 之 Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
自动化运维利器ansible基础
Jetpack compose 1.1 release, based on kotlin's Android UI Toolkit
MySQL报错解决
信息与网络安全期末复习(完整版)
Based on infragistics Document. Excel export table class
EasyRE WriteUp
[ciscn 2021 South China]rsa writeup
沉淀下来的数据库操作类-C#版(SQL Server)
The most complete tcpdump and Wireshark packet capturing practice in the whole network
Only learning C can live up to expectations TOP4 S1E6: data type
mysql的合计/统计函数
轻量级计划服务工具研发与实践
Start job: operation returned an invalid status code 'badrequst' or 'forbidden‘
C#WinForm中的dataGridView滚动条定位