当前位置:网站首页>【MySQL功法】第4话 · 和kiko一起探索MySQL中的运算符
【MySQL功法】第4话 · 和kiko一起探索MySQL中的运算符
2022-08-03 11:05:00 【额 无语】
**??**写在前面
**不得不说,真的真的太热了!**今天下午出去送个东西,结果热的满头大汗,太阳光照在身上,感觉就像用几千面镜子对着我,聚集在一点,照得我略有迷茫和恍惚。这种热浪与烦躁在安静的空气中指数级地糅合增长。这时,我的脑海里只有一个念头,那就是,赶紧更文!不能再一拖再拖了了了!
于是今天将会带来两更,这一话的内容主要是介绍MySQL中常用的一些运算符,这些运算符在之后的各话中都会应用到,所以大家可以好好收藏住,细细品味一番啦!
往期系统化讲解:
【MySQL入门】第一话 · 初入“数据库”大陆[这里是图片003]https://kikoking.blog.csdn.net/article/details/125594651
【MySQL入门】第二话 · 数据库与数据表的基本操作[这里是图片004]https://kikoking.blog.csdn.net/article/details/125106100
【MySQL入门】第三话 · MySQL中常见的数据类型[这里是图片005]https://kikoking.blog.csdn.net/article/details/125401775
目录

**??**知识点6:MySQL中的运算符
在正式讲解运算符之前,我们先创建一个名为hero的表格,在这个表格中我们插入一些游戏数据,其中创建表格时我们用到了一些语句和数据类型,例如int、tinyint、enum等都在上一章有所提及,如果各位有遗忘的,赶紧去复习一下哦!
【MySQL入门】第三话 · MySQL中常见的数据类型[这里是图片007]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个字符。
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- Machine Learning (Chapter 1) - Feature Engineering
- 玉溪卷烟厂通过正确选择时序数据库 轻松应对超万亿行数据
- CDH6.3.2开启kerberos认证
- Dry goods!A highly structured and sparse linear transformation called Deformable Butterfly (DeBut)
- 3D激光SLAM:LeGO-LOAM---两步优化的帧间里程计及代码分析
- Win10/11 删除文件资源管理器左侧栏目文件夹
- 【JS 逆向百例】某网站加速乐 Cookie 混淆逆向详解
- 本周四晚19:00知识赋能第4期直播丨OpenHarmony智能家居项目之设备控制实现
- 增加WebView对localStorage的支持
- Basic using MySQL database
猜你喜欢

苏州大学:从PostgreSQL到TDengine

【二分查找详解外加递归写法】附有全部代码

SmobilerService 推送实现

C#/VB.NET 从PDF中提取表格

下午见!2022京东云数据库新品发布会

Machine Learning Overview

程序员架构修炼之道:软件架构基本概念和思维

鸿蒙第三次

Simple implementation of a high-performance clone of Redis using .NET (1)

Cross-chain bridge protocol Nomad suffers hacker attack, losing more than $150 million
随机推荐
numpy
Traceback (most recent call last): File
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之二
袋鼠云思枢:数驹 DTengine,助力企业构建高效的流批一体数据湖计算平台
机器比人更需要通证
成为优秀架构师必备技能:怎样才能画出让所有人赞不绝口的系统架构图?秘诀是什么?快来打开这篇文章看看吧!...
嵌入式软件组件经典架构与存储器分类
[错题]电路维修
微信小程序获取用户手机号码
XDR平台架构与关键技术解析
Who is more popular for hybrid products, depending on technology or market?
C#/VB.NET 从PDF中提取表格
在 Chrome 开发者工具里通过 network 选项模拟网站的离线访问模式
MySQL数据库基本使用
[Star Project] Little Hat Plane Battle (9)
【二分查找详解外加递归写法】附有全部代码
MySQL database combat (1)
For invoice processing DocuWare, cast off the yoke of the paper and data input, automatic processing all the invoice received
干货!一种被称为Deformable Butterfly(DeBut)的高度结构化且稀疏的线性变换
Machine Learning (Chapter 1) - Feature Engineering













